$_POST wird während des Scripts geleert
Kai345
- php
0 Vinzenz Mai0 ChrisB0 Tom
[latex]Mae govannen![/latex]
Ich wollte heute mein Kontaktformular mit verschiedenen Browsereinstellungen testen. Dabei habe ich auch versucht, mit deaktivierten Cookies zu testen (kann ja immer sein, daß jemand keine Cookies annehmen lässt, ich setze übrigens nur ein Session-Cookie).
Jedenfalls funktionierte das Formular nicht, mit gezielten Variablenausgaben habe ich dann schnell feststellen können, daß das $_POST-Array völlig leer bleibt. Weiterer Tests ergaben, daß $_POST gar nicht bis zur eingebundenen Ressource durchgereicht wird, sondern bereits im Hauptscript[1] verloren geht, ich konnte durch Versuche die Stelle bis auf eine Zeile eingrenzen:
kdump($_POST); // Testausgabe: Hier ist $_POST noch befüllt [2]
$co = kn::get_include_str($content);
kdump($_POST); // Testausgabe: Hier ist $_POST leer
~~~ [3]
Die aufgerufene Funktion ist eigentlich auch völlig unscheinbar:
~~~php
public static function get_include_str($filename) {
if (file_exists($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}
Wenn ich Cookies aktiviere, klappt's auch mit dem Nachb.. sorry, dem $_POST-Array.
Aber weshalb habe ich nach einem einfachen gepufferten include das $_POST-Array verloren, insbesondere nur, wenn ich Cookies abschalte? Wenn $_POST gelöscht wird, kann das Formular natürlich nie abgeschickt werden, nicht sehr benutzerfreundlich.
Ich habe es lokal und auf meinem Webspace jeweils mit FF3 und Opera getestet, daher dürften Browser und lokale PHP-Konfiguration keinen Einfluss haben.
[1] Vereinfachtes Grundkonzept ist folgendes:
[2]
array(12) {
...
}
[3]
array(0) {
}
Cü,
Kai
P.S: Die Ersetzungs-Vorschläge der Software für das Wort Webspace => Weißkäse, Verspaße und Fehlpässe, finde ich irgendwie *g*
Hallo Kai,
ich konnte durch Versuche die Stelle bis auf eine Zeile eingrenzen:
eine Zeile? Viele Zeilen!
kdump($_POST); // Testausgabe: Hier ist $_POST noch befüllt [2]
$co = kn::get_include_str($content);
kdump($_POST); // Testausgabe: Hier ist $_POST leer
>
> Die aufgerufene Funktion ist eigentlich auch völlig unscheinbar:
>
> ~~~php
public static function get_include_str($filename) {
> if (file_exists($filename)) {
> ob_start();
> include $filename;
enthält nicht zufällig [code lang=php]$_POST = array();
~~~ oder ähnliche Scherze?
> return ob\_get\_clean();
> }
> return false;
> } [/code]
Grenze es weiter ein:
- Geh' mit der Testausgabe in Deine Funktion (erwarte ich keinen Unterschied).
- Geh' mit der Testausgabe in die Include-Datei (da aber wohl),
die in Deinem Test aufgerufen wird.
Superglobale verlieren nicht einfach so ihren Inhalt. Ich bin mir recht sicher, dass Du selbst dafür verantwortlich bist.
Freundliche Grüße
Vinzenz
[latex]Mae govannen![/latex]
Superglobale verlieren nicht einfach so ihren Inhalt. Ich bin mir recht sicher, dass Du selbst dafür verantwortlich bist.
Ja, hab's gefunden. Falsche Bedingungs-Verzweigung. Manchmal ist man blöd :(
Danke an Alle.
Cü,
Kai
[latex]Mae govannen![/latex]
UPPS, ich wollte doch noch den Betreff ändern :( Hiermit nachgeholt.
Cü,
Kai
Hi,
kdump($_POST); // Testausgabe: Hier ist $_POST noch befüllt [2]
$co = kn::get_include_str($content);
kdump($_POST); // Testausgabe: Hier ist $_POST leer
Und in $content steht was?
> Aber weshalb habe ich nach einem einfachen gepufferten include das $\_POST-Array verloren, insbesondere nur, wenn ich Cookies abschalte?
Das solltest du vielleicht erst mal das Script fragen, dessen Name in $content steht.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Hello,
$co = kn::get_include_str($content);
Wann und wodurch wird denn die Klasse kn geladen?
Was enthält sie?
Wie sieht ihr Contructor aus?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg