PHP-Tutorial: Variablen übergeben

Bisher haben wir immer alle Variablen im Script direkt festgelegt, aber was machen wir, wenn der Benutzer uns die Variablen übergeben soll? Hierfür stellt PHP zwei Möglichkeiten bereit (natürlich gelten beide nicht nur für PHP ;-) ).

GET


GET bedeutet für uns erst einmal die Variablen in der URL zu übergeben, bzw. diese darüber anzunehmen. Diese Methode ist ziemlich simpel, eine Variable wird in der URL mit ihrem Namen (ohne Dollar) einem Istgleich und ihrem Wert definiert, also beispielsweise var=wert. verschiedene Variablen werden durch ein Kaufmannsund getrennt: var1=wert1&var2=wert2. Diese Kette aus Variablen wird nun an die eigentliche URL mit einem Fragezeichen angehängt, also zum Beispiel:
http://www.example.nix/index.php?var1=wert1&var2=wert2
Nun wissen wir wie wir solche Variablen übergeben, und wie können wir sie annehmen? Hierfür steht eine globale Variable (ein assoziatives Array) namens $_GET bereit. In ihr sind die Namen der Variablen als Keys und die Werte als Values gespeichert. Also nehmen wir einmal an wir haben ein Script get.php und rufen dieses mit get.php?var1=wert1&var2=wert2 auf:

1
2
3
<?php
echo "Variable var1 hat den Wert " . $_GET["var1"] . ", var2 hat den Wert " . $_GET["var2"];
?>

Unsere Ausgabe lautet also "Variable var1 hat den Wert wert1, var2 hat den Wert wert2". Nun können wir uns in Nullkommanix ein kleines Beispiel zusammen bauen (get.php):

1
2
3
4
5
<?php
$angekommen = $_GET["getter"];
echo "Es wurde " . $angekommen . " uebergeben!<br/>";
echo "Neuer Versuch: <a href=\"get.php?getter=" . rand (1234, 9999) . "\"> Link </a>";
?>

Wir nehmen die Variable an und schreiben sie in eine eigene Variable ($angenommen). Diese wird zur Überprüfung ausgegeben und wir generieren uns einen neuen Link, über den wir einen neuen Wert übergeben. Hier seht ihr auch gleich mal wie man Zufallswerte erzeugt, die beiden der rand-Funktion übergebenen Parameter sind die von mir kleinste und größte Zahl, ich bekomme dann eine zufällig aus diesem Bereich. Download: postget.bsp.tgz (825,00 B)

POST


Variablen die per POST übertragen werden, sind für den normalen Nutzer nicht sichtbar, sie werden über Steuerungsanweisungen des Browsers (ggf. verschlüsselt) übertragen, eignen sich also gut für Formulardaten oder ähnlichem, denn man möchte das Passwort natürlich ungern in der Adresszeile des Browser wiederfinden ;-)
Per POST ist es im Übrigen auch Möglich beliebig lange Inhalte zu transferieren. Die Variablen können wir dann, ähnlich wie beim GET, über die globale Variable $_POST (ebenfalls assoziatives Array) in Empfang nehmen.
Also dann basteln wir uns mal schnell ein einfaches Beispiel (post.php):

1
2
3
4
5
6
7
8
<?php
$angekommen = $_POST["poster"];
echo "Es wurde " . $angekommen . " uebergeben!<br/>";
echo "<form action=\"post.php\" method=\"POST\">";
echo "Neuer Inhalt: <input type=\"text\" size=\"17\" name=\"poster\"> ";
echo "<input type=\"submit\" value=\"Senden\" />";
echo "</form>";
?>

Wenn wir in dem Formular nun etwas eintragen und auf Senden klicken, wird uns angezeigt was wir eingetragen haben. Download: postget.bsp.tgz (825,00 B)

Damit haben wir nun genug Vorwissen um eine einfache Loginseite zu schreiben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html><head><title>Login-Test</title></head><body>
<?php
if ($_POST["username"] == "ESMZ-dEsiGnZ" && $_POST["passwort"] == "passwort")
{
echo "Hallo ESMZ-dEsiGnZ, du hast dich erfolgreich eingeloggt!<br>";
}
else
{
echo "Du kannst dich nun einloggen:<br/>";
echo "<form action=\"login.php\" method=\"POST\">";
echo "Username: <input type=\"text\" size=\"17\" name=\"username\"><br/>";
echo "Passwort: <input type=\"password\" size=\"17\" name=\"passwort\"><br/>";
echo "<input type=\"submit\" value=\"Login\">";
echo "</form>";
}
?>
</body></html>

Wenn man nun "ESMZ-dEsiGnZ" und "passwort" eingibt ist man eingeloggt! Download: postget.bsp.tgz (825,00 B)

© 2009-2017 by Martin Scharm