PHP Academy · Lektion

GET vs. POST: Hvornår skal De bruge hvad

Forstå forskellen mellem HTTP GET og POST i PHP.

Lektion 1 af 413 trin

GET vs. POST: Hvornår skal De bruge hvad er en gratis PHP Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i PHP Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. PHP Academy-kurset indeholder 4 lektioner i alt.

HTTP-metoder i PHP-web

Når en browser sender en HTML-formular, bruger den enten HTTP-metoden GET eller POST. PHP opfanger de indsendte data via superglobaler:

  • $_GET — data føjet til URL'en
  • $_POST — data i forespørgslens brødtekst

GET-metoden

GET føjer formulardata til URL'en som parametre i forespørgselsstrengen:

<!-- 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 sender data i HTTP-forespørgslens brødtekst — de er ikke synlige 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'] ?? '';

Hvornår skal du bruge GET

Brug GET, når:

  • forespørgslen er idempotent (uden bivirkninger)
  • data må vises i URL'en — søgeforespørgsler, filtre og sideinddeling
  • du ønsker URL'er, der kan bogmærkes eller deles
  • dataene ikke er følsomme

Hvornår skal du bruge POST

Brug POST, når:

  • forespørgslen ændrer serverens tilstand (opretter, opdaterer eller sletter)
  • dataene er følsomme (adgangskoder eller personlige oplysninger)
  • du sender store mængder data (filer eller lang tekst)
  • du ikke ønsker, at dataene caches af browsere eller proxyer

Længdebegrænsninger for GET

GET-forespørgsler har begrænsninger på URL'ens længde (typisk omkring 2.000 tegn i praksis). POST har ingen praktisk begrænsning ud over serverens konfiguration:

<?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

$_REQUEST-superglobalen

$_REQUEST sammenfletter $_GET, $_POST og $_COOKIE. Det er praktisk, men mindre tydeligt, hvor dataene kommer fra:

<?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 => '',
};

Kontrol af forespørgselsmetode

Kontrollér altid forespørgselsmetoden, før du behandler formulardata:

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

HTTPS og datasikkerhed

Selv med POST er data synlige i klartekst, medmindre du bruger HTTPS. Vigtige sikkerhedsregler:

  • Brug altid HTTPS i produktion
  • Send aldrig adgangskoder via GET
  • POST over HTTP er stadig usikkert — HTTPS krypterer også brødteksten

Omdirigering efter POST (PRG-mønster)

Efter en vellykket POST skal du omdirigere til en GET-forespørgsel for at forhindre dobbelte indsendelser ved opdatering:

<?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-formularer til filupload

Hvis du vil uploade filer, skal formularen bruge enctype="multipart/form-data" sammen 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

Hurtigt tjek

Hvilken HTTP-metode skal du bruge, når du sender en loginformular med brugernavn og adgangskode?

Opsummering: GET og POST

Vigtige forskelle:

  • GET — i URL'en, kan bogmærkes, ingen bivirkninger, begrænset størrelse
  • POST — i brødteksten, følsomme data, ingen URL-begrænsning
  • Brug altid HTTPS til at beskytte både GET- og POST-data
  • Kontrollér $_SERVER['REQUEST_METHOD'], før du behandler data
  • Anvend PRG-mønsteret for at forhindre dobbelte POST-indsendelser
Gratis at komme i gang

Lær PHP med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
49
Lektioner
195

Ofte stillede spørgsmål

Er lektionen “GET vs. POST: Hvornår skal De bruge hvad” gratis?

Ja — hele teksten til “GET vs. POST: Hvornår skal De bruge hvad” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af PHP Academy-kurset, skal du opgradere til CoddyKit PRO. PHP Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “GET vs. POST: Hvornår skal De bruge hvad”?

Forstå forskellen mellem HTTP GET og POST i PHP. Du øver dig i PHP Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på PHP Academy?

Der kræves ingen tidligere erfaring. PHP Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “GET vs. POST: Hvornår skal De bruge hvad”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne PHP Academy-lektion?

Ja. Alle PHP Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. GET vs. POST: Hvornår skal De bruge hvad
  2. Læsning af formulardata med superglobals
  3. Teknikker til inputvalidering
  4. Sanering af brugerinput
← Tilbage til PHP Academy