PHP Kurs Naechste Lektion

Lektion 03 - Eingaben

URL-Parameter und Formulardaten mit PHP lesen

PHP bekommt Daten von aussen. Bei APIs kommen Daten oft ueber die URL ($_GET) oder ueber den Request-Body ($_POST). Bevor du Daten benutzt, musst du sie pruefen.

1. GET: Daten in der URL

GET eignet sich zum Lesen von Daten. Parameter stehen nach dem Fragezeichen in der URL.

http://localhost/api.php?course=php
<?php
$course = $_GET['course'];

echo 'Gewuenschter Kurs: ' . $course;
?>

Dieser direkte Zugriff ist fuer den Einstieg verstaendlich, aber noch nicht sicher. Besser ist: pruefen, ob der Parameter existiert.

2. GET sicherer lesen

<?php
$course = $_GET['course'] ?? 'all';

if ($course === '') {
    $course = 'all';
}

echo 'Kursfilter: ' . htmlspecialchars($course);
?>

?? nutzt einen Ersatzwert, wenn der Parameter fehlt. htmlspecialchars schuetzt HTML-Ausgaben vor eingeschleustem HTML.

3. POST: Daten aus Formularen

POST nutzt man, wenn Daten erstellt oder veraendert werden. Die Daten stehen nicht sichtbar in der URL.

<form method="post" action="save-user.php">
  <input name="name" placeholder="Name">
  <input name="email" placeholder="E-Mail">
  <button type="submit">Speichern</button>
</form>
<?php
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';

echo 'Name: ' . htmlspecialchars($name);
echo 'E-Mail: ' . htmlspecialchars($email);
?>

4. Validierung

Validierung bedeutet: Pruefen, ob Eingaben erlaubt und sinnvoll sind. Ohne Validierung koennen leere, falsche oder gefaehrliche Werte in dein Programm kommen.

<?php
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');

if ($name === '') {
    echo 'Name darf nicht leer sein.';
    exit;
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo 'E-Mail ist ungueltig.';
    exit;
}

echo 'Daten sind gueltig.';
?>

5. GET oder POST?

MethodeNutzen
GETDaten lesen, filtern, suchen, sortieren.
POSTDaten erstellen, Formulare senden, neue Eintraege speichern.
PUT/PATCHDaten aktualisieren, spaeter in REST-APIs wichtig.
DELETEDaten loeschen, spaeter in REST-APIs wichtig.

6. Uebungen

  1. Erstelle hello.php?name=Mina und gib den Namen aus.
  2. Wenn kein Name uebergeben wird, soll Gast ausgegeben werden.
  3. Erstelle ein Formular mit Name und E-Mail.
  4. Validiere, dass Name nicht leer ist.
  5. Validiere die E-Mail mit filter_var.
  6. Erklaere, wann du GET und wann du POST nutzt.
Weiter zur JSON API