PHP脚本不接收HTTP Post字段

pic*_*rdo 0 php flash post actionscript-3 http-headers

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

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

echo 'Mail sent to: ' . $_POST['recipientEmail'];
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,我在POST请求行中的Firebug的网络选项卡中看到了这一点:

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

recipientEmail=example@example.com
Run Code Online (Sandbox Code Playgroud)

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

Mail sent to: 
Run Code Online (Sandbox Code Playgroud)

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

你觉得这里发生了什么?脚本和swf文件都在同一个域中,服务器相同.

编辑:我刚尝试从HTML表单中访问相同的脚本,它捕获$ _POST标头.所以它只是在它被Flash发送时才捕获它.Firebug中的post标签看起来与flash有点不同:

recipientEmail  example@example.com
submit          Submit
Run Code Online (Sandbox Code Playgroud)

请注意,每个变量都在自己的行中.

编辑:这是提交提交的相关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.");
    }
Run Code Online (Sandbox Code Playgroud)

Ben*_*ank 5

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