| <- Vorlesung 7 | Übungen | Vorlesung 9 -> |
<INPUT NAME="feld0" > <INPUT NAME="feld1" > <INPUT NAME="feld2" > ... <INPUT NAME="feld99" >Nun ist es sehr mühsam, alle Felder einzeln zu behandeln. Will man z.B. einfach den Inhalt aller Eingabefelder ausgeben, so kann man statt der folgenden 100 Befehle
echo "feld0: $feld0 <BR>\n"; echo "feld1: $feld1 <BR>\n"; ... echo "feld99: $feld99 <BR>\n";auch folgendermaßen vorgehen. Wir basteln uns den jeweiligen Variablennamen zusammen:
for ($i=0;$i<100;$i++) {
$v = "feld".$i;
echo "$v: ${$v} <BR>\n";
}
Mit einem $v erhalten wir den Variablennamen, mit
${$v} greifen wir auf den Inhalt der Variablen mit dem Namen
$v zu.
<INPUT TYPE=CHECKBOX NAME="x" VALUE=1 > Option 1 <INPUT TYPE=CHECKBOX NAME="x" VALUE=2 > Option 2 ...Schickt man dieses Formular ab, so hat die PHP-Variable $x nur den Wert der ersten angeklickten Checkbox. Der Trick ist, in HTML die Checkbox zum Beispiel so zu benennen:
<INPUT TYPE=CHECKBOX NAME="x[]" VALUE=1 > Option 1 <INPUT TYPE=CHECKBOX NAME="x[]" VALUE=2 > Option 2 ...Dadurch wird in PHP ein Array mit dem Namen $x existieren. Die Werte können dann so ausgelesen werden:
for ($i=0;$i<sizeof($x);$i++) {
echo "$x[$i] ";
}
Dieses Weiterreichen einer oder mehrerer Variablen ist in PHP 4 sehr benutzerfreundlich realisiert. Normalerweise wird PHP versuchen, Werte einer Variablen per Cookie weiterzugeben. Wir können aber die Weitergabe so organisieren, daß der Wert der Variablen über den URL weitergegeben wird, falls der Betrachter Cookies verbietet.
Das Konzept von PHP 4 ist, eine sogenannte Session (Sitzung) zu definieren. Diese Sitzung kann einen eigenen Namen haben, kann aber auch einen Namen selbst vergeben. Dies funktioniert mit
session_start();oder mit
session_start("testsitzung");
Nun wollen wir die Variable $zaehler über die momentane Datei hinaus verfügbar machen. Dazu muß die Variable in der Session registriert werden:
session_register("zaehler");
Wir beachten, daß zaehler hier ohne Dollar-Zeichen
verwendet wird.
Setzen wir die Variable $zaehler auf einen bestimmten Wert
$zaehler = 5;so können wir diesen Wert in einer anderen Datei abfragen und überschreiben. Dazu melden wir uns in der neuen Datei bei der Session an:
session_start(); echo "$zaehler<br>\n"; $zaehler++;und haben automatisch die Variable $zaehler zur Verfügung, die wir ausgeben und verändern können. Wollen wir die Session beenden, so gibt es den Befehl
session_destroy();Ein Befehl ist oft recht nützlich:
if (!session_is_registered("zaehler")) {
session_register("zaehler");
}
session_is_registered() überprüft, ob die Variable schon registriert
ist.
Es können im übrigen sowohl einzelne Variable, als auch Felder
als Session-Variable übergeben werden.
Eine Variable kann mit session_unregister() wieder aus der Session herausgenommen werden. Zum Beispiel
session_unregister("zaehler");
Wie bereits erwähnt, werden die Daten per Cookie weitergegeben. Hat der Betrachter das Setzen von Cookies verboten, so gibt es immer noch die Möglichkeit, die Daten über den URL weiterzugeben. Dazu muß man bei Verweisen die sogenannte Session-ID weitergeben. Die Vorgehensweise läßt sich leicht durch ein Beispiel veranschaulichen. Wollen wir die Datei x.php aufrufen, in der die Session weiterlaufen soll, so geben wir folgenden Verweis an:
<a href="x.php?<?=SID?>">weiter</a>Damit wird PHP wenn möglich Cookies verwenden, andernfalls den URL. Es gibt noch einige weitere Funktionen, um das Verhalten der Session zu beeinflussen. Dies kann alles im Handbuch nachgelesen werden. Hier nochmal ein komplettes Beispiel, das die Variable $zaehler von der Datei x.php an die Datei y.php - und umgekehrt - weitergibt:
<!-- Datei x.php -->
<?
session_start();
if (!session_is_registered("zaehler"))
session_register("zaehler");
$zaehler++;
?>
<html>
<body>
Der Wert von </tt>zaehler<tt> ist jetzt <? echo $zaehler ?>.
<p>
<a href="y.php?<?=SID?>">weiter</a><p>
</body>
</html>
und
<!-- Datei y.php -->
<?
session_start();
if (!session_is_registered("zaehler"))
session_register("zaehler");
$zaehler++;
?>
<html>
<body>
Der Wert von </tt>zaehler<tt> ist jetzt <? echo $zaehler ?>.
<p>
<a href="x.php?<?=SID?>">zurück</a><p>
</body>
</html>
| <- Vorlesung 7 | Übungen | Vorlesung 9 -> |