2013-03-13 2 views
12

Я пытаюсь создать простую систему входа, используя <form method="post">. Все работает отлично на MAMP на моем ноутбуке, но когда я загружаю скрипт на сервер (Windows), он не работает; кажется, что массив $ _POST пуст.

Я прокомментировал все, кроме голых костей, и он все еще не работает.

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: (Я удалил все, кроме некоторых var_dumps для отладки)

var_dump($_POST); 

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

Когда я отправить форму, независимо от того, что я положить в текстовых полях, я вижу это:

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

Если изменить все экземпляры «пост», чтобы «получить» в а bove два файла, все работает отлично. Но я не хочу использовать get. ($ _REQUEST не работает, если я отправлю форму, используя метод = "post").

NB это все работает нормально на локальном хосте, но не на сервере (на котором работает Windows.) Таким образом, это будет проблемой с сервером, но я понятия не имею, что. Вы можете увидеть PHPInfo здесь: http://brailleapps.org/phpinf0.php

Любые идеи?

EDIT: Решено! Смотри ниже.

+0

Что '$ _SERVER' содержат запросы POST? Вы пробовали enctype? Клиенту FastCGI разрешено получать [POST-глагол для IIS] (http: // stackoverflow.ком/вопросы/313188/пустого пост-массив-в-PHP-5-2-6-МИС-CGI)? – mario

+0

у нас была такая же проблема, но пост ajax не работал, как только мы переехали на сервер. После долгой борьбы мы обнаружили, что модуль mod rewrite сервера отключен. После включения все в порядке. Убедитесь, что. Но, насколько мне известно, нет никакого отношения к POST и mod rewrite. Просто попробуйте. – Samy

+3

Возможно, это проблема с типом контента. Если тип содержимого не распознается или он отсутствует, то '$ _POST' пуст. Попробуйте установить 'if (empty ($ _ SERVER ['CONTENT_TYPE'])) {$ _SERVER ['CONTENT_TYPE'] =" application/x-www-form-urlencoded ";}'. И что делает 'var_dump (file_get_contents ('php: // input')),' say? – Quasdunk

ответ

3

я получил это фиксированный в конце концов, фигура, я мог бы также после того, что работал здесь, в случае, если кто-то имеет такую ​​же проблему в будущем.

Оказывается один из этих модулей HTTP был мешая POST:

RadCompression
RadUploadModule

С помощью этих модулей выключен, POST работал нормально.

(NB это было в совершенно новом приложении, где я знал, что не существует какого-либо существующего кода, который мог бы зависеть от одного из этих модулей ... отключение их может иметь непреднамеренные последствия, о которых я не знаю, YMMV .)

2

Одна возможность состоит в том, что POST не разрешенным глагол на сервере:

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

+0

Эта статья посвящена IIS; вопрос об Apache. – Kermit

+0

DOH. Я слишком быстро прочитал этот вопрос. Я видел Windows и предполагал IIS. – Bart

+1

@AarolamaBluenk - PHPinfo говорит с почти уверенностью, что это IIS. – slugonamission

0

У меня была такая же проблема, когда $ _POST был пустым/NULL, и, проведя 30 минут поиска SO и Google, я наконец нашел решение, которое сработало для меня.

Поскольку я не знаю, как изменить файл php.ini для MAMP Я отредактировал мой HTAccess включить это:

php_value post_max_size 60M 
php_value upload_max_filesize 60M 

и я могу var_dump ($ _ POST) с представленным входом хорошо сейчас.

Ссылка ссылка: http://helpfulcoder.blogspot.ca/2011/01/empty-post-array-in-mamp.html

Смежные вопросы