PHP Academy · Lektion

GET kontra POST: när ska de användas

Förstå skillnaden mellan HTTP GET och POST i PHP.

Lektion 1 av 413 steg

GET kontra POST: när ska de användas är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 1 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.

HTTP-metoder i PHP för webben

När en webbläsare skickar ett HTML-formulär använder den antingen GET- eller POST-metoden i HTTP. PHP fångar de skickade uppgifterna via superglobala variabler:

  • $_GET — data som läggs till i URL:en
  • $_POST — data i begärans brödtext

GET-metoden

GET lägger till formulärdata som parametrar i URL:ens frågesträng:

<!-- HTML form -->
<form method="GET" action="search.php">
    <input name="query" type="text">
    <button type="submit">Search</button>
</form>

<!-- URL becomes: search.php?query=php+tutorial -->

<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);

POST-metoden

POST skickar data i HTTP-begärans brödtext — den syns inte i URL:en:

<!-- HTML form -->
<form method="POST" action="login.php">
    <input name="email" type="email">
    <input name="password" type="password">
    <button type="submit">Log In</button>
</form>

<?php
$email    = $_POST['email']    ?? '';
$password = $_POST['password'] ?? '';

När GET ska användas

Använd GET när:

  • Begäran är idempotent (saknar sidoeffekter)
  • Data kan visas i URL:en — sökfrågor, filter och sidnumrering
  • Ni vill ha URL:er som kan bokmärkas eller delas
  • Data inte är känsliga

När POST ska användas

Använd POST när:

  • Begäran ändrar serverns tillstånd (skapar, uppdaterar eller tar bort)
  • Data är känsliga (lösenord, personuppgifter)
  • Ni skickar stora mängder data (filer, lång text)
  • Ni inte vill att webbläsare eller proxyservrar cachar data

Längdbegränsningar för GET

GET-begäranden har begränsningar för URL:ens längd (vanligtvis cirka 2 000 tecken i praktiken). POST har ingen praktisk gräns förutom serverkonfigurationen:

<?php
// php.ini settings for POST limits:
// post_max_size = 8M   (total POST body size)
// upload_max_filesize = 2M

// Check current limits at runtime:
echo ini_get('post_max_size');        // 8M
echo ini_get('upload_max_filesize');  // 2M

Superglobalen $_REQUEST

$_REQUEST sammanfogar $_GET, $_POST och $_COOKIE. Det är bekvämt, men gör datakällan mindre tydlig:

<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';

// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
    'GET'  => $_GET['name']  ?? '',
    'POST' => $_POST['name'] ?? '',
    default => '',
};

Kontrollera begärans metod

Kontrollera alltid begärans metod innan formulärdata bearbetas:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (!empty($name)) {
        echo 'Hello, ' . htmlspecialchars($name);
    }
} else {
    // Show empty form
}

HTTPS och datasäkerhet

Även med POST visas data i klartext om ni inte använder HTTPS. Viktiga säkerhetsregler:

  • Använd alltid HTTPS i produktion
  • Skicka aldrig lösenord via GET
  • POST över HTTP är fortfarande osäkert — HTTPS krypterar även brödtexten

Omdirigera efter POST (PRG-mönstret)

Efter en lyckad POST-begäran omdirigerar ni till en GET-begäran för att förhindra dubbla inskickningar vid uppdatering:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process the form...
    $id = saveToDatabase($_POST);
    
    // Post-Redirect-Get (PRG) pattern
    header('Location: /success.php?id=' . $id);
    exit;
}

Multipart-formulär för filuppladdningar

För att ladda upp filer måste formuläret använda enctype="multipart/form-data" tillsammans med POST:

<!-- Required for file uploads -->
<form method="POST" action="upload.php"
      enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button type="submit">Upload</button>
</form>

<?php
$file = $_FILES['avatar'];
echo $file['name'];  // original filename

Snabbkontroll

Vilken HTTP-metod bör ni använda när ni skickar in ett inloggningsformulär med användarnamn och lösenord?

Sammanfattning: GET kontra POST

Viktiga skillnader:

  • GET — i URL:en, kan bokmärkas, inga sidoeffekter, begränsad storlek
  • POST — i brödtexten, känsliga data, ingen URL-begränsning
  • Använd alltid HTTPS för att skydda både GET- och POST-data
  • Kontrollera $_SERVER['REQUEST_METHOD'] innan bearbetning
  • Använd PRG-mönstret för att förhindra dubbla POST-inskickningar
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 ”GET kontra POST: när ska de användas” gratis?

Ja – hela texten till ”GET kontra POST: när ska de användas” 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 ”GET kontra POST: när ska de användas”?

Förstå skillnaden mellan HTTP GET och POST i PHP. 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 1 av 4.

Hur lång tid tar lektionen ”GET kontra POST: när ska de användas”?

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