Передача переменных из flash в PHP

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Передача переменных из flash в PHP

Сообщение monax »

здравствуйте.

Такой вопрос, как передать методом POST переменные от приложения к обробатывающему скрипту.

Давайте на примере:

Допустим есть переменная: var peremen = "blabla";

как ее можно отправит php скрипту, чтобы он мог принят ее так: $php_peremen = $_POST['peremen'];
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

Всем еще раз привет!

Вобще я время не терял, и пока жду ответа ковыряю поиск. Моих знаний и найденого в поиске хватило на следующее:

Код: Выделить всё

var api_id:Number=хххххх;// id вашего приложения
var api_secret:String="ххххххх";// секретный ключ
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var viewer_id:Number;
var sig:String;
var uid:String;

var params:Object=LoaderInfo(root.loaderInfo).parameters;
viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
getProfile(viewer_id);

function getProfile(uid):void {
   sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
   var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
   loader.load(request);
   loader.addEventListener(Event.COMPLETE, onComplete1);
}

function onComplete1(event:Event):void {
externalXML=new XML(loader.data);

      var fname=externalXML..first_name;
 //     fname_txt.text=fname;
	  
 //	  var lname=externalXML..last_name;
 //    lname_txt.text=lname;
	    
 //	  var uid=externalXML..uid;
 //     id_txt.text=uid;
}

var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest("http://localhost/vkapp/target.php");
URL_request.method = URLRequestMethod.POST;

//формируем строку, которая будет отправлена
var email_data:String = "name=" + fname.text;
 
var URL_vars:URLVariables = new URLVariables(email_data);
//URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
URL_request.data = URL_vars;
var_load.load( URL_request );
вобщем это очень кривой и баганный код, который всетаки кое как работает. Не работает в нем лишь одна строчка:

var email_data:String = "name=" + fname;

точнее на нее ругается компилятор: 1120: Access of undefined property fname.

Если же взять просто вот этот кусок

Код: Выделить всё

var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest("http://localhost/vkapp/target.php");
URL_request.method = URLRequestMethod.POST;

//формируем строку, которая будет отправлена
var email_data:String = "name=" + fname;
 
var URL_vars:URLVariables = new URLVariables(email_data);
//URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
URL_request.data = URL_vars;
var_load.load( URL_request );
и задать ему переменную fname, var fname="asdasd"; то он отправит запрос на пхп скрипт.

Я понимаю эта ошибка происходит из-за разницы типов переменных, но как это решить я не знаю и надеюсь на вашу помошь)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Передача переменных из flash в PHP

Сообщение Александр »

Переменная fname у тебя объявлена в функции onComplete1, а за пределами функции ты пишешь fname.text - это наверно текстовое поле, а чуть ниже пишешь пример с переменной fname.
Используй какие-то обозначения, чтобы не путаться в именах. Например fname_tf (tf - textfield - текстовое поле). Так будет понятнее.

Как передавать переменный из флеша php скриптую можешь посмотреть в этой теме http://flapps.ru/forum/topic165.html
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

извеняюсь за ошибки с переменными, копировал код когда пытался понять что не так..... дописывал разный бред.
сейчас исправлю, спасибо за ссылку... попытаюсь разобратся.
зы; А ты долго еще онлайн будешь?
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

такая же проблемма:

Взял кусок твоего кода:

Код: Выделить всё

var stat_loader:URLLoader = new URLLoader();
var stat_request:URLRequest=new URLRequest("http://localhost/vkapp/target.php"); // заменяем на ссылку к вашему скрипту
stat_request.method=URLRequestMethod.POST;
var fname = "123123123asd";  // изменил
// добавление параметров в запрос
var stat_vars:URLVariables = new URLVariables();
stat_vars['viewer_id']=fname; // изменил
stat_request.data=stat_vars;
// выполнение запроса
stat_loader.load(stat_request);
Немного изменив его. Так он работает.

Но если дописать в него следующее:

Код: Выделить всё

var api_id:Number=ххххх;// id вашего приложения
var api_secret:String="ххххх";// секретный ключ
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var viewer_id:Number;
var sig:String;
var uid:String;

var params:Object=LoaderInfo(root.loaderInfo).parameters;
viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
getProfile(viewer_id);

function getProfile(uid):void {
   sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
   var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
   loader.load(request);
   loader.addEventListener(Event.COMPLETE, onComplete1);
}

