PHP脚本不接收HTTP Post字段

时间:2009-09-14 16:40:33

标签: php flash actionscript-3 post http-headers

我觉得这个问题很愚蠢,但我已经和它搏斗了好几个小时,我不知道还有什么地方可以转。

我有一个flash表单,它正在向php脚本发出POST请求,然后显示所述脚本的输出。为简单起见,我们假设这是php脚本:

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

当我提交表单时,我会在POST请求行所在的Firebug的网络标签中看到这一点:

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

recipientEmail=example@example.com

表面上一切都很好。帖子已经发布,它将正确的变量发送到脚本。但是当响应回来时,这就是我在Flash跟踪器中看到的内容:

Mail sent to: 

换句话说,请求退出浏览器后,$ _POST ['recipientEmail']已丢失。

您认为这里发生了什么?脚本和swf文件都在同一个域中,服务器相同。

编辑:我刚尝试从HTML表单中访问相同的脚本,它捕获了$ _POST标头。所以它只是在它被Flash发送时才捕获它。 Firebug中的post标签看起来与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 个答案:

答案 0 :(得分:5)

根据Flash小程序的请求,仔细检查HTTP表单请求的标头。乍一看,我的第一个猜测是“text/html”内容类型,这对于发送的数据不正确 - 应该是“application/x-www-form-urlencoded”。请注意,我从未测试过PHP 实际是否关心这个特定的细节,但它肯定是可疑的。

答案 1 :(得分:0)

您可以var_dump($_POST);(或print_r($_POST);)查看其中包含的内容吗?

答案 2 :(得分:0)

尝试将$ _POST更改为$ _REQUEST。在我期待$ _POST中的信息之前,我遇到了问题,但它不起作用。将其更改为$ _REQUEST会带来POST,GET和COOKIE的值。

答案 3 :(得分:0)

你在使用.htaccess吗?确保.htaccess不会重写您的请求网址。如果您要发送到http://example.com并且.htaccess会将其重新编写为http://example.com/,例如,您将丢失变量。