URL-соединение Flash ActionScript 3.0 работает только при тестировании и завершается неудачно при публикации

У меня есть программа (как 3.0 .swf), которая берет имя пользователя, адрес электронной почты и желаемую информацию, которую они хотят получить. Затем он создает электронное письмо и передает эти переменные на мой сервер, где php-файл отправляет его на электронное письмо, введенное пользователем. Когда я тестирую программу во флеше, она прекрасно работает. Письмо проходит прямо через. Но при экспорте программа не может подключиться. У меня есть настройка "только доступ к сети". Я также опубликовал версию AIR и HTML, и ни одна из них не работает. Я провел 2 с половиной часа в поисках и нашел людей с такой же проблемой, но без ответов. Это единственное, что мешает мне запустить программу!

Вот мой код:

import flash.events.Event;

//---------------Setup variables
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest("http://myserver/phpfile.php");


var variables:URLVariables = new URLVariables();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
req.method = URLRequestMethod.POST;
var Info:String = "";
//tab index
txName.tabIndex = 0;
txEmail.tabIndex = 1;
//listener fot textfield changes
txName.addEventListener(Event.CHANGE, txErrorCheck);
txEmail.addEventListener(Event.CHANGE, txErrorCheck);
function txErrorCheck(event:Event):void {
if (txError.text.length>0) {
    txError.text = "";
}
}
SEND.addEventListener(MouseEvent.CLICK, sendForm);
function sendForm(evt:MouseEvent):void {
if (txName.text.length<=0) {
    txError.text = "Please Enter A Name";
} else if (!txEmail.text.length || txEmail.text.indexOf("@") == -1 ||        txEmail.text.indexOf(".") == -1) {
    txError.text = "Please Enter A Valid Email!";
} else {
    mcLoader.gotoAndPlay(2);
    variables.senderName = txName.text;
    variables.senderEmail = txEmail.text;
    variables.Info = Info;
    req.data = variables;
    loader.load(req);
    loader.addEventListener(Event.COMPLETE, receiveLoad);
}
}
function receiveLoad(evt:Event):void {
if (evt.target.data.retval == 1) {
    mcLoader.gotoAndStop(25);
} else {
    mcLoader.gotoAndStop(1);
    txError.text="**  SERVER ERROR **";
}
}
//Reset form
function resetForm(evt:MouseEvent):void {
txName.text="";
txEmail.text="";
}
stop();

1 ответ

Решение

Взгляните на политику безопасности Adobe Flash. У вас должен быть междоменный XML-файл в корне вашего сервера. В режиме отладки это всегда работает, потому что безопасность пропущена.

Посмотрите на этот пост AS3 | Проблема загрузки SWF или Google об использовании файлов cross-domain.xml внутри flash.

Другие вопросы по тегам