PHP Superglobals, Form ও Session

লেসন ১৪ / ৩৯

Superglobals কী?

Superglobals হলো কিছু predefined array যা সব scope-এ (function, class) automatically available।

  • $_GET — URL query parameters
  • $_POST — Form POST data
  • $_REQUEST — GET + POST + COOKIE
  • $_SERVER — Server info
  • $_SESSION — Session data
  • $_COOKIE — Cookies
  • $_FILES — Uploaded files
  • $_ENV — Environment variables
  • $GLOBALS — সব global variables

Form Handling

<!-- form.html -->
<form action="submit.php" method="POST">
    নাম: <input type="text" name="name">
    বয়স: <input type="number" name="age">
    <button type="submit">পাঠান</button>
</form>

// submit.php
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $name = trim($_POST["name"] ?? "");
    $age = (int)($_POST["age"] ?? 0);

    // Validation
    if (empty($name)) die("নাম দিন");
    if ($age < 1) die("সঠিক বয়স দিন");

    // Sanitize (XSS এড়াতে)
    $name = htmlspecialchars($name, ENT_QUOTES, "UTF-8");

    echo "স্বাগতম, $name (বয়স: $age)";
}

GET Request

// URL: page.php?id=42&name=karim

$id = $_GET["id"] ?? 0;
$name = $_GET["name"] ?? "";

echo "ID: $id, Name: $name";

File Upload

<form action="upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="photo">
    <button type="submit">Upload</button>
</form>

// upload.php
<?php
if (isset($_FILES["photo"])) {
    $file = $_FILES["photo"];

    if ($file["error"] === UPLOAD_ERR_OK) {
        $name = basename($file["name"]);
        $tmp = $file["tmp_name"];
        $size = $file["size"];      // bytes
        $type = $file["type"];

        // Validation
        $allowed = ["image/jpeg", "image/png"];
        if (!in_array($type, $allowed)) die("শুধু jpg/png");
        if ($size > 2*1024*1024) die("2MB এর বেশি নয়");

        // Save
        $target = "uploads/" . uniqid() . "_" . $name;
        if (move_uploaded_file($tmp, $target)) {
            echo "Upload সফল: $target";
        }
    }
}

Session

Session হলো server-side storage — ব্যবহারকারীর ডেটা multiple page-এ বজায় রাখে।

<?php
session_start();   // প্রতি file-এর শুরুতে

// Login পেজ
$_SESSION["user_id"] = 42;
$_SESSION["username"] = "করিম";
$_SESSION["role"] = "admin";

// অন্য পেজে
session_start();
if (isset($_SESSION["user_id"])) {
    echo "স্বাগতম, " . $_SESSION["username"];
} else {
    header("Location: login.php");
    exit;
}

// Logout
session_unset();    // সব variable মুছে
session_destroy();  // session শেষ

Cookie

Cookie হলো client-side storage — browser-এ save থাকে।

// Set (header পাঠানোর আগে)
setcookie("theme", "dark", time() + 86400 * 30, "/");
// name, value, expire, path

// Read
if (isset($_COOKIE["theme"])) {
    echo $_COOKIE["theme"];
}

// Delete
setcookie("theme", "", time() - 3600, "/");

$_SERVER (গুরুত্বপূর্ণ)

$_SERVER["REQUEST_METHOD"]   // "GET", "POST"
$_SERVER["REQUEST_URI"]       // "/page.php?x=1"
$_SERVER["HTTP_HOST"]         // "example.com"
$_SERVER["REMOTE_ADDR"]       // ব্যবহারকারীর IP
$_SERVER["HTTP_USER_AGENT"]   // ব্রাউজার
$_SERVER["HTTP_REFERER"]      // আগের পেজ
$_SERVER["PHP_SELF"]          // বর্তমান script

Header ও Redirect

// Redirect
header("Location: home.php");
exit;

// JSON response
header("Content-Type: application/json");
echo json_encode(["status" => "ok"]);

// HTTP status
http_response_code(404);