Variablen aus externen Quellen

HTML-Formulare (GET and POST)

Sobald ein Formular an ein PHP-Skript übergeben wird, werden die Informationen dieses Formulars dem Skript automatisch zur Verfügung gestellt. Es gibt ein paar 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 />
    E-Mail: <input type="text" name="email" /><br />
    <input type="submit" name="submit" value="Und ab!" />
</form>

Es gibt es nur zwei Möglichkeiten, um auf die Daten der HTML-Formulare zuzugreifen. Die zurzeit verfügbaren Methoden werden unten aufgeführt:

Beispiel #2 Zugriff auf die Daten eines einfachen POST-HTML-Formular

<?php
echo $_POST['username'];
echo 
$_REQUEST['username'];
?>

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.

Hinweis:

Punkte und Leerzeichen in Variablennamen werden in Unterstriche umgewandelt. Zum Beispiel wird <input name="a.b" /> zu $_REQUEST["a_b"].

Im Zusammenhang mit Formular-Variablen versteht PHP auch Arrays (siehe auch die zugehörige FAQ). Sie können z.B. die betreffenden Variablen gruppieren oder dieses Leistungsmerkmal nutzen, um Werte aus Eingabeelementen mit Mehrfachauswahl zu erhalten. Schicken wir zum Beispiel ein Formular an sich selbst und lassen nach dem Versand die Daten anzeigen:

Beispiel #3 Komplexere Formular-Variablen

<?php
if ($_POST) {
    echo 
'<pre>';
    echo 
htmlspecialchars(print_r($_POSTtrue));
    echo 
'</pre>';
}
?>
<form action="" method="post">
    Name:  <input type="text" name="personal[name]" /><br />
    E-Mail: <input type="text" name="personal[email]" /><br />
    Bier: <br />
    <select multiple name="bier[]">
        <option value="oettinger">Öttinger</option>
        <option value="bitburger">Bitburger</option>
        <option value="stuttgarter">Stuttgarter Schwabenbräu</option>
    </select><br />
    <input type="submit" value="Und ab!" />
</form>

Hinweis: Beginnt der Name einer externen Variablen mit einer gültigen Array-Syntax, dann werden darauf folgende Zeichen stillschweigend ignoriert. Zum Beispiel wird <input name="foo[bar]baz"> zu $_REQUEST['foo']['bar'].

IMAGE-SUBMIT-Variablennamen

Zur Übertragung eines Formulars kann auch ein Bild statt eines Übertragungs-Schalters (Submit-Button) verwendet 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 Webserver übertragen. Hierbei sind zwei zusätzliche Variablen vorhanden, sub_x und sub_y. Diese enthalten die Koordinaten des Klickpunktes innerhalb des Bildes. Die Erfahreneren werden bemerken, dass die Variablen, die vom Browser gesendet werden, einen Punkt statt eines Unterstrichs enthalten. Dieser Punkt wird von PHP automatisch in einen Unterstrich verwandelt.

HTTP-Cookies

PHP unterstützt HTTP-Cookies auf völlig transparente Weise, wie in » RFC 6265 definiert. Cookies sind ein Mechanismus zur Speicherung von Daten auf dem Client-Rechner, um damit wiederkehrende Benutzer nachzuverfolgen oder zu identifizieren. Sie können Cookies erzeugen, indem Sie die Funktion setcookie() verwenden. Cookies sind Teil des HTTP-Headers, deshalb muss die Funktion setcookie() aufgerufen werden, bevor irgendeine Ausgabe an den Browser gesendet wird. Dabei handelt es sich um die gleiche Einschränkung, die auch für die Funktion header() gilt. Cookie-Daten stehen dann in den entsprechenden Cookie-Daten-Arrays, wie zum Beispiel $_COOKIE, als auch in $_REQUEST zur Verfügung. Für weitere Details und Beispiele lesen Sie bitte die setcookie()-Seite des Handbuchs.

Hinweis: Aus Sicherheitsgründen werden ab PHP 7.2.34, 7.3.23 bzw. 7.4.11 die Namen der eingehenden Cookies nicht mehr URL-dekodiert.

Wenn Sie einer einzelnen Cookie-Variablen mehrere Werte zuweisen wollen, müssen Sie diese als Array zuweisen. Zum Beispiel:

<?php
  setcookie
("MeinCookie[foo]"'Ich teste 1'time()+3600);
  
setcookie("MeinCookie[bar]"'Ich teste 2'time()+3600);
?>

Das erzeugt zwei einzelne Cookies, obwohl MyCookie in Ihrem Skript nun ein einziges Array ist. Wenn Sie nur ein Cookie mit mehreren Werten setzen wollen, sollten Sie erwägen, serialize() oder explode() auf das Array anzuwenden.

Bedenken Sie, dass ein Cookie ein vorhergehendes Cookie gleichen Namens überschreibt, es sei denn, der Pfad oder die Domain sind anders. Für eine Warenkorb-Anwendung können Sie deshalb z.B. einen Zähler erstellen und diesen weiterleiten:

Beispiel #4 Ein setcookie()-Beispiel

<?php
if (isset($_COOKIE['zaehler'])) {
    
$count $_COOKIE['zaehler'] + 1;
} else {
    
$count 1;
}
setcookie('zaehler'$counttime()+3600);
setcookie("Cart[$count]"$itemtime()+3600);
?>

Punkte in eingehenden Variablennamen

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

<?php
$varname
.ext;  /* ungültiger Variablenname */
?>
Der PHP-Parser sieht eine Variable namens $varname, gefolgt von einem Zeichenketten-Verbindungsoperator, dieser wiederum gefolgt von der offenen Zeichenkette 'ext' (also nicht eingegrenzt durch '"' und auch keinem Schlüsselwort 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.

Da HTTP ein Text-Protokoll ist, werden die meisten, wenn nicht alle Inhalte von superglobalen Arrays, wie $_POST und $_GET, als Zeichenketten erhalten bleiben. PHP wird nicht versuchen, die Werte in spezifische Typen umzuwandeln. Im Beispiel weiter unten enthält $_GET["var1"] die Zeichenkette "null" und $_GET["var2"] die Zeichenkette "123".

/index.php?var1=null&var2=123

Changelog

Version Beschreibung
7.2.34, 7.3.23, 7.4.11 Aus Sicherheitsgründen werden die Namen der eingehenden Cookies nicht mehr URL-dekodiert.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?

In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...

TheMax

Autor : TheMax
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor
Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Hallöchen zusammen, ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dies ...

Geschrieben von derH0st am 11.04.2024 15:58:37
Forum: PHP Developer Forum
PHP 8.3.3 - App kann auf dem PC nicht ausgeführt werden

Problem gelöst. Die php.exe hatte einen defekt. Neue heruntergeladen und fertig.

Geschrieben von Tetra1081 am 10.04.2024 16:49:14
Forum: PHP Developer Forum