Je me sens stupide en posant cette question, mais je me bats dessus depuis des heures et je ne sais pas où aller.Les champs HTTP Post ne sont pas reçus par le script PHP
J'ai un formulaire flash qui fait une requête POST à un script php, puis affiche la sortie du script. Par souci de simplicité, disons que c'est le script php:
echo 'Mail sent to: ' . $_POST['recipientEmail'];
Quand je soumets la forme, je vois cela dans l'onglet net de Firebug dans la ligne faite par la requête POST:
Referer: http://example.com/my.swf
Content-type: text/html
Content-length: 68
[email protected]
Tout va bien à la surface. Le message a été fait, il a envoyé la bonne variable au script. Mais quand la réponse revient, ce que je vois dans mon traceur Flash:
Mail sent to:
En d'autres termes, la demande $ _POST [ « recipientEmail »] a été perdue après la sortit de mon navigateur.
Que pensez-vous qu'il se passe ici? Le script et le fichier swf sont tous les deux dans le même domaine, le même serveur.
EDIT: J'ai juste essayé de frapper le même script à partir d'un formulaire HTML, et il attrape l'en-tête $ _POST. Donc, il ne l'attrape que lorsqu'il est envoyé par Flash. L'onglet de poste Firebug semble un peu différent de ce qu'il est avec flash:
recipientEmail [email protected]
submit Submit
avis chaque variable est dans sa propre ligne.
EDIT: Voici le code AS3 pertinent qui fait la soumission:
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.");
}
Utilisez-vous des frameworks ou du PHP pur? Certains cadres effacent le tableau $ _POST. – jimyi
@jimyi, non je n'utilise pas de frameworks. – picardo
J'ai juste essayé de frapper le même script à partir d'un formulaire HTML, et miraculeusement, il a attrapé l'en-tête $ _POST. Donc, il ne l'attrape que lorsqu'il est envoyé par Flash. Hm. – picardo