Pergunta

Sinto-me estúpido fazer esta pergunta, mas eu estive lutando com isso por horas e eu não sei para onde me virar.

Eu tenho um formulário flash que está fazendo uma solicitação POST para um script php, e, em seguida, exibe a saída do referido roteiro. Por uma questão de simplicidade, vamos dizer que este é o script php:

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

Quando eu enviar o formulário, eu vejo isso na guia net do Firebug na linha feita pela solicitação POST:

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

recipientEmail=example@example.com

Tudo muito bem na superfície. O post foi feito, ele enviou a variável direita para o script. Mas quando a resposta vem de volta, isso é o que eu vejo no meu marcador de inflamação:

Mail sent to: 

Em outras palavras, o $ _POST [ 'recipientEmail'] foi perdida após o pedido saiu do meu navegador.

O que você acha que está acontecendo aqui? Tanto o script e o arquivo SWF estão no mesmo domínio, mesmo servidor.

EDIT: Eu apenas tentei bater o mesmo script de um formulário HTML, e ele pega o cabeçalho $ _POST. Por isso, só não é captura-lo quando ele é enviado pelo Flash. A guia cargo em Firebug parece um pouco diferente do que é com flash:

recipientEmail  example@example.com
submit          Submit

Observe cada variável está em sua própria linha.

EDIT: Aqui está o código AS3 relevante que faz a apresentação:

    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.");
    }
Foi útil?

Solução

Verifique cuidadosamente os cabeçalhos para o pedido feito pelo formulário HTTP contra o pedido de seu applet flash. Num relance, o meu primeiro palpite seria que "text/html" tipo de conteúdo, o que não é correto para os dados enviados - deve ser "application/x-www-form-urlencoded". Veja você, eu nunca testei para ver se o PHP realmente se preocupa com esse detalhe particular, mas é certamente de aparência suspeita.

Outras dicas

Você pode var_dump($_POST); (ou print_r($_POST);) para ver o que ele contém?

Tente alterar o $ _POST, para US $ _REQUEST. Eu tive problemas antes, onde eu estava esperando as informações em $ _POST, mas que não iria funcionar. Mudá-lo para $ _REQUEST traz os valores para POST, GET e Cookie.

Você está usando .htaccess? Certifique-se que .htaccess não é re-escrever o seu pedido url. Se você estiver enviando para http://example.com e .htaccess é re-escrever que fosse http://example.com/ , por exemplo, você vai perder as suas variáveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top