$_POST[] wird nicht immer übertragen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
blocken
code
datum
einstellen
folgender code
formular
gegeben code
gerade url
gesamte post
kodierung
problem
programm
schleife
string
super danke
umlaut
url
vermutung
vorliegen
-
Hallo,
im Moment habe ich ein ganz merkwürdiges Problem.
Folgender Code ist gegeben:
print_r($_POST); $codebl = 0; while(isset($_POST['codeblock'.$codebl])){ print_r(htmlentities($_POST['codeblock'.$codebl])); $codebl++; }
im ersten print_r wird das gesamte Post Array ausgegeben!
Aber in der While-Schleife wird der 3. Block nicht ausgegeben (von 5 Durchläufen)??
Wisst ihr, wie ich das debugen kann? Irgendwie komm ich da nicht weiter... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Probiers mal mit var_dump statt print_r.
Btw kannst du auch Feldnamen wie codeblock[0] und codeblock[1] nutzen. Die konvertiert PHP in ein Array. -
Das liegt vermutlich daran, dass htmlentities den einen String schluckt, wegen Problemen mit der Zeichenkodierung.
Um diese Vermutung zu überprüfen, kannst du den Code einmal testweise umbauen:print_r($_POST); $codebl = 0; while(isset($_POST['codeblock'.$codebl])){ print_r(bin2hex($_POST['codeblock'.$codebl])); echo "<br>"; $codebl++; }
Die Funktion bin2hex stellt die Strings hexadezimal dar, sodass ich genau nachvollziehen kann, was dein Programm empfängt und in welcher Kodierung die Strings vorliegen. Wenn du diese Ausgabe dann hier veröffentlichst, schau ich mal nach, ob es daran liegt.
Um das Problem dann zu beheben, musst du überall die gleiche Zeichenkodierung verwenden. Die Seite, von der du die Daten wegschickst, ist hier wohl das Problem.
Edit: Ich habe gerade diesen Beitrag von czibere wieder gefunden. Da steht ausführlich, was man alles auf utf-8 einstellen muss.
Beitrag zuletzt geändert: 12.8.2016 20:16:06 von fuerderer -
Super danke euch beiden.
Das htmlentities hat tatsächlich einen leerstring erzeugt.
Der Grund wird wahrscheinlich ein ä gewesen sein. Dieses ist genau im besagten fehlerhaften Block vorgekommen.
Ich hab auf der Seite wo ich das Formular absende folgendes eingefügt.
<meta charset="utf-8">
Jetzt wird es plötzlich ordentlich übertragen.
Nochmal danke :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage