PHP $ _POST Variablen sind manchmal leer

8

Ich bin ein PHP-Neuling und habe ein Problem mit der POST-Variablen, die manchmal leer ist, wenn ich sie einschicke. Der Teil, der es für mich schwierig macht herauszufinden, ist, dass dies nicht jedes Mal passiert, und ich kann die Post-Daten in meinem PHP-Programm normalerweise durch einfaches Aktualisieren der Seite erhalten. Manchmal wird es ein paar Mal dauern, aber sobald die Daten einmal durchgelaufen sind, wird es weiterhin gut durchkommen.

Andere PHP-Anwendungen (Wordpress und andere) funktionieren gut und geben keine Fehler, daher bin ich ziemlich sicher, dass es ein Problem mit meiner PHP-App gibt.

Ich habe PHP 4.2.9 auf einem CentOS 5.2 Server installiert und KeepAliveTimeout auf 1 gesetzt.

Der Code für die App, in der ich die übermittelten Daten verarbeite:

%Vor%

Jede Hilfe wäre willkommen

Bearbeiten: Ich habe einen Unterschied zwischen den Postanforderungen und den fehlgeschlagenen gefunden. Firebug sagt mir, dass, wenn der Beitrag fehlschlägt, der Status eine 302-Weiterleitung statt 200 ok ist. Ich bin nicht wirklich sicher, was das verursachen kann, aber ich habe das Header-Cache-Steuerelement im Formular senden, so wie es im obigen Code-Snippet erscheint.

Irgendwelche Ideen?

    
Marc 04.12.2009, 12:33
quelle

4 Antworten

7

Sie haben den Parameter name = auf Ihrem INPUT-Tag vergessen.

%Vor%     
user603749 05.02.2011 23:00
quelle
0

Sie könnten die Variable $ _REQUEST überprüfen, die eine Kombination aus $ _POST- und $ _GET-Arrays ist. Wenn die Variablen nicht vorhanden sind, wurden sie nicht gesendet und das Problem liegt wahrscheinlich auf der Client-Seite.

Sie können Tools zum Analysieren des Netzwerkverkehrs verwenden, z. Firebugs Net Tab, um zu sehen, was tatsächlich an den Server gesendet wurde.

    
Gergely Orosz 04.12.2009 12:48
quelle
0

Die Variable $_POST wird von der PHP-Engine und nicht von irgendeiner Anwendung gefüllt. Also, wenn es leer ist, ist es einfach leer und Ihr Code muss dies berücksichtigen, genauso wie Sie es bereits für die Variablen $_SESSION und $_SERVER tun.

    
Elise van Looij 04.12.2009 12:59
quelle
0
%Vor%

Standardmäßig wird auch der Statuscode 302 gesendet. Die meisten Browser fordern das Ziel eines 302 mit einer GET-Anfrage an, unabhängig vom ursprünglichen Anfragetyp. Wenn Sie möchten, dass beide Anfragen die POST-Daten enthalten, können Sie eine 307 versuchen:

%Vor%

Aber vielleicht funktioniert das nicht in allen Browsern (es sollte in etwas nicht altem funktionieren). Vielleicht möchten Sie Ihre Logik hier noch einmal überprüfen, aber es ist nicht normal, dass Clients doppeltes POST erfordern.

Ist Ihnen auch bekannt, dass Sie $_SESSION['username'] gelesen haben, aber nicht darauf zu schreiben scheinen?

    
ZoFreX 05.02.2011 23:26
quelle

Tags und Links