Pytanie PHP $ _POST nie działa, ale $ _GET działa poprawnie


Próbuję zbudować prosty system logowania za pomocą <form method="post">. Wszystko działa poprawnie na MAMP-ie na moim laptopie, ale kiedy ładuję skrypt na serwer (Windows), to nie działa; wydaje się, że tablica $ _POST jest pusta.

Skomentowałem wszystko oprócz nagich kości i nadal nie działa.

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: (Usunąłem wszystko z wyjątkiem niektórych var_dumps do debugowania)

var_dump($_POST);

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

Kiedy przesyłam formularz, bez względu na to, co umieściłem w polach tekstowych, widzę to:

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

Jeśli zmienię wszystkie wystąpienia "post" na "get" w powyższych dwóch plikach, wszystko działa poprawnie. Ale nie chcę używać get. ($ _REQUEST nie działa, jeśli przekażę formularz za pomocą metody = "post").

Uwaga: wszystko działa dobrze na lokalnym hoście, ale nie na serwerze (na którym działa Windows.) Więc wydaje się, że jest to problem z serwerem, ale nie mam pojęcia co. Możesz zobaczyć PHPInfo tutaj: http://brailleapps.org/phpinf0.php

Jakieś pomysły?

EDYCJA: rozwiązany! Zobacz poniżej.


12
2018-03-13 13:02


pochodzenie


Co robi $_SERVER zawierają dla wniosków POST? Czy próbowałeś entype? Czy klient FastCGI jest uprawniony do otrzymania POST czasownik dla IIS? - mario
mieliśmy ten sam problem, ale poczta ajax nie działała, kiedy przenieśliśmy się na serwer live. Po długich zmaganiach odkryliśmy moduł modowania przerobionego przez serwer wyłączony. Po włączeniu wszystko jest w porządku. Więc sprawdź. Ale jak na moją wiedzę nie ma związku z POST i mod przepisać. Tylko spróbuj. - Samy
Może to być problem z typem treści. Jeśli żaden typ zawartości nie jest rozpoznany lub go brakuje, to $_POST jest pusty. Spróbuj ustawić if(empty($_SERVER['CONTENT_TYPE'])) {$_SERVER['CONTENT_TYPE'] = "application/x-www-form-urlencoded";}. I co robi var_dump(file_get_contents('php://input')); mówić? - Quasdunk
Sprawdź ten wątek: stackoverflow.com/questions/9914979/php-post-not-working - dozed
Czy możesz sprawdzić zmienną _SERVER ["REQUEST_METHOD"], aby upewnić się, że została skutecznie wysłana jako Post? - Pedrom


Odpowiedzi:


W końcu go naprawiłem, ale równie dobrze mógłbym napisać, co tu działało na wypadek, gdyby ktoś inny miał ten sam problem w przyszłości.

Okazuje się, że jeden z tych modułów HTTP zakłócał POST:

RadCompression
RadUploadModule

Po wyłączeniu tych modułów POST działało dobrze.

(Uwaga: to była zupełnie nowa aplikacja, w której wiedziałem, że nie ma żadnego istniejącego kodu, który mógłby być zależny od jednego z tych modułów ... wyłączenie ich może mieć niezamierzone konsekwencje, o których nie wiem, YMMV.)


4
2018-04-17 08:07



jak wyłączyć te moduły w MAMP, czy możesz wyjaśnić, jak to działa - rajarajan2809


Jedną z możliwości jest to, że POST nie jest dozwolonym czasownikiem na serwerze:

http://www.iis.net/configreference/system.webserver/security/requestfiltering/verbs


2
2018-03-13 13:06



Ten artykuł dotyczy IIS; pytanie dotyczy Apache. - Kermit
DOH. Zbyt szybko przeczytałem to pytanie. Widziałem Windows i założyłem IIS. - Bart
@AarolamaBluenk - PHPinfo mówi z niemal całkowitą pewnością, że to IIS. - slugonamission
Rzeczywiście tak. Microsoft-IIS / 7.5. - Bart
Meh, utrzymuj ten komentarz przy życiu, podejrzewam, że pomógłoby to komuś na linii. - Duniyadnd


Miałem ten sam problem z $ _POST będącym pustym / NULL, a po spędzeniu 30 minut na wyszukiwaniu SO i Google znalazłem wreszcie rozwiązanie, które działało dla mnie.

Ponieważ nie wiem, jak zmienić plik php.ini dla MAMP, edytowałem mój htaccess, aby uwzględnić to:

php_value post_max_size 60M
php_value upload_max_filesize 60M

i I może var_dump ($ _ POST) z przedłożonym grzywny wejściowej teraz.

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


0
2017-09-18 18:04