PHP Academy · Lektion

Läsa formulärdata med superglobala variabler

Åtkom formulärfält via arrayerna _GET och _POST.

Lektion 2 av 413 steg

Läsa formulärdata med superglobala variabler är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för PHP Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i PHP Academy innehåller totalt 4 lektioner.

PHP:s superglobala variabler

Superglobala variabler är inbyggda PHP-arrayer som är tillgängliga i alla omfång — ni behöver inte global för att komma åt dem i funktioner.

Superglobala variabler för formulär: $_GET, $_POST, $_FILES, $_REQUEST

Åtkomst till fält i $_POST

Läs formulärvärden från POST med åtkomst via arraynyckel och ett standardvärde:

<?php
// Safe access with null coalescing
$username = $_POST['username'] ?? '';
$email    = $_POST['email']    ?? '';
$age      = (int) ($_POST['age'] ?? 0);

var_dump($username, $email, $age);

Åtkomst till parametrar i $_GET

Läs parametrar från URL:ens frågesträng med $_GET:

<?php
// URL: /products.php?category=electronics&page=2&sort=price

$category = $_GET['category'] ?? 'all';
$page     = max(1, (int) ($_GET['page'] ?? 1));
$sort     = in_array($_GET['sort'] ?? '', ['price', 'name', 'date'])
            ? $_GET['sort']
            : 'name';

echo "Category: $category, Page: $page, Sort: $sort";

Hantera kryssrutor

Ej markerade kryssrutor skickas INTE — kontrollera alltid med isset eller ??:

<?php
// HTML: <input type="checkbox" name="newsletter">

$wantsNewsletter = isset($_POST['newsletter']);
// or:
$wantsNewsletter = ($_POST['newsletter'] ?? null) !== null;

echo $wantsNewsletter ? 'Subscribed' : 'Not subscribed';

Arrayer för flerval och kryssrutor

Använd name-attribut i arrayformat för att samla in flera värden:

<!-- HTML -->
<!-- <input type="checkbox" name="tags[]" value="php"> -->
<!-- <input type="checkbox" name="tags[]" value="mysql"> -->

<?php
$tags = $_POST['tags'] ?? [];

if (!is_array($tags)) $tags = [];

foreach ($tags as $tag) {
    echo htmlspecialchars($tag) . PHP_EOL;
}

$_SERVER-information

$_SERVER tillhandahåller information om servern och begärans miljö:

<?php
echo $_SERVER['REQUEST_METHOD'];   // GET or POST
echo $_SERVER['REQUEST_URI'];       // /page.php?foo=bar
echo $_SERVER['HTTP_HOST'];         // example.com
echo $_SERVER['REMOTE_ADDR'];       // client IP
echo $_SERVER['HTTP_USER_AGENT'];   // browser string

filter_input()

filter_input() läser och sanerar värden från superglobala variabler i ett steg:

<?php
// Retrieve and validate an integer from POST
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
if ($age === false) {
    echo 'Invalid age';
}

// Retrieve and sanitize a string from GET
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
echo $name;

filter_var() för validering

Validera och sanera värden som redan finns i variabler:

<?php
$email = 'user@example.com';
$ip    = '192.168.1.1';
$url   = 'https://example.com';

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));  // string
var_dump(filter_var($ip,    FILTER_VALIDATE_IP));     // string
var_dump(filter_var($url,   FILTER_VALIDATE_URL));    // string

FILTER_SANITIZE kontra FILTER_VALIDATE

Två lägen för filter_var:

  • FILTER_VALIDATE_* — returnerar värdet om det är giltigt, annars false
  • FILTER_SANITIZE_* — tar bort eller kodar farliga tecken och returnerar ett rensat värde

Hantera $_FILES

$_FILES innehåller metadata om uppladdade filer — varje fil har fem nycklar:

<?php
if (isset($_FILES['avatar'])) {
    $file = $_FILES['avatar'];
    
    echo $file['name'];     // original filename: photo.jpg
    echo $file['type'];     // MIME type: image/jpeg
    echo $file['size'];     // bytes: 45231
    echo $file['tmp_name']; // temp path on server
    echo $file['error'];    // 0 = no error
}

Mönster för bearbetning av hela formulär

Ett tydligt mönster för att hantera formulärinsändningar med validering:

<?php
$errors = [];
$name   = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (empty($name)) {
        $errors[] = 'Name is required';
    }
    if (empty($errors)) {
        // process...
        header('Location: /thanks.php');
        exit;
    }
}

Snabbkontroll

Vad skickar en ej markerad kryssruta till PHP-servern?

Sammanfattning: superglobala variabler

Viktiga superglobala variabler för formulär:

  • $_GET — parametrar i URL:en
  • $_POST — begärans brödtext
  • $_FILES — information om uppladdade filer
  • $_SERVER — serverns och begärans miljö
  • Använd ?? för säker åtkomst med standardvärde
  • Använd filter_input() för kombinerad hämtning och validering
Gratis att börja

Lär dig PHP med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
49
Lektioner
195

Vanliga frågor

Är lektionen ”Läsa formulärdata med superglobala variabler” gratis?

Ja – hela texten till ”Läsa formulärdata med superglobala variabler” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i PHP Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Läsa formulärdata med superglobala variabler”?

Åtkom formulärfält via arrayerna _GET och _POST. Ni övar på PHP Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig PHP Academy?

Du behöver inga förkunskaper. Utbildningen i PHP Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Läsa formulärdata med superglobala variabler”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här PHP Academy-lektionen?

Ja. Varje PHP Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. GET kontra POST: när ska de användas
  2. Läsa formulärdata med superglobala variabler
  3. Tekniker för indata-validering
  4. Rensa användarinmatning
← Tillbaka till PHP Academy