$_POST Daten ändern sich beim Absenden
Oschl
- php
0 niklaskamenisch0 Oschl0 Malcolm Beck´s0 Oschl0 niklaskamenisch0 Oschl
0 Tobias Hahner
Hallo,
ich schreibe gerade ein kleines Skript, mit dem man Kommentare zu einem Artikel posten kann. Dafür gibt es ein HTML Formular, das die Daten per post an PHP übergibt. Damit die Formulare nicht doppelt abgeschickt werden, habe ich auch ein hidden Feld "unique", in dem ich einen md5 Wert speichere.
Jetzt habe ich genau bei einem Artikel ein Problem, das mir seit zwei Tagen den letzten Nerv raubt. Schicke ich das Formular nämlich ab, steht in $_POST["unique"] NICHT der Wert, der im hidden input Feld stand. Habe extra den Post-Wert ganz an den Anfang meines Skriptes gestellt und der Wert unterscheidet sich definitiv vom Wert, der im Formular stand.
Das ist auch nur bei einem einzigen Artikel der Fall, bei allen anderen klappt das problemlos. Habe auch sonst nirgend irgend etwas, was den unique-Wert überschreiben würde. Bin am Verzweifeln und über jeden Tipp dankbar, wie ich dem Fehler noch finden könnte.
hi,
irgendwelche screenshots bzw codeauszüge wären dafür schon notwendig ...
wie merkst du dir serverseitig den feldinhalt?
Gruß Niklas
Den Inhalt schreibe ich erst in eine Session, von der kommt er in das Hidden Feld des Formulars. Grundsätzlich suche ich hier jetzt auch nicht die konkrete Lösung, da es sich um ein größeres Projekt handelt wäre es glaube ich nicht sinnvoll, hier einzelne Codefragmente zu posten. Ich suche eher nach Ideen, wie ich diesen verflixten Fehler finden kann.
Nochmal in Kurzfassung, wie es sich darstellt: Ich habe ein HTML Formular mit hidden Field. Hier schaue ich den Quelltext an und sehe in dem Feld "unique" den Wert "abc". Jetzt schicke ich das Formular ab und das PHP Skript hat in der ersten Zeile (dass da absolut nichts manipuliert worden sein kann) eine Ausgabe von $_POST["unique"]. Und dieser Wert steht dann nicht wie zu erwarten auf "abc" sondern auf "xyz". Firebug liefert mir nach dem Posten ebenfalls lediglich "xyz". Mir fehlen gerade irgendwelche Einfälle, wie ich noch weiter suchen kann...
مرحبا
Nochmal in Kurzfassung, wie es sich darstellt: Ich habe ein HTML Formular mit hidden Field. Hier schaue ich den Quelltext an und sehe in dem Feld "unique" den Wert "abc".
Passiert das nur bei dem Input-Feld für "unique", oder ändern sich die Werte aller Input-Elemente?
mfg
Tritt nur bei diesem einen Feld auf und seltsamerweise nur bei einem einzigen Artikel. Bei allen anderen tut es was es soll. Zumindest habe ich noch nicht mehr gefunden - kann jedoch nicht ausschließen, dass es noch mehr gibt. Deshalb bin ich intensiv auf der Suche nach der Ursache. Man könnte also vermuten, dass es etwas mit dem Datensatz zu tun hat. Aber da finde ich auch absolut nichts ungewöhnliches.
Jetzt erstmal drüber schlafen, vielleicht habe ich ja morgen eine Eingebung.
hi,
1. erstell dir mal eine phpdatei die nur var_dump($_POST); macht. Dann schau mal wie die Ausgabe dort ist. Wenn sie da passt, liegt es an deinem script, das doch wohl irgendwas verändert. Passt es nicht, ist was am absenden falsch
2. deaktivier mal eventuell vorhandenes JS, nicht das dieses die felder beinflusst (firebug kann das glaub ich)
3. wie verschieden sind die beiden werte? extreme abweichungen?
4. lass dir mal die sessionwerte am ende des scripts ausgeben, das dieses feld erstellt. eventuell wird dort schon die falsche gespeichert
ich denke das grundprinzip der suche ist damit klar. Grob suchen wo die werte ausgegeben werden können, abschalten was iwie schreibrechte haben kann, und den fehler so einkreisen.
Gruß Niklas
Da du sehr wolkig formulierst, und keinesfalls die Daten zeigst, werfe ich mal das Stichwort "Zeichenkodierung" in den Ring. Wenn ich UTF-8 abschicke und du das als ISO-8859-1 empfängst, gibt's ein Problem.
Ich danke dir. Punkt 2 hat mir sehr geholfen - hätte ich eigentlich nicht für möglich gehalten. Weitere Erklärungen zur Ursache siehe oben.
Ich antworte mal mir selbst. Den Grund hierfür habe ich inzwischen gefunden. Bei dem einen Artikel waren MP3s zum Anhören mit eingebunden. Dazu habe ich einen JavaScript Player eingebunden, der u.a. die SoundManager2 JavaScript Datei verwendet. Dadurch wird die Seite zwei mal geladen. Somit passt natürlich der Wert in der Session nicht mehr zu dem im Post - dafür war das ja gedacht. Hat mich nochmal ein paar Stunden gekostet, das zu finden...
Sobald ich die soundmanager2.js auskommentiere, lädt die Seite nur einmal. Da dieser Effekt beim Demo des SoundManager2 nicht auftritt, tippe ich auf eine Wechselwirkung mit irgendwelchen anderen Skripten, welche kann ich noch nicht beurteilen. Aber zumindest der Fehler ist mir jetzt klarer und ich habe nun einen Ansatzpunkt zur Fehlersuche.
Hallihallo!
Nur so ein Verdacht:
Hast Du im empfangenden Skript evtl doch etwas vor Deiner Kontrollausgabe, vielleicht ein Include, indem in der Session rumgeschrieben wird (Auch versehentlich, also "=" statt "==")?
Falls ja: Wird hier vielleicht irgendwo ein $_SESSION['unique'] benutzt?
Ich hatte mal das Problem in einer ähnlichen Situation, dass sich $_POST['foo'] und $_SESSION['foo'] in die Quere kamen. Da kein halbwegs normal denkender Mensch mit so Etwas rechnet, hat mir das einige schlaflose Tage eingebracht :-)
Beste Grüsse,
Tobias Hahner