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?
6. Uebungen
- Erstelle
hello.php?name=Minaund gib den Namen aus. - Wenn kein Name uebergeben wird, soll
Gastausgegeben werden. - Erstelle ein Formular mit Name und E-Mail.
- Validiere, dass Name nicht leer ist.
- Validiere die E-Mail mit
filter_var. - Erklaere, wann du GET und wann du POST nutzt.