Derzeit online: ca. 69 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


PHP

Aber wie kann ich denn...

... die Variablen übergeben?

Übergabe per Formular

So, wie wir bisher mit Variablen gearbeitet haben, müssen diese von Anfang an festgelegt sein. Es kann jetzt aber auch der Fall sein, dass wir die Variablen erst später festlegen wollen bzw. diese durch eine Benutzereingabe füllen wollen.

Ein Beispiel dazu kannst du dir hier (Popup) anschauen.

Bei diesem Script wird durch ein Formular der Inhalt des Feldes übergeben und auf der darauf folgenden Seite ausgegeben.

Ganz wichtig ist es hierbei, dass die Formularfelder einen eindeutigen Namen bekommen, da dieser Name als Variablenname verwendet wird.

Die erste Seite, die beim Beispiel angezeigt wird sieht so aus (nur das Formular ohne CSS-Anweisungen):
<form action="form2.php" method="post">
<input type="text" size="17" name="Inhalt">
<input type="submit" value="OK">
</form>
Die erste Zeile ruft ein Formular auf, bei dem durch das action festgelegt wird, welche Datei nach dem Absenden aufgerufen werden soll. Du kennst das vielleicht mit cgi-Programmen. Dort steht dann action="sendmail.cgi" oder Ähnliches. Ebenfalls wird hier festgelegt, dass als method post verwendet werden soll.


post contra get

Als Übertragungsmethoden hast du prinzipiell post und get zur Verfügung. Bei PHP werden wir fast immer post verwenden. Der Unterschied besteht darin, dass durch get eine URL aufgerufen wird, an die sämtliche Formulardaten angehängt werden. Nun ist aber die maximale Länge von URLs beschränkt und wenn zuviel Inhalt mitgeschickt werden soll, funktioniert es daher nicht mehr.

So würde in unserem Fall diese URL so aussehen (falls "Claudia" in das Feld eingetragen wurde):

http://www.schattenbaum.net/php/form2.php?Inhalt=Claudia

Überträgt man die Daten jedoch mittels post können beliebig lange Inhalte mit übertragen werden, da diese nicht in eine URL umgewandelt werden, sondern durch Steuerungsanweisungen des Browsers übermittelt werden.

Das Umstellen auf get kann jedoch dann sinnvoll sein, wenn man überprüfen möchte ob und welche Daten übertragen werden.


Durch die folgende Zeile wird ein Text-Input-Feld mit einer Größe von 17 definiert und diesem Feld wird der Name Inhalt zugewiesen. Danach kommt nur Leerzeichen (hervorgerufen durch die Zeilenschaltung) und ein Submitbutton - die Value-Angabe beim Submitbutton ist gleichzeitig seine Beschriftung.

Wenn du das mit den Formularen gerade nicht vestehst, empfehle ich dir, dich mit Formularen in HTML zu beschäftigen.

Aber was steht jetzt in der form2.php, die ja durch unser Formular aufgerufen wird?
Und jetzt kann ich deinen Namen (oder das, was du in das Feld geschrieben hast) anzeigen lassen:
<br /><br />
<?php
echo $_POST["Inhalt"];
?>
<br /><br />
Wie das funktioniert erf&auml;hrst du, wenn du das Fenster wieder schlie&szlig;t.
Du erinnerst dich daran, dass unser Input-Feld den Namen Inhalt hatte? Genau dieses Feld (bzw. der Inhalt des Feldes) wird jetzt ausgegeben. Das "Inhalt" wird zum Namen der Variable und ist dadurch für uns ansprechbar. Eine Sicherheitseinstellung in PHP sorgt zusätzlich dafür, dass wir uns sicher sein können, dass die Variable via post übergeben würde. Dafür reicht es aber nicht, einfach nur den Variablennamen zu schreiben, sondern wir müssen $_POST["Variablenname"]; verwenden. Es ist grundsätzlich sinnvoll, wenn man zusätzlich überprüft, ob der Inhalt der Variable tatsächlich etwas ist, das wir haben wollen (also in unserem Fall ein Name/Text und nicht etwa Code). Das würde jedoch jetzt zu weit gehen, daher arbeiten wir an dieser Stelle ohne weitere Überprüfung. Bezüglich Sicherheitsrisiken bei der Übergabe von Variablen, wirf bitte einen Blick auf die sehr gute Seite von Daniel Fett Wenn man diese Variable öfter in einer Seite verwendet oder einfach der besseren Übersicht wegen kann es auch sinnvoll sein, die Variablen vor dem Einsatz wieder in einen "kurzen Variablennamen" umzuschreiben. Das sieht dann so aus:
$Inhalt = $_POST["Inhalt"];
Wurde die Variable per get übergeben, verwendet man anstatt _POST _GET. Ansonsten funktioniert es genauso.

Verwendest du jedoch bei Feldname (in form1.php) und Variablenname (in form2.php) eine unterschiedliche Schreibweise (z. B. große bzw. kleine Anfangsbuchstaben) so bekommst du einfach nichts angezeigt.

Jedes Feld in deinem Formular ist über den Namen, den du ihm gegeben hast ansprechbar. Du musst allerdings auch hier beachten, dass du keine Zahlen an den Anfang stellen darfst. Der Name "01Absender" ist daher nicht möglich. Du solltest daher darauf achten, dass du keinen Feldnamen doppelt verwendest.

Übergabe per URL

Da du aber nicht immer ein Formularfeld verwenden kannst, wenn du Daten übergeben willst, kannst du dies auch mittels einer Url machen.

Dabei gibst du zunächst ganz normal den Namen der Datei an ...
test.php
... und verbindest dann durch ein Fragezeichen den Namen der 1. Variable ...
test.php?Vorname
... auch hier erfolgt die Zuweisung des Inhaltes durch ein Ist-Gleich ...
test.php?Vorname=Claudia
... Weitere Variablen kannst du mit einem kaufmännischen Und (&) anhängen (dabei brauchst du kein weiteres Fragezeichen) ...
test.php?Vorname=Claudia&Nachname
... und auch dieser Variable wird ein Inhalt zugeordnet ...
test.php?Vorname=Claudia&Nachname=Unkelbach
In der Datei test.php kannst du jetzt durch $_GET["Vorname"] und $_GET["Nachname"] auf die Inhalte (Claudia bzw. Unkelbach) der Variablen zugreifen.

Das sieht dann z. B. so aus (hier sieht man auch die Übergabe von get-Variablen):
<?php
echo "Vorname: ", $_GET["Vorname"];
echo "<br />";
echo "Nachname: ", $_GET["Nachname"];
?>
Na? Noch immer alles klar? Fein, dann können wir ja gleich weitermachen.

Autor: Claudia Unkelbach

=> Weiter
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen