Очень часто начинающие хотят отправить данные из флешки на сервер или загрузить во флешку данные с сервера. Всё что нужно начинающим в таком случае - это научиться использовать сервер и изучить ActionScript. Примеры кода из этого урока помогут разобраться.
ВАЖНО! Если вы планируете записывать в базу данные, полученные от пользователя или выводить их для пользователей, то уделите внимание безопасности, иначе ваш код может быть уязвим. Подробнее читайте в теме Безопасность скриптов, защита от инъекций, XSS (php, sql).
Для взаимодействия флеш приложения с сервером, на сервере должен находиться файл crossdomain.xml
Файл должен лежать в корне сайта, например http://flapps.ru/crossdomain.xml
Например, для разрешения обращаться к серверу из приложений вконтакте, crossdomain.xml должен содержать такой код:
Код: Выделить всё
<cross-domain-policy><allow-access-from domain="*.vkontakte.ru" /><allow-access-from domain="*.vk.com" /><allow-access-from domain="*.userapi.com"/><allow-access-from domain="*.vk.me"/></cross-domain-policy>
Если ваше приложение работает локально, а при загрузке вконтакт оно не получает данные, то скорее всего проблема именно в crossdomain.xml
Флеш работает с кодировкой UTF-8. Подгружаемый текст должен быть в этой кодировке. Если вместо русских букв вы видите крякозябли, а цифры и английские буквы отображаются верно, то дело в кодировке. Подробнее в теме Кодировка файлов (UTF-8, Windows-1251).
Примечание: Можно добиться чтобы текст в кодировке cp1251 тоже отображался нормально, но лучше использовать UTF-8.
Получение данных от php скрипта (метод GET)
Код: Выделить всё
var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php');loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
Код: Выделить всё
<?echo 'http://flapps.ru';?>
Если подгружать данные с одной и той же страницы, то может показаться, что приложение не получает новые данные. Дело в кэшировании!
Чтобы избежать кэширования, надо передать в get запросе дополнительный параметр, например случайное число.
Код: Выделить всё
var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php' + '?' + Math.random());loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
C помощью GET запроса можно передать данные php скрипту.
Код: Выделить всё
var gid = '17157755';var mess = 'flapps.ru'; var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php' + '?gid=' + gid + '&mess=' + mess + '&' + Math.random());loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
PHP
Код: Выделить всё
<?// получаем параметры$param1 = $_GET['gid'];$param2 = $_GET['mess']; // можно сделать что-то с полученными данными, например вывестиecho $param1;echo $param2;?>
Отправка POST запроса php скрипту, передача параметров
AS3
Код: Выделить всё
var gid = '17157755';var mess = 'flapps.ru'; var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php'); // адрес вашего скриптаrequest.method=URLRequestMethod.POST; var vars:URLVariables = new URLVariables();vars['gid']=gid;vars['mess']=mess; request.data=vars;loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
PHP
Код: Выделить всё
<?// получаем параметры$param1 = $_POST['gid'];$param2 = $_POST['mess']; // можно сделать что-то с полученными данными, например вывестиecho $param1;echo $param2;?>
Если у вас что-то не получается и вы не знаете почему, то посмотрите урок Отладка приложений, взаимодействующих с сервером (Charles).