[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Комбинация Actionscript и PHP
deceiver_ua
Привет!

наверное простой вопрос: как объединить скрипт, написанный на PHP (то есть серверную часть приложения) с swf-файлом, который отвечает за визуализацию? В PHP-файле расположены классы, которые отвечают за подключение к БД, выбор пользователя и составление запроса. При отображении одного из объектов swf, отображаемого при помощи чистого actionscript, должно происходить подключение к БД из файла php, и запускаться метод класса.



Спустя 1 час, 14 минут, 9 секунд (26.07.2010 - 18:43) ApuktaChehov написал(а):

Спустя 16 часов, 29 минут, 11 секунд (27.07.2010 - 11:13) deceiver_ua написал(а):
и нет возможности делать это без подключения внешних инструментов? возможно при применении сокетов и создания системы модели "клиент-сервер", где подключение будет осуществляться напрямую, из as?

---
хотел удалить этот коммент

Спустя 58 минут, 22 секунды (27.07.2010 - 12:11) deceiver_ua написал(а):
Цитата (ApuktaChehov @ 26.07.2010 - 15:43)
amfphp

и нет возможности делать это без подключения внешних инструментов? возможно при применении сокетов и создания системы модели "клиент-сервер", где подключение будет осуществляться напрямую, из as?

---

Спустя 1 час, 6 минут, 41 секунда (27.07.2010 - 13:18) Nord написал(а):
Можно обращаться к php-сценариям через URLLoader и получать ответ в виде текста страницы

Можно и через сокеты, но я с ними не работал

Спустя 2 часа, 31 минута, 7 секунд (27.07.2010 - 15:49) deceiver_ua написал(а):
Цитата (Nord @ 27.07.2010 - 10:18)
Можно обращаться к php-сценариям через URLLoader и получать ответ в виде текста страницы

Можно и через сокеты, но я с ними не работал

А можно с этого места чуть поподробнее? Это то, что нужно

Насколько можно делать оценку по описанию стандартного класса Socket(), передавать можно бинарные данные, текст, SWF, JPEG, GIF или PNG. Также есть аналоги URLLoader() и URLRequest, которые облажают аналогичными возможностями. Но как при этом произвести загрузку метода из класса в пхп-файле? URLLoader по-моему при этом подходит лучше всего, так как Socket имеет ограничения по политике безопасности, но как?

Спасибо

Спустя 2 часа, 8 минут, 50 секунд (27.07.2010 - 17:58) Nord написал(а):
При использовании URLLoader идея проста

Допустим, нужно передать в php файл некую переменную id и получить результат действия метода MyClass->plus4($id)

В файле login.php:
<?php
class
MyClass {
/* Некий метод: */
function plus4($id){
return $id + 4;
}
}


if (isset($_POST['id'])) {
$obj = new MyClass();
echo $obj->plus4((int)$_POST['id']);
}


В as-файле:
 
// Некие переменные, посылаемы в скрипт
var variables:URLVariables = new URLVariables();
variables.id = 5;
// Адрес скрипта
var request:URLRequest = new URLRequest("login.php");
request.data = variables;
request.method = URLRequestMethod.POST;
// Загружаем
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loaded);
loader.load(request);

function loaded(event:Event):void
{
trace(loader.data); // Результат '9'
}


Правда, важно понимать, что любой может вызвать login.php минуя вашу флешку

Правка: синтаксис + комментарии

Спустя 1 день, 21 час, 5 минут, 21 секунда (29.07.2010 - 15:03) deceiver_ua написал(а):
Если я правильно понимаю, для того чтобы as "увидел" php, необходимо после компиляции as в ide поместить результирующий swf и php в одну папку, как в вашем примере, или прописать путь

В моем случае не выводится значение параметра (id) в среде уже в отладке. полагаю, что и так должно быть, потому что сам php исполняется на сервере, и окажется связанным только при размещении на сервере и as. swf-файл компилируется успешно, однако при размещении в папку на сервере не до конца подгружается в браузере

пробовал через адресную строку вводить параметры без задействования swf, успешно, с помощью GET, не POST и отключения проверки на существования и передачу переменной id
if (isset($_POST['id']))[]

Также по условиям задачи нельзя передавать параметры через

<form action="login.php" method="post">
...
</form>

и использовать HTML, а передавать прямо из flash'а

2Nord: На данном этапе проектирования безопасность не имеет критического значения. Извиняюсь, я в этом еще новенький

Спустя 10 дней, 21 час, 47 минут, 31 секунда (10.08.2010 - 12:51) deceiver_ua написал(а):
Скрипт работает отлично, в качестве параметра переменной id экземпляра класса URLVariables передается mysql-запрос на вставку строки в таблицу бд. Единственное, что не выходит, это составление запроса на выборку и возврат результата в ide.

При попытке передать в качестве переменной объекту URLVariables() запрос типа select выскакивает ошибка:

Строка, переданная в URLVariables.decode(), должна быть строкой запроса закодированного URL-адреса и содержать пары имя/значение.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()

При попытке явно указать пару "переменная=значение" в методе URLVariables.decode() результат аналогичный. Весь код находится в обработчике события mouseDownListener(e:MouseEvent).

Огромный спасип 2Nord за шаблон
---

Спустя 7 дней, 23 часа, 20 минут, 13 секунд (18.08.2010 - 12:11) deceiver_ua написал(а):
Ошибка была в php-файле.

Может быть, кто-то знает, а как передать множество значений, массив в loader.data?

Спустя 10 часов, 25 минут, 38 секунд (18.08.2010 - 22:36) Nord написал(а):
Цитата
Может быть, кто-то знает, а как передать множество значений, массив в loader.data?

В смысле из php-файла? Обычно делают так, что php-файл возвращает xml, который дальше парсится с помощью as

Правка:
Ну а если жалко трафик, можно придумать свой формат передачи данных

Спустя 2 дня, 14 часов, 10 минут, 22 секунды (21.08.2010 - 12:47) deceiver_ua написал(а):
Придумать формат передачи данных - идея хорошая, но по-моему это все же можно передать через xml, а потом выбрать оттуда необходиммые значения

Спустя 8 месяцев, 18 дней, 8 часов, 5 минут, 45 секунд (9.05.2011 - 20:52) wlad написал(а):
Дорогой Nord!

Я попробовал согласно твоему совету. Весьма пикантно: на команду trace() мой as-файл отреагировал оригинально: он выдал текст всего файла... При этом я еще к нему приделал обязательный переход на этот же файл методом

Цитата
var adobeURL:URLRequest = new URLRequest("http://myserver.ru/login.php");
navigateToURL(adobeURL);


Ты знаешь, ничего путного не вышло. Заветная девятка не поймана... Хотя простейшие apache-команды он принимает...


Цитата

// Некие переменные, посылаемы в скрипт
var variables:URLVariables = new URLVariables();
variables.id = 5;
// Адрес скрипта
var request:URLRequest = new URLRequest("login.php");
request.data = variables;
request.method = URLRequestMethod.POST;
// Загружаем
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loaded); 
loader.load(request);

function loaded(event:Event):void
{
    trace(loader.data); // Результат '9'
}


С уважением
Влад

Спустя 28 минут, 37 секунд (9.05.2011 - 21:21) inpost написал(а):
wlad
Спустя год?! smile.gif

Спустя 15 минут, 21 секунда (9.05.2011 - 21:36) wlad написал(а):
Я смеюсь... Задачей вплотную я занимаюсь неделю...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.