Загрузка URL-адреса PHP во Flash AS3

Я работаю над онлайн-игрой в Flash AS3 и использую сервер PHP с базой данных mySQL. Я манипулирую данные в базе данных mySQL с помощью PHP, и когда я запрашиваю PHP-файл в браузере прямо из 'localhost/php/file.php' , база данных изменяется отлично. У меня есть следующий код AS3:

  public function getSite(string):Boolean{ var phpVars:URLVariables = new URLVariables(); var t:Boolean = false; /* we use the URLRequest method to get the address of our php file and attach the php vars. */ var urlRequest:URLRequest = new URLRequest(string); /* the POST method is used here so we can use php's $_POST function in order to recieve our php variables. */ urlRequest.method = URLRequestMethod.POST; /* this attaches our php variables to the url request */ urlRequest.data = phpVars; /* we use the URLLoader class to send the request URLVariables to the php file */ var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.addEventListener(Event.COMPLETE, check(t)); t = check(t); /* runs the function once the php file has spoken to flash */ /* we send the request to the php file */ urlLoader.load(urlRequest) return t; } function check(t:Boolean):Function{ return function (event:Event):Boolean{ trace(event.target.data.checkResult); if(event.target.data.checkResult == "Good"){ t = true; } else { t = false; } return t; } } 

Теперь отсюда моя « trace » показывает, что URL-адрес загружен, а вывод "Good" , однако значения базы данных не изменяются. Это файл PHP:

  <?php /* connect to our database */ include_once "connect.php"; $sql = "UPDATE accounts SET PlayersOnline = accounts.PlayersOnline + 1"; $query = mysql_query($sql) or exit("checkResult=Bad"); exit("checkResult=Good"); ?> 

Когда я 'localhost/php/gameSearch.php' к 'localhost/php/gameSearch.php' в моем веб-браузере, база данных изменяется, и мне интересно, в чем проблема.

Solutions Collecting From Web of "Загрузка URL-адреса PHP во Flash AS3"

У вас проблема с кешированием. Другими словами, результат уже запрошенного URL-адреса кэшируется для уменьшения времени ожидания и времени доступа, и то, что вы представляете, это кэшированная копия вывода, а не свежий результат, полученный в результате выполнения инструкций от имени сервера ,

Чтобы преодолеть эту проблему, вы могли бы requestHeaders заголовок no-cache в свойство requestHeaders на свой объект запроса (свойство имеет тип URLRequestHeader ). Тем не менее, время выполнения выглядит невежественным в заголовке, и оно всегда обеспечивает кешированную копию!

Однако для преодоления этой проблемы необходимо обмануть среду выполнения, как если бы вы запрашивали новый URL-адрес каждый раз, добавляя фиктивную переменную случайного значения:

 getSite("localhost/php/file.php?r="+Math.random()); 


И в отношении вашего конкретного предоставленного кода; URLLoader работает асинхронно, поэтому вы регистрируете «на полном» слушателе! t = check(t); заявляет, что вы пытаетесь «проверить» результат, пока он может быть не готов к тому времени! Вы должны проверить это, когда / после запуска слушателя. В дополнение к тому, что присваивание является синтаксически неуместным (назначение Function Boolean !) И пересмотр логики функции check !

И в PHP-коде, как предлагали другие, настоятельно не использовать устаревшую функцию mysql_query и использовать более подходящий API.