Публикувайте стойности в URL с помощта на Flash

Потопих пръстите си в разработването на Flash и се чудех как да публикувам някои променливи в URL адрес. Да приемем, че потребителят е играл Flash игра, пакетирана като 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