HTML-Formulare (GET und POST)
Wenn ein Formular an ein PHP-Skript gesendet wird, sind die Informationen im Formular automatisch im Skript verfügbar. Es gibt viele Möglichkeiten, auf diese Informationen zuzugreifen, zum Beispiel:
Beispiel #1 Ein einfaches HTML-Formular
<form action="foo.php" method="POST"> Name: <input type="text" name="username"><br /> Email: <input type="text" name="email"><br /> <input type="submit" name="submit" value="Submit me!" /> </form>
Es gibt viele Möglichkeiten, auf diese Informationen in einem HTML-Formular zuzugreifen, abhängig von Ihren Anforderungen spezifische Einrichtung und persönliche Vorlieben. Zum Beispiel:
Beispiel #2 Zugriff auf Daten aus einem einfachen POST-HTML-Formular
<?php // 自 PHP 4.1.0 起可用echo $_POST['username'];echo $_REQUEST['username']; import_request_variables('p', 'p_');echo $p_username; // 自 PHP 5.0.0 起,这些长格式的预定义变量可用 register_long_arrays 指令关闭。 echo $HTTP_POST_VARS['username']; // 如果 PHP 指令 register_globals = on 时可用。不过自PHP 4.2.0 起默认值为 register_globals = off。// 不提倡使用/依赖此种方法。 echo $username; ?>
Die Verwendung eines GET-Formulars ist ähnlich, jedoch mit den entsprechenden vordefinierten GET-Variablen. GET funktioniert auch mit QUERY_STRING (die Informationen nach dem „?“ in der URL). So enthält beispielsweise http://www.example.com/test.php?id=3 GET-Daten, auf die mit $_GET['id'] zugegriffen werden kann. Siehe $_REQUEST und import_request_variables().
Hinweis:
Superglobale Arrays wie $_POST und $_GET sind seit PHP 4.1.0 verfügbar.
Hinweis:
Punkte und Leerzeichen in Variablennamen werden in Unterstriche umgewandelt. Beispielsweise wird zu $_REQUEST["a_b"].
Wie oben gezeigt, war der Standardwert von register_globals vor PHP 4.2.0 aktiviert. Die PHP-Community empfiehlt jedem, sich nicht auf diese Direktive zu verlassen und empfiehlt, beim Codieren davon auszugehen, dass sie deaktiviert ist.
Hinweis:
Die Konfigurationsanweisung magic_quotes_gpc beeinflusst die Werte von Get, Post und Cookie. Wenn diese Option aktiviert ist, wird der Wert (Es ist „PHP!“) automatisch in (Es ist „PHP!“) konvertiert. Vor über einem Jahrzehnt erforderten Datenbankeinfügungen eine solche Escape-Funktion, die mittlerweile veraltet ist und deaktiviert werden sollte.
PHP versteht Arrays auch im Kontext von Formularvariablen. Sie können beispielsweise verwandte Variablen gruppieren oder diese Funktion verwenden, um Werte aus einem Eingabefeld mit Mehrfachauswahl abzurufen. Senden Sie beispielsweise ein Formular per POST an sich selbst und zeigen Sie beim Absenden Daten an:
Beispiel Nr. 3 Komplexere Formularvariablen
<?php if (isset($_POST['action']) && $_POST['action'] == 'submitted') { echo '<pre class="brush:php;toolbar:false">'; print_r($_POST); echo '<a href="'. $_SERVER['PHP_SELF'] .'">Please try again</a>'; echo ''; } else { ?>
IMAGE SUBMIT-Variablenname
Beim Absenden Beim Formen In einem Formular können Sie anstelle der Standard-Senden-Schaltfläche ein Bild verwenden, indem Sie ein Tag wie dieses verwenden:
Wenn der Benutzer irgendwo im Bild klickt, wird das entsprechende Formular an den Server gesendet und zwei Variablen sub_x und sub_y hinzugefügt. Sie enthalten die Koordinaten des Bildes, auf das der Benutzer geklickt hat. Erfahrene Benutzer bemerken möglicherweise, dass der tatsächliche vom Browser gesendete Variablenname einen Punkt anstelle eines Unterstrichs enthält (d. h. sub.x und sub.y), PHP wandelt den Punkt jedoch automatisch in einen Unterstrich um.
HTTP-Cookies
PHP unterstützt transparent » HTTP-Cookies gemäß RFC 6265. Cookies sind ein Mechanismus, der Daten in einem Remote-Browser speichert und Benutzer verfolgen oder identifizieren kann, die sie erneut besuchen. Cookies können mit der Funktion setcookie() gesetzt werden. Cookies sind Teil der HTTP-Header, daher muss die SetCookie-Funktion aufgerufen werden, bevor eine Ausgabe an den Browser gesendet wird. Die gleiche Einschränkung gilt für die Funktion header(). Cookie-Daten sind im entsprechenden Cookie-Daten-Array verfügbar, z. B. $_COOKIE, $HTTP_COOKIE_VARS und $_REQUEST.
Wenn Sie einer Cookie-Variable mehrere Werte zuweisen möchten, müssen Sie sie einem Array zuweisen. Beispiel:
<?php setcookie("MyCookie[foo]", 'Testing 1', time()+3600); setcookie("MyCookie[bar]", 'Testing 2', time()+3600); ?>
Dadurch werden zwei separate Cookies erstellt, obwohl MyCookie im Skript ein einzelnes Array ist. Wenn Sie mehrere Werte in nur einem Cookie festlegen möchten, sollten Sie zunächst serialize() oder explosion() für die Werte verwenden.
Beachten Sie, dass ein Cookie das vorherige Cookie mit demselben Namen im Browser ersetzt, es sei denn, der Pfad oder die Domäne ist unterschiedlich. Daher kann für das Warenkorbprogramm ein Zähler geführt und gemeinsam übergeben werden, zum Beispiel:
Beispiel #4 Ein Beispiel für setcookie()
<?php if (isset($_COOKIE['count'])) { $count = $_COOKIE['count'] + 1; } else { $count = 1; } setcookie('count', $count, time()+3600); setcookie("Cart[$count]", $item, time()+3600); ?>
Der Punkt im Variablennamen
Normalerweise ändert PHP die an Skripte übergebenen Variablennamen nicht. Allerdings ist zu beachten, dass der Punkt (Punkt) kein zulässiges Zeichen in PHP-Variablennamen ist. Schauen Sie sich den Grund an:
<?php $varname.ext; /* 非法变量名 */ ?>
Zu diesem Zeitpunkt sieht der Parser eine Variable namens $varname, gefolgt von einem String-Verkettungsoperator, gefolgt von einem bloßen String (d. h. ohne Zusatz A). Zeichenfolge in Anführungszeichen, die keinem bekannten Schlüsselnamen oder reservierten Wort entspricht) „ext“. Offensichtlich ist dies nicht das gewünschte Ergebnis.
Beachten Sie aus diesem Grund, dass PHP Punkte in Variablennamen automatisch durch Unterstriche ersetzt.
Variablentypen bestimmen
Da PHP den Variablentyp bestimmt und ihn bei Bedarf (normalerweise) konvertiert, ist es nicht offensichtlich, welchen Typ eine bestimmte Variable zu einem bestimmten Zeitpunkt hat. PHP enthält mehrere Funktionen, die den Typ von Variablen bestimmen können, wie zum Beispiel: gettype(), is_array(), is_float(), is_int(), is_object() und is_string().