|
|
 |
|
|
 |
 |
 |
 |
 |
Hits gesamt: 5203814 Hits Heute: 471 max. Hits (10.07.07): 6964 User Online: 26 Scripts: 2828 |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
|
 |
|
|
 |
|
|
 |
 |
 |
 |
 |
 Das eigene Web mit HTML, CSS und JavaScript - M+T Werkstatt . 15 Workshops |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
 |
 |
 |
 |
 |
Manuals > PHP >
Variablen ausserhalb von PHP |
Variablen ausserhalb von PHPHTML-Formulare (GET and POST)
Sobald ein Formular an ein PHP-Skript übergeben wird, werden die
Informationen dieses Formulars dem Skript automatisch verfügbar
gemacht. Es gibt viele Möglichkeiten, auf diese Informationen
zuzugreifen, zum Beispiel:
Beispiel 7-8. Ein einfaches HTML-Formular | <form action="foo.php" method="POST">
Name: <input type="text" name="benutzername"><br>
Email: <input type="text" name="email"><br>
<input type="submit" name="submit" value="Und ab!">
</form> |
|
Abhängig von Ihrem speziellen Setup und Ihren persönlichen
Vorlieben gibt es viele Möglichkeiten, auf die Daten von Ihren
HTML-Formularen zuzugreifen. Hier einige Beispiele:
Beispiel 7-9.
Zugriff auf die Daten von einem einfachen POST HTML-Formular
| <?php
// Seit PHP 4.1.0 verfügbar
print $_POST['benutzername'];
print $_REQUEST['benutzername'];
import_request_variables('p', 'p_');
print $p_benutzername;
// Seit PHP 3 verfügbar. Ab PHP 5.0.0 können diese langen
// vordefinierten Variablen mit der Anweisung register_long_arrays
// deaktiviert werden.
print $HTTP_POST_VARS['benutzername'];
// Verfügbar, falls die PHP-Anweisung register_globals = on. Ab
// PHP 4.2.0 ist der standardmäßige Wert von register_globals = off.
// Es ist nicht empfehlenswert, diese Methode zu verwenden, bzw. sich
// darauf zu verlassen.
print $benutzername;
?> |
|
Die Verwendung eines GET Formulars ist, davon abgesehen, dass Sie
stattdessen die entsprechende vordefinierte GET-Variable erhalten,
ähnlich. Außerdem wird GET auch für den QUERY_STRING (die
Information nach dem '?' in einer URL) verwendet. So enthält zum
Beispiel http://www.example.com/test.php?id=3
GET-Daten, auf die mit $_GET['id'] zugegriffen
werden kann. Siehe auch $_REQUEST und
import_request_variables().
Wie gezeigt, war register_globals vor PHP
4.2.0 standardmäßig on. In PHP 3 war es immer
aktiviert. Die PHP-Gemeinschaft ermuntert alle, sich nicht auf
diese Anweisung zu stützen, weil es vorzuziehen ist, davon
auszugehen, dass sie off ist und entsprechend
zu programmieren.
Anmerkung:
Die Konfigurationseinstellung zu magic_quotes_gpc betrifft
Get-, Post- und Cookie-Werte. Ist diese Einstellung aktiv, wird
der Wert (It's "PHP!") automatisch zu (It\'s \"PHP!\"). Escaping
ist notwendig, wenn Sie ihre Daten in eine Datenbank einfügen
wollen. Siehe auch addslashes(),
stripslashes() und magic_quotes_sybase.
Im Zusammenhang mit Formular-Variablen versteht PHP auch
Arrays (siehe auch die verwandte Faq).
Sie können z.B. die betreffenden Variablen gruppieren oder dieses
Leistungsmerkmal nutzen, um Werte aus Mehrfach-Auswahl-Bereichen
zu erhalten. Schicken wir zum Beispiel ein Formular an sich selbst
und lassen nach dem Abschicken die Daten anzeigen:
Beispiel 7-10. Komplexere Formular-Variablen
<?php if (isset($_POST['action']) && $_POST['action'] == 'abgeschickt') { print '<pre>'; print_r($_POST); print '<a href="'. $_SERVER['PHP_SELF'] .'">Bitte versuchen Sie es nochmal</a>';
print '</pre>'; } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" 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> <option value="warsteiner">Warsteiner</option> <option value="stauder">Stauder</option> <option value="stuttgarter">Stuttgarter Schwabenbräu</option> <option value="heubacher">Heubacher</option> </select><br> <input type="hidden" name="action" value="abgeschickt"> <input type="submit" name="submit" value="Und ab!"> </form> <?php } ?>
|
|
In PHP 3 ist die Verwendung von Arrays in Formularvariablen auf
eindimensionale Arrays beschränkt. In PHP 4 besteht diese Einschränkung
nicht mehr.
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:
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 die Variablen, die
vom Browser gesendet werden einen Punkt enthalten statt eines
Unterstrichs. Dieser Punkt wird von PHP automatisch in einen
Unterstrich verwandelt.
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 Funktion setcookie() 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. Cookie-Daten stehen
dann sowohl in den entsprechenden Cookie-Daten-Arrays, wie zum
Beispiel $_COOKIE,
$HTTP_COOKIE_VARS als auch in
$_REQUEST zur Verfügung. Für weitere Details
und Beispiele lesen Sie bitte die
setcookie()-Seite des Handbuchs.
Wenn Sie einer einzelnen Cookie-Variable mehrere Werte zuweisen
wollen, müssen Sie diese als Array übertragen. Zum Beispiel:
Das erzeugt zwei einzelne Cookies obwohl MeinCookie in Ihrem
Skript nun ein einziges Array ist. Wenn Sie nur ein Cookie mit
mehreren Werten setzen wollen, sollten Sie zuerst
serialize() oder explode()
auf das Array anwenden.
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 können
Sie deshalb z.B. einen Zähler bilden und diesen weiterleiten:
Beispiel 7-11. Ein setcookie()-Beispiel
<?php if (isset($_COOKIE['zaehler'])) { $zaehler = $_COOKIE['zaehler'] + 1; } else { $zaehler = 1; } setcookie("zaehler", $zaehler, time()+3600); setcookie("Cart[$zaehler]", $item, time()+3600); ?>
|
|
Punkte in eingelesenen Variablen-Bezeichnern
Normalerweise verändert PHP die Variablen-Bezeichner nicht,
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:
<?php $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 der Variablen bestimmt und (im Allgemeinen) selbst
eine entsprechende Umformung vornimmt, ist es nicht immer klar,
welchen Typ eine Variable gerade hat. PHP beinhaltet einige
Funktionen, die dies herausfinden, wie zum Beispiel:
gettype(), is_array(),
is_float(), is_int(),
is_object() und
is_string(). Lesen Sie bitte auch das Kapitel
über Typen.
|
|
|
 |
 |
 |
 |
 |
 |
|
 |