Публикация значений по URL-адресу с помощью Flash

Я погрузился в разработку Flash и задумался, как разместить некоторые переменные в URL-адресе. Предположим, пользователь играл во флеш-игру, упакованную в виде EXE или SWF-файла, встроенного в HTML, который хранится на компьютере пользователя, а не с какой-либо веб-страницы, и хотел бы зарегистрировать счет, заполнив простую форму, указав только адрес электронной почты и нажатие кнопки.

Можно ли это сделать, даже если приложение Flash не на активной веб-странице?


person NeilC    schedule 07.12.2011    source источник


Ответы (2)


Это возможно, но вам понадобятся скрипты на стороне сервера, такие как PHP. Посетите http://www.gotoandlearn.com, чтобы получить несколько замечательных руководств.

Обычно вы создаете URLRequest для сценария на стороне сервера и отправляете с ним некоторые данные. Вы можете использовать URLVariables для передачи данных в скрипт. Затем сценарий может получать данные и сохранять их в базе данных или отправлять по электронной почте.

Это из документов Adobe: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLVariables.html

public function URLVariablesExample() {
            var url:String = "http://www.example.com/script.php";
            var request:URLRequest = new URLRequest(url);
            var variables:URLVariables = new URLVariables();
            variables.exampleSessionId = new Date().getTime();
            variables.exampleUserLabel = "guest";
            request.data = variables;
            navigateToURL(request);
        }

Со стороны PHP вы можете сделать что-то вроде этого:

$exampleSessionId = $_REQUEST['exampleSessionId'];
$exampleUserLabel = $_REQUEST['exampleUserLabel'];
$message = "Id: " . $exampleSessionId . ", Label: " . $exampleUserLabel;
mail('[email protected]', 'My Subject', $message);
person span    schedule 07.12.2011
comment
Обратите внимание, что приведенный выше код PHP является просто концептуальным примером. Входящие данные не очищаются должным образом, что открывает возможности для XSS-атак, и если они записываются в базу данных, рано или поздно произойдет SQL-инъекция. - person span; 11.12.2011

Если на веб-странице или на локальном компьютере, это тот же метод. Вы можете сделать что-то вроде:

(непроверенный код)

var request:URLRequest = new URLRequest("http://yoursite.com/yourpage.php");
request.method = URLRequestMethod.POST;     
request.data = "[email protected]&score=79597";

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, callWasMade);
loader.addEventListener(IOErrorEvent.IO_ERROR, callFailedIOError);
loader.load(request);

function callWasMade(evt:Event):void{
  //Optionally check server response
}
function callFailedIOError(evt:IOErrorEvent):void {
   //Holy crap I can't reach my server!
}
person ToddBFisher    schedule 07.12.2011