Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Не загружаються переменные из php (http://www.flasher.ru/forum/showthread.php?t=140908)

ObOs 10.06.2010 17:12

Не загружаються переменные из php
 
PHP код:

<?php
$var1 
="my_var1";
$var2 ="my_var2";
echo 
'var1='.$var1.'&var2='.$var2;
?>

Код AS1/AS2:

var my_lv:LoadVars = new LoadVars();
my_lv.onLoad = function(success:Boolean) {
    if (success) {
                trace(this.var1);
                trace(this.var2);               
    }
};
my_lv.load("http://misite.ru/params.php");

трейсится вот такая белиберда

undefined
'.$var2;

?>

Не могу разобраться как мне получить значения этих переменных. На форуме куча таких тем и, вроде, я всё делаю по примеру, но ничего не выходит. Пожалуйста укажите на мои ошибки.

mikhailk 10.06.2010 17:59

а что выходит в браузере, если банально набрать "http://misite.ru/params.php"?

ObOs 10.06.2010 18:35

Такая ерунда трейсится при тесте локально.
Если в бить в браузере, как вы сказали то появляется

Цитата:

var1=my_var1&var2=my_var2
Если закинуть php'шку на сервер, то флеш трейсит
Цитата:

my_var1
my_var2<!-- ><!-- "><!-- '><!-- ;><!-- -->
</textarea></form></title></comment></a></div></span></ilayer></layer></iframe></noframes></style></noscript>
</table></script></applet></font>

<!-- inner counter-->
<script type="text/javascript">
pseudocounter = 'http://register.hut2.ru/g/pseudocounter.js';
document.write('<script type="text/javascript" src="' pseudocounter '?' Math.random() '"></scr' 'ipt>');
</script>
Я только начал изучать php и прочие серверные вещи, по-этому прошу прощения если не ясно выражаюсь

ObOs 15.06.2010 14:34

Попробовал таким же образом грузить переменные с текстового файла - все работает, а почему не грузит с php не пойму. И скажите пожалуйста, в чем разница между onLoad и onData? Прочитав хелп я что-то не понял разницы.

Хемуль 15.06.2010 16:43

2 ObOs:
Цитата:

<!-- ><!-- "><!-- '><!-- ;><!-- -->
</textarea></form></title></comment></a></div></span></ilayer></layer></iframe></noframes></style></noscript>
</table></script></applet></font>

<!-- inner counter-->
<script type="text/javascript">
pseudocounter = 'http://register.hut2.ru/g/pseudocounter.js';
document.write('<script type="text/javascript" src="' pseudocounter '?' Math.random() '"></scr' 'ipt>');
</script>
Вот это вот бред очень поход на вставку какого-то баннера или подобного мусора на страницы вашего сайта. Такое часто делается на бесплатных хостингах. Оно присоединяет его в конец всех PHP-файлов, считая их страницами.
Можете попробовать его обмануть, сделав не
Цитата:

echo 'var1='.$var1.'&var2='.$var2;
а
Цитата:

echo 'var1='.$var1.'&var2='.$var2.'&musor=';
Как видите из флешового трейса, этот мусор у вас выводится вместе со второй переменной. В мусоре нет символа '&', а потому и значение переменной и мусор считаются одной строкой, единым целым. Добавив третью переменную musor, вы запихнёте мусор в musor и просто не будете читать musor в своей флешке.

ObOs 15.06.2010 17:21

Хемуль, спасибо вам огромное.Ваш вариант всё исправил. Я на начальной стадии обучения по-этому действительно пользуюсь бесплатным хостингом. Но пока не пойму почему когда php файл лежит у меня на компе, то при загрузке с него переменных во флеш трейсится вот это:
Цитата:

undefined
'.$var2;

?>

Хемуль 15.06.2010 17:57

2 ObOs:
А что значит "лежит"? Просто вот так вот лежит? PHP-файл должен исполняться как программный код специальным серверным интерпретатором. То есть это как бы программа и выходит, что вы загружаете во флешку не результат её работы, а её исходный код.
Можете установить у себя на компьютере сервер и запускать PHP-файлы. Будете держать у себя локальный сервер. Так очень многие делают.

ObOs 15.06.2010 18:05

Теперь понял, повторно большое вам спасибо. Последний маленький вопрос:а в чем различие между обработчиками onLoad и onData и в каком случае какой использовать?

Хемуль 15.06.2010 18:57

Цитата:

Сообщение от ObOs (Сообщение 915586)
Теперь понял, повторно большое вам спасибо. Последний маленький вопрос:а в чем различие между обработчиками onLoad и onData и в каком случае какой использовать?

Когда вы пользуетесь LoadVars, вы можете вызывать для экземпляров этого класса методы load и sendAndLoad.
Они начинают загрузку данных с сервера. Когда все данные с сервера загружены, вызывается обработчик:
Код AS1/AS2:

loadVars.onData = function(data:String)
{
...
}

Тут можно сделать свой парсинг данных, пришедших с сервера и затем вызвать обработчик onLoad. Либо Flash Player сделает это сам, использовав алгоритм парсинга, установленный по умолчанию. onData вызывается либо при успешной загрузке, либо при ошибке загрузки и параметр data будет либо содержать URL-кодированный набор переменных, либо undefined.
То есть, сперва вызывается onData просто на получение всех данных или на ошибку. Затем происходит парсинг данных и лишь затем вызывается onLoad:
Код AS1/AS2:

loadVars.onLoad = function(success:Boolean)
{
...
}

параметр success в обработчике показывает, были ли переменные загружены успешно.
Короче говоря, если вам просто нужно загрузить переменные с сервера, пользуйтесь обработчиком onLoad.

ObOs 16.06.2010 12:20

Хемуль, еще раз огромное вам спасибо за ответы на нубские вопросы.


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

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