2013-03-13 24 views
12

Ich versuche, ein einfaches Login-System mit <form method="post"> zu bauen. Alles funktioniert gut auf MAMP auf meinem Laptop, aber wenn ich das Skript auf den Server (Windows) hochlade, funktioniert es nicht; Es scheint, dass das Array $ _POST leer ist.

Ich habe alles außer den Nackten auskommentiert und es funktioniert immer noch nicht.

index.php:

<form id="login-form" method="POST" action="_scripts/check_login.php"> 
Email Address 
<input name="login-email" type="text" id="login-email"> 
Password 
<input name="login-password" type="text" id="login-password"> 
<input type="submit" name="Submit" id="login-button" value="Login"> 
</form> 

_scripts/check_login.php: (I alles außer einigen var_dumps für das Debuggen entfernt haben)

var_dump($_POST); 

$loginEmail = trim($_POST['login-email']); 
echo '<br>'; 
$loginPassword = ($_POST['login-password']); 
var_dump($loginEmail); 
echo '<br>'; 
var_dump($loginPassword); 

Wenn übermittle ich das Formular aus, egal, was ich legte in den Textfeldern, sehe ich:

array(0) { } 
string(0) "" 
NULL 

Wenn ich alle Instanzen von „post“ zu „erhalten“ in der ein bove zwei Dateien, alles funktioniert gut. Aber ich möchte nicht nutzen. ($ _REQUEST funktioniert auch nicht, wenn ich das Formular mit method = "post" abschicke).

NB das alles funktioniert gut auf localhost, aber nicht auf dem Server (der Windows läuft.) So scheint es ein Problem mit dem Server sein, aber ich habe keine Ahnung, was. Sie können die PHPInfo hier sehen: http://brailleapps.org/phpinf0.php

Irgendwelche Ideen?

BEARBEITEN: Gelöst! Siehe unten.

+0

Was bedeutet '$ _SERVER' enthalten für POST-Anfragen? Hast du einen Enctype versucht? Ist der FastCGI-Client berechtigt, das [POST-Verb für IIS] zu empfangen (http: // stackoverflow.com/questions/313188/leer-post-array-in-php-5-2-6-iis-cgi)? – mario

+0

hatten wir das gleiche Problem, aber Ajax Beitrag funktioniert nicht sobald wir Live-Server bewegt. Nach langem Kampf haben wir festgestellt, dass das Mod-Rewrite-Modul des Servers ausgeschaltet war. Einmal eingeschaltet, ist alles in Ordnung. Überprüfen Sie das. Aber nach meinem Wissen gibt es keine Beziehung mit POST und Mod-Rewrite. Versuchen Sie es einfach. – Samy

+3

Dies könnte ein Problem mit dem Inhaltstyp sein. Wenn kein Inhaltstyp neu dekodiert wird oder fehlt, ist '$ _POST' leer. Versuchen Sie, 'if (leer ($ _ SERVER ['CONTENT_TYPE'])) {$ _SERVER ['CONTENT_TYPE'] =" application/x-www-form-urlencoded ";}' zu setzen. Und was bedeutet 'var_dump (file_get_contents ('php: // input'));' sagen? – Quasdunk

Antwort

3

Ich habe es feste schließlich, Figur, die ich könnte genauso gut nach, was hier falls jemand gearbeitet anderes das gleiche Problem hat in der Zukunft.

Stellt sich eine dieser HTTP-Module geführt, mit der POST zu stören:

RadCompression
RadUploadModule

Mit diesen Modulen ausgeschaltet, POST hat gut funktioniert.

(NB war dies auf einer völlig neuen App, wo ich wusste, dass es keinen vorhandenen Code gab, der von einem dieser Module abhängen könnte ... das Ausschalten kann unbeabsichtigte Folgen haben, die ich nicht kenne, YMMV .)

0

Ich hatte das gleiche Problem mit $ _POST ist leer/NULL, und nach 30 Minuten Suche nach SO und Google fand ich endlich eine Lösung, die für mich funktionierte.

Da ich weiß nicht, wie die Datei php.ini für MAMP ändern bearbeiten ich meine .htaccess dies ist:

php_value post_max_size 60M 
php_value upload_max_filesize 60M 

und ich kann jetzt gut ($ _ POST) mit der eingereichten Eingabe var_dump.

Referenz Link: http://helpfulcoder.blogspot.ca/2011/01/empty-post-array-in-mamp.html

Verwandte Themen