Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   SendAndLoad() ...аналогия. (http://www.flasher.ru/forum/showthread.php?t=118904)

ERrorMAKros 06.12.2008 21:19

SendAndLoad() ...аналогия.
 
Всем привет,
вот есть такая задача:
1. Из flash (actionscript3) передаются 3 строки;
2. php их принимает, обрабатывает, делает какие нибудь действия и...
3. Возвращает 3 другие строки с некоторыми данным во flash;

Есть такой код:
Код AS3:

 var request:URLRequest = new URLRequest("chech.news.pwd.php");  
    request.data = variables;//add the data to our containers 
    request.method = URLRequestMethod.POST;//select the method as post 
 
  var variables:URLVariables = new URLVariables();//create a variable container 
      variables.sEml = "1234"; 
      variables.sID = "5678"; 
      variables.sBD = "90ABC"; 
 
  var loader:URLLoader = new URLLoader(); 
      loader.dataFormat = URLLoaderDataFormat.VARIABLES;
      loader.addEventListener(Event.COMPLETE, handleComplete); 
  try
{
    loader.load(request);
}
catch(e:Error)
{
  trace("bug");
}
 
function handleComplete(event:Event):void
{ 
var loader:URLLoader = URLLoader(event.target); 
    loader.dataFormat = URLLoaderDataFormat.TEXT;
try        {
                Var1.text = String(loader.data);
                trace("("+loader.data.email+")");
                trace("("+loader.data.id+")");               
            trace("("+loader.data.db+")");
        }
catch (e:Error)
        {
                Var1.text = "bag2";
        }
 
}

И есть php файл "chech.news.pwd.php":
PHP код:

<?php  
$psPreRegEmail
=$_GET['sEml']."xxx";
$FRM_ID=$_GET['sID']."yyy";
$psBD=$_GET['sBD']."zzz";

$output='&email='.$psPreRegEmail.'&id='.$FRM_ID.'&db='.$psDB.'&null=null';
echo 
$output;
?>

В итоге, результат:
в var1.text получается вот такая жесть:
id=%27%2E%24FRM%5FID%2E%27&null=null%27%3B%0D%0Aecho%20%24output%3B%0D%0A%3F%3E&db=%27%2E%24psDB%2E%27&%3C%3Fphp%20%20%0D%0A%24psPreRegEmail=%24%5FGET %5B%27sEml%27%5D%2E%22xxx%22%3B%0D%0A%24FRM%5FID%3D%24%5FGET%5B%27sID%27%5D%2E%22yyy%22%3B%0D%0A%24psBD%3D%24%5FGET%5B%27sBD%27%5D%2E%22zzz%22%3B%0D%0 A%0D%0A%24output%3D%27&email=%27%2E%24psPreRegEmail%2E%27

а trace показывает:
('.$psPreRegEmail.')
('.$FRM_ID.')
('.$psDB.')

Вообщем php не выполняется, и тупо передается его содержимое, иногда и весь код.

Помогите пожалуйста в реализации задачи!

Alex Lexcuk 06.12.2008 22:57

>>Вообщем php не выполняется, и тупо передается его содержимое, иногда и весь код.

Да у вас PHP на сайте не поддерживается скорее всего.

Потестите хоть мою
http://www.flasher.ru/forum/showthread.php?t=113083

ERrorMAKros 06.12.2008 23:16

У меня D.E.N.W.E.R. установлен, ...помимо этого кода у меня еще кртиться связка Flash+Php+MySQL и прекрасно работает. Я слышал что то нужно менять в php.ini, register_globals = Off - точно прописан.

Добавлено через 26 минут
Цитата:

Сообщение от Alex Lexcuk (Сообщение 782053)
>>Вообщем php не выполняется, и тупо передается его содержимое, иногда и весь код.

Да у вас PHP на сайте не поддерживается скорее всего.

Потестите хоть мою
http://www.flasher.ru/forum/showthread.php?t=113083

К сожалению ваш код в полной мере не сработал... целый день не могу понять что вообще не так, у нас как бы основа реализации практически одинаковая!

ZlPredator 07.12.2008 00:22

С PHP Вам отдельно разбираться (судя по всему он все таки не работает).
Тем не менее есть еще ошибка в коде флеша.
Вместо:
Код AS3:

var request:URLRequest = new URLRequest("chech.news.pwd.php");  
    request.data = variables;// присваиваете null!!!
    request.method = URLRequestMethod.POST; 
 
  var variables:URLVariables = new URLVariables();//Это уже роли не играет
      variables.sEml = "1234"; 
      variables.sID = "5678"; 
      variables.sBD = "90ABC";

Необходимо

Код AS3:

  var variables:URLVariables = new URLVariables();//Сначала создаём  
      variables.sEml = "1234"; 
      variables.sID = "5678"; 
      variables.sBD = "90ABC"; 
var request:URLRequest = new URLRequest("chech.news.pwd.php"); 
    request.data = variables;//потом присваиваем
    request.method = URLRequestMethod.POST;

ЗЫ. Что за ужасная расцветка PHP...

ERrorMAKros 07.12.2008 00:39

Не ребята, теже яйса только в профиль.
У меня в сл. фрейме идет вызов php скрипта, он там внутри себя обращается к БД, генит xml и возвращает его, ...далее инфа передается в datagrid. Не может же php не работать в некоторых случаях в одном ролике. Тут в чем то другом прикол. С 9:30 утра не могу справиться с кодом =(

Чуть-чуть переписал php:
PHP код:

<?PHP  
$psPreRegEmail
=$_GET['sEml'].'xxx';
$FRM_ID=$_GET['sID'].'yyy';
$psBD=$_GET['sBD'].'zzz';

$output='&email='.$psPreRegEmail.'&id='.$FRM_ID.'&db='.$psBD;
echo 
$output;
?>

В браузере запускаю:
http://test1.ru/@newsupload/chech.news.pwd.php?sEml=123&sID=456&sBD=23213

Получаю нормальный ответ:
&email=123xxx&id=456yyy&db=23213zzz

А во flash получаю полную лажу:

('.$psPreRegEmail.')
('.$FRM_ID.')
('.$psBD;
echo $output;
?>)


В Var1.text попадает:
%3C%3FPHP%20%20%0D%0A%24psPreRegEmail=%24%5FGET%5B%27sEml%27%5D%2E%27xxx%27%3B%0D%0A%24FRM%5FID%3D%24%5FGET%5B%27sID%27%5D%2E%27yyy%27%3B%0D%0A%24psBD %3D%24%5FGET%5B%27sBD%27%5D%2E%27zzz%27%3B%0D%0A%0D%0A%24output%3D%27&id=%27%2E%24FRM%5FID%2E%27&db=%27%2E%24psBD%3B%0D%0Aecho%20%24output%3B%0D%0A%3F %3E&email=%27%2E%24psPreRegEmail%2E%27

ZlPredator 07.12.2008 13:20

Не знаю ни одного способа получения текста PHP вместо его выполнения (а если бы знал, то уже ломал бы все сайты подряд :).
У вас еще одна ошибка в коде:
Код AS3:

request.method = URLRequestMethod.POST;//select the method as post

Вы зачем то выставили POST, а считываете из $_GET (тогда уж лучше из $_REQUEST, универсальней)

ЗЫ. Есть у меня подозрение. Вы случаем не пытаетесь флешку прям с диска запустить (не важно что через браузер)? Запустите её, например для вашего случая, как 'http://test1.ru/@newsupload/flash.swf'.

ERrorMAKros 07.12.2008 13:47

Вот, рабочий код, ...по всем рекомендациям, ...вот что наделал:

Код AS3:

var variables:URLVariables = new URLVariables();//Сначала создаём  
    variables.sEml = "1234"; 
    variables.sID = "5678"; 
    variables.sBD = "90ABC"; 
 
var request:URLRequest = new URLRequest("http://test1.ru/@newsupload/chech.news.pwd.php"); 
    request.data = variables;//потом присваиваем
    request.method = URLRequestMethod.POST;
 
  var loader:URLLoader = new URLLoader(); 
      loader.dataFormat = URLLoaderDataFormat.VARIABLES;
      loader.addEventListener(Event.COMPLETE, handleComplete); 
  try
{
        trace(request.data.sBD);
        trace(request.data.sEml);       
        trace(request.data.sID);       
    loader.load(request);
}
catch(e:Error)
{
  trace("bug");
}
 
function handleComplete(event:Event):void
{ 
var loader:URLLoader = URLLoader(event.target); 
    loader.dataFormat = URLLoaderDataFormat.TEXT;
 
// ВО ТУТ ТО, ЧТО МЕНЯ ВЫРУЧИЛО!
var variables:URLVariables = new URLVariables()
    variables=loader.data; // ЭТО САМОЕ "ОНО"
 
try        {
        Var1.text = String(loader.data);
                trace("("+variables.email+")");
            trace("("+variables.db+")");
                trace("("+variables.id+")");                               
        }
catch (e:Error)
        {
                Var3.text = "bag2";
        }
 
}

И собственно php!
PHP код:

<?php
$contact_name 
= $_REQUEST['sEml'].'xxx';
$contact_subject = $_REQUEST['sID'].'yyy';
$contact_email = $_REQUEST['sBD'].'zzz';
$null="&null=null"; // не используемый параметр, для закрытия echo строки;
echo "email=".$contact_name."&id=".$contact_subject."&db=".$contact_email.$null;
?>

>>> Вот и ФСЯ ОБРАТНАЯ СВЯЗЬ!
Var1.text у нас получилось: id=5678yyy&null=null%20&db=90ABCzzz&email=1234xxx

>>> Вот то что отправляется (проверка по trace)
90ABC
1234
5678


>>> Вот то что принимается (проверка по trace в handleComplete)
(1234xxx)
(90ABCzzz)
(5678yyy)

ZlPredator 07.12.2008 14:17

Выручило Вас то, что Вы начали обращаться к PHP через Apache, а не считывать с диска файл. А присваивание
Код AS3:

variables=loader.data;

можно было и не писать (можете удалить для проверки).

Monompadin 23.12.2011 16:20

Спасибо! вы меня очень выручили !!!


Часовой пояс GMT +4, время: 20:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.