Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Решение проблемы flash - аплоадеров (http://www.flasher.ru/forum/showthread.php?t=99625)

wargoth 09.08.2007 18:42

Решение проблемы flash - аплоадеров
 
Сразу скажу, что я не гуру Action Script программирования, и знаю что вопрос не прост поэтому задаю в этой ветке.
Недавно для проекта нашел отличный open-source Flash uploader (SWFuploader http://swfupload.mammon.se/ ). Установил на тестовую страничку, попробовал - все работает, все ОК. Когда начал прикручивать в свой проект, появилось куча проблем. Зона аплоадера - админка, необходима авторизация для входа. И тут касяк - Flash Player не передает ID сессии или вообще какие-либо cookie из браузера серверу. Т.е. скрипт который принимает файлы отвергает сессию плеера и естественно не сохраняет загруженые файлы.
Есть решения по этому поводу - передать например ID сессии через GET, например upload.php?PHPSESSIONID=блаблабла. Описание - здесь: http://groups.google.com/group/cake-...24743d44746f42 .
Мало того, я пользуюсь фреймворком cakephp ( http://cakephp.org/ ), в котором помимо этого производиться проверка строки User-Agent, передаваемая браузером, которая, естественно, отличается у флэш-плеера. Отсюда у меня вопрос, возможно ли решить следующие задачи:

1) установить во Flash-плеере cookie те же, что и в браузере;
2) установить такую же строку User-Agent у плеера, как и у браузера.

Заранее спасибо за ответы.

etc 09.08.2007 19:08

У флешки, расположенной на странице, User-Agent совпадает с браузерным.

wargoth 10.08.2007 09:23

Да, я считаю что так и должно быть, может так оно и есть в случае с IE, но в данном случае это не так. Вот как представился браузер:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20061201 Firefox/2.0.0.5 (Ubuntu-feisty)

а так представился плеер:
Shockwave Flash

Мой плеер - 9.0.31.0

Есть идеи по поводу кукисов?

etc 10.08.2007 10:04

Так, ещё раз: флешка, расположенная на странице, в браузере, имеет тот же User-Agent, что и браузер. Во всяком случае, под Windows и Mac OS X точно. Под Linux не знаю.

А standalone-плеер имеет свой User-Agent и Cookie не поддерживает.

wargoth 10.08.2007 12:16

Я постучался разными браузерами с разных операционок и вот результаты. Сначала буду писать как представился браузер, через строчку - плеер.

FF под линухом:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)
Shockwave Flash

FF под виндой
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Shockwave Flash

IE6 под линухом (проект IE4L):
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
Shockwave Flash

IE7 под виндой
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MyIE2; MRA 4.9 (build 01863); .NET CLR 1.1.4322)
Shockwave Flash

IE6 под виндой
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; MRA 4.9 (build 01863))
Shockwave Flash

Что вы имели ввиду под "standalone-плеер"? Я имею ввиду только тот плеер который отображается на странице в браузере. Разве могут здесь быть варианты?

etc 10.08.2007 12:52

Гм, очень странно, но у меня везде User-Agent совпадает с браузерным.

Например, для FF:

Код:

GET /month.php HTTP/1.1
Host: etcs.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Строчка из лога сервера:

Код:

[10/Aug/2007:11:49:39 +0400] "GET /month.php HTTP/1.1" 200 300 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
К month.php обращается флешка. Для IE/Opera результат тот же. User-Agent, равный Shockwave Flash бывает только у standalone-плеера. standalone — это обычный исполняемый плеер, приложение. Т.е. я запускаю swf-ку с винта и при обращении оно к серверу User-Agent равен Shockwave Flash. Такая схема действительна для плееров, начиная с шестой версии, более старые не проверял.

Tardos Mors 10.08.2007 13:12

Хм... Интересная проблема. У меня user-agent тоже везде совпадает с браузерным.
Может быть дело в том, как флешка вставлена в страницу? Врядли конечно, но ничего другого в голову не идет.

etc 10.08.2007 13:14

У меня в логе сервера всего 4 Shockwave Flash встречается и то, там в Referer написан линк на локальный файл, т.е. это standalone-плеер. Лог — 12 метров.

wargoth 10.08.2007 13:20

Я честно говоря не разбирался, как она вставлена. Вообще очень любопытное использование. Посмотрите демо на главной : http://swfupload.mammon.se/ . Все делает javascript, а флэшка вообще скрыта.

_etc, month.php запрашивается флэшкой? В моем случае идет POST. Может тоже есть разница?

Я так понимаю, что кукисов во флэшке нет таких же как у браузеров? Если есть, то как их устанавливать?

etc 10.08.2007 13:25

wargoth, вот с POST:

Код:

POST /php/book/index.php HTTP/1.1
Host: etcs.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Referer: http://etcs.ru/swf/guestbook.swf
Content-type: application/x-www-form-urlencoded
Content-length: 69
Connection: keep-alive

Лог сервера:

Код:

[10/Aug/2007:12:22:13 +0400] "POST /php/book/index.php HTTP/1.1" 200 1956 "http://etcs.ru/swf/guestbook.swf" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
Кукисы браузер шлет отдельно от флеша. И вообще, запросом данных занимается сам браузер.

wargoth 10.08.2007 17:15

Хмм... посмотрел я скрипт, вставляется флешка размером 1х1 пиксел в верхний левый угол в скрытый див. вроде все ок, ничего сверхъестественного. флэшка играет роль загрузчика и не более. советую взглянуть на исходники. Может кто-нибудь проанализировать что там происходит? Буду очень благодарен.

etc 10.08.2007 17:20

Если честно, то нет желания.
Какой будет User-Agent при аплоаде, я не знаю, вот это я как раз не проверял :D
В обычных ситуациях User-Agent совпадает с браузерным.

wargoth 10.08.2007 17:28

Вложений: 1
Ну что товарищи? Неужели никто не поможет? SWF аплоадер является самым удобным вариантом среди всех аплоадеров. Сделайте свой вклад в open-source ;)
Прикрепляю сам исходник...

wargoth 10.08.2007 18:41

значит, насколько я понимаю, нет возможности через AS самому установить user-agent и кукисы?

etc 10.08.2007 18:46

Нет, эти заголовки ActionScript не может изменить.

Kikasso 11.08.2007 03:11

Ну кикисы-то можно изменить гнусным хаком (флешом "впрыснуть" в html небольшой javascript), но лучше это делать обычным путем - javascript на странице, флеш его дергает.


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

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