Problemt mit hidden input mit $_GET und $_POST
Chris
- php
Hallo,
ich hab ein sehr komisches Problem wo ich den Grund leider nicht finden kann.
Ich möchte mir für das nächste Forumlar den $_GET-Wert erhalten und habe dafür folgendes eingefügt.
<input type="hidden" name="UserID" value="<?php echo $_GET['UserID']; ?>">
Im nächsten Formular frag ich das über
$UserID = $_POST['UserID'];
wieder ab.
Alle meine anderen Input Felder aus Forumlar übernimmt er problemlos in Formular 2. Die sind aber nicht hidden und der value wird nicht über GET definiert.
Könnte es hier ein Problem geben?
Gruß,
Chris
<input type="hidden" name="UserID" value="<?php echo $_GET['UserID']; ?>">
Im nächsten Formular frag ich das über
$UserID = $_POST['UserID'];
wieder ab.
Alle meine anderen Input Felder aus Forumlar übernimmt er problemlos in Formular 2. Die sind aber nicht hidden und der value wird nicht über GET definiert.
Jetzt hast Du zwar geschrieben, was mit den anderen Feldern passiert, aber nicht, was Dein Problem mit diesem Feld ist. Kommt es auf der zweiten Seite nicht an? Dann solltest Du erstmal prüfen, was denn im ersten Formular steht (Formularseite im Browser öffnen, dann Menü Ansicht -> Quelltext). Ist der HTML-Code augenscheinlich korrekt, gib auf der zweiten Seite mittels phpinfo(INFO_VARIABLES) die von außen kommenden Variablen aus.
Definitiv nicht die Ursache sind aber weder der Typ hidden noch das Einspeisen mittels $_GET, der Fehler dürfte lediglich in deren Nähe hocken.
» Jetzt hast Du zwar geschrieben, was mit den anderen Feldern passiert, aber nicht, was Dein Problem mit diesem Feld ist. Kommt es auf der zweiten Seite nicht an? Dann solltest Du erstmal prüfen, was denn im ersten Formular steht (Formularseite im Browser öffnen, dann Menü Ansicht -> Quelltext). Ist der HTML-Code augenscheinlich korrekt, gib auf der zweiten Seite mittels phpinfo(INFO_VARIABLES) die von außen kommenden Variablen aus.
Definitiv nicht die Ursache sind aber weder der Typ hidden noch das Einspeisen mittels $_GET, der Fehler dürfte lediglich in deren Nähe hocken.
Hallo Jork ist Xork,
mein Problem mit dem Feld ist dass der Wert auf der nächsten Seite nicht ankommt das ist richtig.
mit Ansicht -> Quelltext kann ich mir die php-Dateien leider nicht anschauen im Browser. Da öffnet er einfach keine Quelltext-Datei (ist aber bei den anderen Seiten genauso).
Auf der 2. Seite hab ich mal phpinfo(INFO_VARIABLES); eingefügt und er gibt mir tatsächlich die UserID Variabl hier nicht an. Weder unter Request noch unter Post.
Ne Ahnung woran das liegen kann?
Gruß,
Chris
Hi,
mein Problem mit dem Feld ist dass der Wert auf der nächsten Seite nicht ankommt das ist richtig.
Hast du das Inputfeld auch wirklich _ins_ Formular eingebaut - oder ist das vielleicht versehentlich irgendwo ausserhalb gelandet ...?
mit Ansicht -> Quelltext kann ich mir die php-Dateien leider nicht anschauen im Browser. Da öffnet er einfach keine Quelltext-Datei (ist aber bei den anderen Seiten genauso).
Im IE? Cache leeren hilft in den meisten Faellen.
Ansonsten mal einen vernuenftigen Browser zum Testen verwenden.
MfG ChrisB
Hi,
mein Problem mit dem Feld ist dass der Wert auf der nächsten Seite nicht ankommt das ist richtig.
Hast du das Inputfeld auch wirklich _ins_ Formular eingebaut - oder ist das vielleicht versehentlich irgendwo ausserhalb gelandet ...?
MfG ChrisB
Hier folgt nun ein ganz großes UPS.
Peinlich ...
Danke!
Hello,
Hast du das Inputfeld auch wirklich _ins_ Formular eingebaut - oder ist das vielleicht versehentlich irgendwo ausserhalb gelandet ...?
MfG ChrisBHier folgt nun ein ganz großes UPS.
Peinlich ...
Das ist das Paradoxons des Debuggens:
Die einfachsten Fehler sind oft am schwersten zu finden, weil man zu stolz dafür ist, zuerst danach zu suchen. "So ein Fehler passiert _mir_ doch nicht" ...
Deshalb:
1. sich immer erst Übersicht verschaffen.
2. Die Debugging-Schritte notieren, sodass sie nachvollziehbar werden.
3. An wichtigen Stellen Debug-Informationen im Script drinstehen lassen, sie nur mit
einer Bedingung schützen
if (DEBUG) echo $information;
Dann kann man die neuralgischen Punkte eines längeren Scriptes auf Anhieb prüfen.
Man muss nur im Kopf define('DEBUG', false) gegen define('DEBUG', true) ändern.
Außerdem kann es sinnvoll sein, diese Debugausgaben auch in eine Textdatei zu schreiben.
Dann kann man über die Linux-Konsole mit
tail -f /var/log/web799/realtime_log ## oder eben auf Deine Bedingungen angepasst
zusehen, was das Script gerade verzapft, ohne die Fehlermeldungen als störende Ausgaben
im Browser zu haben, was ja bekanntlich besonders störend ist, wenn man header() benutzt.
Ich erinnere mich da nur ungern an mein Problem mit PHP nach der Neueinrichtung des häuslichen Testservers. Da hatte ich versehentlich die falsche PHP-Version aktiviert, was natürlich nicht lief. Den Fehler habe ich auch ziemlich schnell gefunden und beseitigt. Aber danach wurde die zu Testzwecken aufgerufene PHP-Datei trotzdem immer noch im Quelltext im Browser angezeigt.
Ich habe bestimmt eine Stunde oder länger gesucht und in Google gewühlt, das Forum hier beläsigt mit dem Problem...
Der Browser (Firefox) hatte sich den Quellcode im Cache gemerkt und mir jedesmal vorgetäuscht, dass er die Seite neu herunterladen würde.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
noch ein Nachtrag, um das auf die Spitze zu treiben
if (DEBUG) echo $information;
if (isset($_SERVER['DEBUG'])) error_log($message, 3, '/var/log/web123/php_error_log');
Und die Variable $_SERVER['DEBUG'] kann man dann in einer .htaccess-Datei als Environment-Variable an die Scripte übergeben. Dann wächst das eingestellte PHP-Error-Log nur dann, wenn die Variable gesetzt ist.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo Chris,
was zeigt er denn an, wenn du mal echo $_GET['UserID'] machst?
Wenn hier bereits kein Wert vorhanden ist, ist das Problem bereits gelöst. Wenn hier jedoch was stehen sollte, dann wäre interessant, wie Du von Form zu Form springst.
Verwendest du method="post" oder "get"?
Welche php-Version setzt Du oder Dein Provider ein?
Hallo Chris,
was zeigt er denn an, wenn du mal echo $_GET['UserID'] machst?
Wenn hier bereits kein Wert vorhanden ist, ist das Problem bereits gelöst. Wenn hier jedoch was stehen sollte, dann wäre interessant, wie Du von Form zu Form springst.
Verwendest du method="post" oder "get"?
Welche php-Version setzt Du oder Dein Provider ein?
Hallo Hias,
wir verwenden die PHP-Version 5.2.5.
$_GET['UserID'] gibt mir das aus was ich in der Browserzeile mitgebe. Im 1. Formular kommen die Daten also an.
Bei Formularsprüngen verwende ich POST und ich schließe das 1. Formular mit input type=submit ab.
Funktioniert auch bei jeder anderen Variablen problemlos.
Gruß,
Chris
Moin!
ich hab ein sehr komisches Problem wo ich den Grund leider nicht finden kann.
[…]
<input type="hidden" name="UserID" value="<?php echo $_GET['UserID']; ?>">
Dieses Problem ist nicht komisch, aber gefährlich, da über den URL-Parameter jeder beliebige (HTML- oder Javascript-) Code eingeschleust werden kann. Kennst du noch nicht die Funktion htmlspecialchars?
Viele Grüße,
Robert
<input type="hidden" name="UserID" value="<?php echo $_GET['UserID']; ?>">
Dieses Problem ist nicht komisch, aber gefährlich, da über den URL-Parameter jeder beliebige (HTML- oder Javascript-) Code eingeschleust werden kann. Kennst du noch nicht die Funktion htmlspecialchars?
Viele Grüße,
Robert
Hallo Robert,
danke für den Hinweis ich habe jedoch in das Script noch eine Abfrage eingebaut die die sessionid überprüft und darüber den aktuellen Userstatus einliest. Es sollte also kein Unbefugter hierüber an Daten kommen.
Gruß,
Chris
Hi,
<input type="hidden" name="UserID" value="<?php echo $_GET['UserID']; ?>">
Dieses Problem ist nicht komisch, aber gefährlich, da über den URL-Parameter jeder beliebige (HTML- oder Javascript-) Code eingeschleust werden kann. Kennst du noch nicht die Funktion htmlspecialchars?
danke für den Hinweis ich habe jedoch in das Script noch eine Abfrage eingebaut die die sessionid überprüft und darüber den aktuellen Userstatus einliest. Es sollte also kein Unbefugter hierüber an Daten kommen.
Du hast den Einwand vermutlich nicht verstanden.
Es ist bei deinem Vorgehen moeglich, ueber manipulierte URL-Parameter - die man bspw. in Foren posten oder per Mail verschicken koennte - HTML-/Javascript-Code in deine Seite einzubauen. Wenn einer deiner Nutzer so einen Link benutzt, um die Seite aufzurufen, koennten ihm damit bspw. seine Cookies von deiner Seite "gestohlen" werden.
MfG ChrisB