Доброй ночи!
Никак не могу понять суть проблемы. Есть сервер Apache+Nginx+php5.6, есть простейший скрипт:
<?php
if ($_GET['ok']==''){
echo "<form action='?ok=ok' method='post'>
<input type='text' name='login' placeholder='Логин'><br>
<input type='text' name='password' placeholder='Пароль'><br>
<input type='submit' value='OK'><br>
</form>";
}else{
echo $_POST['login'];
}
?>
На локалке всё работает, на серваке в инете - нет.
Пробовал выключать register_globals, в волшебные кавычки лазил, не знаю зачем, но уже просто нет идей в чём проблема.
Подскажите, пожалуйста, почему у меня не передаются данные методом POST... Если выбрать метод GET, то всё работает.
UPD
Поиск показал, что массив $_POST пустой.
Через .htaccess и php.ini менял разные значения: от регистр_глобался до php_flag enable_post_data_reading On и php_value variables_order "GPCS"
phpinfo() говорит, что все настройки именно такие.
Через php://input данные видны.
var_dump($_SERVER); показывает, что REQUEST_METHOD => GET. А должен быть POST.
Удалось заставить всё работать через хак:
$postdata = file_get_contents("php://input");
$postdata=explode('&', $postdata);
foreach ($postdata as $k=>$v){
$v=explode('=', $v);
$_POST[$v[0]]=urldecode($v[1]);
}
Выглядит ужасно, но хотя бы работает. Очень нужно дать клиенту доступ к админке сайтом... Данные для авторизации приходят методом POST, а массив $_POST пустой, вот и извращаюсь как могу.
Получается, что проблема в связке apache+nginx, ведь так?