function onComplete1(event:Event):void {
externalXML=new XML(loader.data);

      var fname=externalXML..first_name;
 //     fname_txt.text=fname;
	  
 //	  var lname=externalXML..last_name;
 //    lname_txt.text=lname;
	    
 //	  var uid=externalXML..uid;
 //     id_txt.text=uid;
}
var stat_loader:URLLoader = new URLLoader();
var stat_request:URLRequest=new URLRequest("http://localhost/vkapp/target.php"); // заменяем на ссылку к вашему скрипту
stat_request.method=URLRequestMethod.POST;

// добавление параметров в запрос
var stat_vars:URLVariables = new URLVariables();
stat_vars['viewer_id']=fname; // ID просматривающего приложение
stat_request.data=stat_vars;
// выполнение запроса
stat_loader.load(stat_request);
то компилятор опять же ругается на сторку stat_vars['viewer_id']=fname; // ID просматривающего приложение

1120: Access of undefined property fname.
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

Извеняюсь за свою глупость. С ошибкой разобрался. Можешь взглянуть на этот код:

Код: Выделить всё

var api_id:Number=743131;// id вашего приложения
var api_secret:String="sE4VLBDdSQ";// секретный ключ
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var viewer_id:Number;
var sig:String;
var uid:String;

var params:Object=LoaderInfo(root.loaderInfo).parameters;
viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
getProfile(viewer_id);

function getProfile(uid):void {
   sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
   var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
   loader.load(request);
   loader.addEventListener(Event.COMPLETE, onComplete1);
}

function onComplete1(event:Event):void {
externalXML=new XML(loader.data);

      var fname=externalXML..first_name;
 //     fname_txt.text=fname;
	  
 //	  var lname=externalXML..last_name;
 //    lname_txt.text=lname;
	    
 //	  var uid=externalXML..uid;
 //     id_txt.text=uid;


}
И сказать насколько допустим такой вариант вытаскивание Имени и фамилии, а также на сколько он касячный и как можно его изменить.
Может какойнибудь более простой вариант под рукой есть?
Спасибо за помощь.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Передача переменных из flash в PHP

Сообщение Александр »

monax
Ты проверил? Работает?
В функции onComplete1, после вытаскивания имени отправляй данные на сервер.

Код: Выделить всё

function onComplete1(event:Event):void {
externalXML=new XML(loader.data);
var fname=externalXML..first_name;
var stat_loader:URLLoader = new URLLoader();
var stat_request:URLRequest=new URLRequest("http://localhost/vkapp/target.php"); // заменяем на ссылку к вашему скрипту
stat_request.method=URLRequestMethod.POST;
// добавление параметров в запрос
var stat_vars:URLVariables = new URLVariables();
stat_vars['fname']=fname;
stat_request.data=stat_vars;
stat_loader.load(stat_request);
}
В php получать так:

Код: Выделить всё

$php_peremen = $_POST['fname'];
fname берётся из этой части stat_vars['fname']. То есть если изменишь fname здесь, то и в $_POST['fname'] тоже нужно будет изменить.
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

Да, во всем разобрался и все работает.

А такой вопрос, немного не в тему: как удалить приложение у пользователей, которые его уже установили ??
monax
Сообщения: 33
Зарегистрирован: 13 дек 2009, 23:23

Re: Передача переменных из flash в PHP

Сообщение monax »

Привет еще раз, появился небольшой вопросик, не стал создавать новую тему.

Собственно вопрос: Как передать переменную из PHP скрипта в flash?
Немного покопав инет нащел что php файл должен быть такго вида:

Код: Выделить всё

<?php
// какой-то код
echo 'peremen1=znachenie1';


а что должно быть в принимающем as3 скрипте?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Передача переменных из flash в PHP

Сообщение Александр »

monax писал(а):А такой вопрос, немного не в тему: как удалить приложение у пользователей, которые его уже установили ??
Наверное, только если найти всех этих пользователей и попросить их удалить.
monax писал(а):Как передать переменную из PHP скрипта в flash?
Обратиться из приложения к скрипту и получить нужные данные. Если нужно получить более одной переменной, то можно разделять переменные каким-нибудь символом или генерировать на сервере XML.
О том как обратиться из приложению к серверу написано здесь http://flapps.ru/forum/post1575.html

Вид "peremen1=znachenie1" использовался в AS2 с функцией loadVariables. В AS3 такой функции нет.
Ответить