PHP Get post?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ein einfaches Beispiel: Du hast auf deiner Webseite ein Kontaktformular und ein Besucher der Seite möchte darüber nun seine Daten versenden (E-Mail-Adresse, Kontaktanfrage, u.ä.). Dann brauchen diese Daten einen Platz bei den Daten, welche vom Browser zum Webserver geschickt werden (allgemein spricht man hierbei von einem Request). Ein Ablageort kann entweder die Request URL sein (GET) oder die Daten werden in dem Body-Abschnitt des Request-Dokuments platziert (POST).

Beide Methoden bieten Vor- und Nachteile. Wenn die Daten in der URL stehen, sind sie für den Nutzer sehr leicht einseh- und manipulierbar. Andererseits gibt es Anwendungsfälle wie Such- und Filterseiten, bei denen es praktisch ist, wenn der aktuelle Zustand (Seitenzahl, Suchwort, u.ä.) in der URL steht.

Beispiel-URL:

https://kitchenstuff.com/search.php?query=pot&page=5&color=red&brand=potters+top+pots

Dann kann sich der Nutzer bspw. ein Lesezeichen für diese Suchergebnisseite X mit seinen gewählten Filtereinstellungen Y und Z anlegen.

Sobald der Webserver die Daten empfängt, werden sie ausgewertet und intern von PHP die superglobalen Arrays ($_POST, $_GET, etc.) entsprechend aufgefüllt. Daten aus der URL werden in $_GET geschrieben, Daten aus dem Request Body in $_POST. Du als Entwickler hast es in der Folge einfacher, auf die jeweiligen Daten zuzugreifen.

Um nun noch einmal das konkrete Beispiel mit dem Kontaktformular aufzugreifen. Für die Webseite könntest du folgendes HTML haben:

<!doctype html>
<head>
  <title>Example</title>
  <meta charset="utf-8">
</head>
<body>
  <form action="evaluate.php" method="post">
    <label for="from">From:</label>
    <input id="from" name="from">
    <label for="subject">Subject:</label>
    <input id="subject" name="subject">
    <label for="message">Message:</label>
    <textarea id="message" name="message"></textarea>
    <button>Send</button>
  </form>
</body>

Sobald der Nutzer den Button betätigt, baut der Webbrowser im Hintergrund ein Request-Dokument zusammen. Für die Formulardaten wird ein Querystring gebildet, der aus Schlüsselwertpaaren besteht. Das name-Attribut liefert den Schlüssel, der Feldwert entspricht natürlich dem Wert. So ein Ergebnis könnte folgendermaßen aussehen:

from=max@tester.de&subject=Hello&message=I+am+Max

Einige Zeichen in dieser Zeichenkette werden enkodiert (Leerzeichen werden bspw. gegen ein + ersetzt). Dies beugt dem Verlust von Daten vor.

Der Request wird anschließend an den Webserver geschickt. Sobald er beim Server angekommen ist, wird in Folgeschritten auch das $_POST-Array mit den Daten befüllt. Wie du siehst, würden die Daten hierbei wieder dekodiert werden.

$_POST = array(
  'from' => 'max@tester.de'
  'subject' => 'Hello'
  'message' => 'I am Max'
);

In deinem PHP-Skript kannst du die einzelnen Formularfelder anschließend anfordern und weiterverarbeiten.

$mail = $_POST['from'];
// do something with $mail ...

Es gibt verschiedene definierte Übertragungsarten, z. B. für Rest.

In einer HTTP GET -Anforderung werden Parameter als - Abfragezeichenfolge gesendet: http://example.com/pageParameter = Wert & auch = ein anderer In einer

HTTP POST -Anforderung werden die Parameter nicht zusammen mit der URI gesendet.

GET-Parameter werden in der URL übertragen, POST-Parameter im HTTP Body.

GET-Parameter werden somit vom Browserverlauf erfasst, POST-Parameter hingegen nicht. Ebenfalls lassen sich GET-Parameter für den Nutzer leichter bearbeiten (einfach die URL abändern) und sie lassen sich als Link versenden.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung