Поля HTTP Post не принимаются скриптом PHP - PullRequest
0 голосов
/ 14 сентября 2009

Я чувствую себя глупо, задавая этот вопрос, но я боролся с ним часами, и я не знаю, куда еще обратиться.

У меня есть флэш-форма, которая выполняет запрос POST к php-скрипту, а затем отображает вывод указанного скрипта. Для простоты предположим, что это PHP-скрипт:

echo 'Mail sent to: ' . $_POST['recipientEmail'];

Когда я отправляю форму, я вижу это на сетевой вкладке Firebug в строке, сделанной запросом POST:

Referer: http://example.com/my.swf
Content-type: text/html
Content-length: 68

recipientEmail=example@example.com

Все хорошо на поверхности. Пост сделан, он отправил правильную переменную в скрипт. Но когда ответ возвращается, вот что я вижу в своей трассировке Flash:

Mail sent to: 

Другими словами, $ _POST ['receientEmail'] был потерян после того, как запрос вышел из моего браузера.

Как вы думаете, что здесь происходит? Сценарий и файл swf находятся в одном домене и на одном сервере.

РЕДАКТИРОВАТЬ: Я только что попытался нажать тот же сценарий из формы HTML, и он ловит заголовок $ _POST. Так что это только не ловит его, когда он отправляется Flash. Вкладка «Пост» в Firebug выглядит немного иначе, чем в Flash:

recipientEmail  example@example.com
submit          Submit

Обратите внимание, что каждая переменная находится в отдельной строке.

РЕДАКТИРОВАТЬ: Вот соответствующий код AS3, который делает представление:

    var _gateway:String = Share.getGateway();
    var request:URLRequest;
    var variables:URLVariables = new URLVariables();
    var loader:URLLoader = new URLLoader();     

    request  = new URLRequest(_gateway);
    request.contentType = 'text/html';
    request.method = URLRequestMethod.POST;


    variables.senderName = senderName.text;
    variables.recipientEmail = recipientEmail.text;
    variables.senderMessage = senderMessage.text;

    request.data = variables;

    try {
                 loader.load(request);
    }catch (error:Error) {
         Debug.trace("Unable to load requested document.");
    }

Ответы [ 4 ]

5 голосов
/ 14 сентября 2009

Тщательно проверяйте заголовки запроса HTTP-формы на запрос вашего апплета Flash. На первый взгляд, мое первое предположение - тип контента "text/html", который не подходит для отправляемых данных - это должно быть "application/x-www-form-urlencoded". Имейте в виду, я никогда не проверял, заботится ли PHP на самом деле об этой конкретной детали, но он, безусловно, выглядит подозрительно.

0 голосов
/ 14 сентября 2009

Вы используете .htaccess? Убедитесь, что .htaccess не переписывает URL вашего запроса. Если вы отправляете на http://example.com, а .htaccess переписывает его, например, на http://example.com/,, вы потеряете свои переменные.

0 голосов
/ 14 сентября 2009

Попробуйте изменить $ _POST на $ _REQUEST. До этого у меня были проблемы, когда я ожидал информацию в $ _POST, но она не сработала. Изменение его на $ _REQUEST приводит к значениям POST, GET и COOKIE.

0 голосов
/ 14 сентября 2009

Можете ли вы var_dump($_POST); (или print_r($_POST);) увидеть, что в нем содержится?

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