Kapitel 51. PHP und HTML

PHP und HTML interagieren stark : PHP kann HTML generieren und HTML kann Informationen an PHP weitergeben .

1. Wie muss ich enkodieren / dekodieren, wenn ich einen Wert über ein Formular / einen URL weitergeben möchte?
2. Ich versuche ein input type="image" -Tag zu benutzen, aber die Variablen $foo.x and $foo.y sind nicht verfügbar. Wo finde ich diese?
3. Wie kann ich Array aus einem HTML-Formular erstellen?
4. Wie bekomme ich alle Werte aus einem "select multiple"-HTML-Tag?

Es gibt mehrere Stufen , für die Enkodierung wichtig ist . Angenommen , Sie haben einen String $data , der den String , den Sie in nicht-enkodierter Weise weitergeben möchten , enthält . Dann sind dies die relevanten Stufen :



Beispiel 51-1 . Ein verstecktes HTML-Formular-Element




Anmerkung : Es wäre falsch , urlencode( ) auf $data anzuwenden , da es die Aufgabe des Browsers ist , die Daten zu enkodieren . Alle populären Browser machen dies auch korrekt . Beachten Sie , dass dies unabhängig von der verwendeten Methode ( also z.B . GET oder POST ) geschieht . Feststellen werden Sie dies aber nur bei GET-Anfragen , da POST-Anfragen meist versteckt geschehen .

Beispiel 51-2 . Daten , die vom Benutzer bearbeitet werden sollen




Anmerkung : Die Daten werden wie Browser wie gewünscht ausgegeben , da der Browser die HTML-escapten Symbole interpretiert .

Nach dem Abschicken , egal ob via GET oder POST , werden die Daten für den Transfer enkodiert ( mit urlencode( ) ) und von PHP direkt wieder dekodiert (mit urldecode( ) ) . Sie müssen also für die En - und Dekodierung nicht selbst sorgen , die Browser und PHP erledigen dies automatisch für Sie .

Beispiel 51-3 . In einem URL




Anmerkung : Hier wird eine HTML-GET-Anfrage gefakt , deswegen müssen Sie die Daten manuell mit urlencode( ) enkodieren .

Anmerkung : Sie müssen htmlspecialchars( ) auf den gesamten URL anwenden , da der URL als Wert eines HTML-Attributs auftritt . In diesem Fall wird der Browser zuerst etwas wie " un - htmlspecialchars( ) " auf den Wert anwenden und dann erst den URL weitergeben . PHP wird den URL korrekt verstehen , da Sie die Daten mit urlencode( ) enkodiert haben .

Sie werden feststellen , dass das im URL durch amp ; ersetzt wird . Auch wenn die meisten Browser richtig arbeiten , falls Sie diese Ersetzung vergessen sollten , sollten Sie sich trotzdem nicht darauf verlassen . Das bedeutet , dass Sie - auch wenn Ihr URL nicht dynamisch ist - trotzdem htmlspecialchars( ) auf den URL anwenden müssen .



Wie kann ich Array aus einem HTML-Formular erstellen ?

Um die Formularwerte als Array im PHP-Skript zur Verfügung zu haben , müssen Sie die input , select or textarea -Felder wie folgt benennen :

 
input

 
name="

 
MeinArray[]

 
"

 
input

 
name="MeinArray[]

 
"

 
input

 
name="MeinArray[]

 
"

 
input

 
name="MeinArray[]

 
"



Beachten Sie die eckigen Klammern hinter dem Variablen-Namen, denn dadurch wird das Array erst erzeugt. Sie können Felder in verschiedenen Arrays gruppieren, wenn Sie verschiedenen Feldern die gleichen Namen geben:
 
input

 
name="

 
MeinArray[]

 
"

 
input

 
name="MeinArray[]

 
"

 
input

 
name="MeinAnderesArray[]

 
"

 
input

 
name="MeinAnderesArray[]

 
"



Daraus werden zwei Arrays, MeinArray und MeinAnderesArray erstellt. Es ist auch möglich, spezielle Schlüssel anzugeben:
 
input

 
name="

 
AnderesArray[]

 
"

 
input

 
name="AnderesArray[]

 
"

 
input

 
name="AnderesArray[email]

 
"

 
input

 
name="AnderesArray[telefon]

 
"



Das Array AnderesArray enthält daraufhin die Schlüssel 0 , 1 , email und telefon .

Anmerkung : Die Angabe eines Array-Schlüssels ist in HTML optional . Wenn Sie keinen Schlüssel angeben , wird das Array in der Formular-Reihenfolge gefüllt . Im ersten Beispiel enthält das Array MeinArray also die Schlüssel 0 , 1 , 2 und 3 .



Siehe auch : Array-Funktionen und Variablen außerhalb von PHP .