Отправка из IE8 в PHP дает пустое $ _POST - PullRequest
5 голосов
/ 10 декабря 2010

У меня есть простая форма HTML, отправляющая запрос на публикацию в скрипт php. В IE8 форма работает только периодически - большую часть времени PHP-скрипт видит пустую переменную $ _POST.

Вот мой код:

<code><html>
<head>
<title>Post test</title>
</head>
<body style="text-align: center;">
<?php

echo "<pre>".print_r($_POST, TRUE)."
"; ?> " method = "post">

Иногда print_r дает ожидаемый ответ (т. Е. Он заполнен данными из формы), в большинстве случаев он пустой.

Отсутствие возможности использовать POST представляет собой небольшую проблему для веб-приложений - у кого-нибудь есть идеи, что происходит и как это исправить?

Ответы [ 5 ]

2 голосов
/ 13 декабря 2010

Спасибо всем за помощь в этом.

Оказывается, проблема заключается в модуле Apache, который я включил.

Это модуль, позволяющий apache использовать проверку подлинности Windows для идентификации пользователя по его идентификатору пользователя Windows - mod_auth_sspi

Эффект вызван известной ошибкой в ​​модуле, но с помощью простой дополнительной директивы это можно обойти, пока исправление не будет добавлено в следующем обновлении, как описано здесь:

http://sourceforge.net/projects/mod-auth-sspi/forums/forum/550583/topic/3392037

1 голос
/ 10 декабря 2010

Звучит очень, очень странно. Это происходит и в других версиях IE?

Я не могу сказать вам, в чем проблема, но вот мои предложения о том, как ее диагностировать:

  1. Печать $_REQUEST, а не просто $_POST, чтобы увидеть, поступают ли данные другим способом.

  2. Используйте такой инструмент, как Fiddler или Wireshark , чтобы точно отслеживать, что на самом деле отправляется браузером.

Fiddler, в частности, был очень полезен для меня несколько раз (в основном при отладке кода Ajax), и он точно скажет вам, что было опубликовано браузером. Если ваш веб-сервер - localhost, вы также можете использовать Fiddler для отслеживания того, что получено, прежде чем PHP получит его. Если нет, вы можете использовать wireshark на сервере, если у вас есть права на установку такого рода вещей.

В дополнение к Fiddler, я бы предложил браузерный инструмент, такой как Firebug, но я не знаю ни одного для IE, который достаточно хорош (панель инструментов разработчика IE не дает вам подробную информацию о запросах и ответах). насколько я знаю).

0 голосов
/ 12 декабря 2010

Вы проверили сгенерированный HTML? Возможно ли, что echo $_SERVER['PHP_SELF'] не производит вывод, который вы ищете, что портит форму html и портит POST?

0 голосов
/ 12 декабря 2010

Если вы публикуете файл некоторое время (то есть с помощью ввода файла), убедитесь, что вы установили enctype="multipart/form-data" в элементе <form>.

0 голосов
/ 10 декабря 2010

Я подозреваю, что когда скрипт сообщает вам, что $ _POST пуст, вы фактически не отправляли форму. Вы можете проверить, добавив print($_SERVER['REQUEST_METHOD']); после вашего print_r($_POST);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...