Variablen ausserhalb von PHP

HTML-Formulare (GET and POST)

Sobald ein Formular an ein PHP-Skript übergeben wird, wird jede Variable dieses Formulars dem Skript automatisch verfügbar gemacht. Dafür sorgt PHP. Ein Beispiel:

Beispiel 7-1. Einfache Formular-Variablen


<form action="foo.php3" method="post">
    Name: <input type="text" name="name"><br>
    <input type="submit">
</form>
     

Bei der Formular-Übergabe (hier per POST) erzeugt PHP die Variable $name, die genau das enthält, was sie in das Name:-Feld des Formulars eingegeben haben.

Im Zusammenhang mit Formular-Variablen versteht PHP auch Arrays, aber nur eindimensionale. Deshalb müssen sie die betreffenden Variablen vorher gruppieren oder das folgende Beispiel auf Mehrfach-Auswahl-Bereiche anwenden:

Beispiel 7-2. Komplexere Formular-Variablen


<form action="array.php" method="post">
    Name: <input type="text" name="personal[name]"><br>
    Email: <input type="text" name="personal[email]"><br>
    Bier: <br>
    <select multiple name="bier[]">
        <option value="binding">Binding
        <option value="warsteiner">Warsteiner
        <option value="stauder">Stauder
        <option value="stuttgarter">Stuttgarter Schwabenbräu
    </select>
    <input type="submit">
</form>
      

Ist das PHP-"track_vars"-Feature eingeschaltet (entweder durch track_vars-Konfigurations- Einstellung oder per <?php_track_vars?> -Anweisung), können die durch die POST- oder GET-Methode übertragenen Variablen in den globalen assoziativen Arrays $HTTP_POST_VARS und $HTTP_GET_VARS wieder gefunden werden.

IMAGE SUBMIT Variablen-Bezeichner

Zur Übertragung eines Formulars kann auch ein Bild (Image) statt eines Übertragungs-Schalters (Submit-Button) benutzt werden, dessen Tag wie folgt aussieht:


<input type=image src="image.gif" name="sub">
      

Klickt der Benutzer irgendwo auf das Bild, wird das entsprechende Formular an den Web-Server übertragen. Hierbei sind zwei zusätzliche Variablen vorhanden, sub_x und sub_y. Diese enthalten die Koordinaten des Klick-Punktes innerhalb des Bildes. Die Erfahreneren werden sagen, dass dabei kein Unterstrich vorhanden ist (da ein Punkt enthalten ist, also z.B. "sub.x"). Dieser wird aber automatisch von PHP erzeugt.

HTTP-Cookies

PHP unterstützt HTTP-Cookies, wie sie in Netscape's Spec definiert sind. Cookies ermöglichen die Daten-Speicherung innerhalb der jeweiligen Browser-Umgebung zur Weiterleitung oder wiederholten Identifikation von Benutzern. Sie können Cookies erzeugen, indem sie die SetCookie()- Funktion benutzen. Cookies sind Teil des HTTP-Headers, deshalb muss die SetCookie-Funktion aufgerufen werden, bevor irgendeine Ausgabe an den Browser gesendet wird. Dabei handelt es sich um die gleiche Einschränkung, die auch für die header()-Funktion gilt. Alle an sie gesendeten Cookies werden in PHP-Variablen umgesetzt, genau wie die Daten bei den GET- und POST-Methoden.

Wenn sie einem einzelnen Cookie verschiedene Wert zuweisen wollen müssen sie dem Cookie-Namen [] hinzufügen. Z.B.:


SetCookie ("MeinCookie[]", "Ich teste", time()+3600);
     

Bedenken sie, dass ein Cookie ein vorhergehendes Cookie gleichen namens überschreibt, es sei denn, der Pfad oder die Domain ist anders. Für eine Warenkorb-Anwendung müssen sie deshalb z.B. einen Zähler bilden und diesen weiter leiten:

Beispiel 7-3. SetCookie-Beispiel


$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
     

Umgebungs- / Environment-Variablen

PHP sorgt automatisch für die Verfügbarkeit der Umgebungs- Variablen als normale PHP-Variablen.


echo $HOME;  /* Zeigt die HOME-Umgebungs-Variable (sofern gesetzt). */
      

Da Informationen per GET, POST und Cookie-Mechanismen übergeben werden, ist es manchmal das Beste, Umgebungs-Variablen explizit auszulesen. Dadurch wird die richtige Version eingelesen. Hierfür kann die getenv()-Funktion genutzt werden. Den Wert einer Umgebungs-Variablen können sie per putenv()- Funktion setzen.

Punkte in eingelesenen Variablen-Bezeichnern

Normalerweise verändert PHP nicht die Variablen-Bezeichner, wenn sie einem Skript übergeben werden. Es sollte aber beachtet werden, dass der Punkt (".") kein gültiger Bestandteil eines Variablen-Bezeichners ist. Deshalb achten sie auf folgendes:

$varname.ext;  /* ungültiger Variablen-Bezeichner */
     
Der PHP-Parser sieht eine Variable namens $varname, gefolgt von einem Zeichenketten-Verbindungs-Operator, dieser wiederrum gefolgt von der offenen Zeichenkette 'ext' (also nicht eingegrenzt durch '"' und auch keinem Schlüssel oder reserviertem Bezeichner entsprechend). Das kann natürlich nicht zum gewünschten Ergebnis führen.

Deshalb ist es wichtig zu wissen, dass PHP in den ihm übergebenen Variablen alle Punkte (.) automatisch durch einen Unterstrich (_) ersetzt.

Bestimmung des Variablen-Typs

Da PHP den Typ einer Variablen bestimmt und grundsätzlich selbst eine entsprechende Umformung vornimmt, ist es nicht immer klar, welchen Typ eine Variable gerade hat. PHP beinhaltet einige Funktionen, die dies herausfinden. Als da sind: gettype(), is_long(), is_double(), is_string(), is_array() und is_object().