![]() |
Проверка наличия плеера без использования JavaScript :)
Привет! Итак, "пособие по обнаружению плеера у пользователя и выдаче ему флеш или хтмл версии документа": 1) Надо выяснить, есть ли у пользователя флеш. 2) Если есть, то какой? Вдруг у нас еще пупер-версия-MХ приготовлена. 3) Еще хочется следить за сеансом/сессией пользователя чтобы не проводить проверку на каждой странице. Я расскажу только об определении плагина - второй пункт остается на домашнее задание. Инвентарь, который нам потребуется: 1) PHP 2) Flash 5/MX 3) Блокнот Что бы все работало нам нужны три файла: dfp_redirect.php, dfp_register.php и dfp_ini.php (нужен для объявления общих переменных). Первый файл должен вставляться в каждую страницу сайта с помощью функции include(), и ОБЯЗАТЕЛЬНО поверх всей поступающей в броузер информации, например так: --------------------------- somefile.php --------------------------- <? include("http://www.somehost.ru/dfp_redirect.php"); //... include("http://www.somehost.ru/some_top_design.php"); //... ?> <body> ... --------------------------- Если include() Редиректа будет осуществлен где-то "между" данными, то куки работать НЕ БУДУТ! Файл-регистратор будет существовать отдельно и не содержать в себе ничего кроме php-кода. План действий таков: 1) Человек заходит на сайт 2) Файл-редирект уличает его в том, что у посетителя нет сессии или нет куки и его "статус" неизвестен. 3) Файл-редирект посылает его на Индекс с параметром from откуда пришел посетитель: Например: Посетитель набрал в броузере www.somehost.ru/mycop/docs/tutorial.php, файл-редирект перенаправил его на http://www.somehost.ru/index.php?dfp...s/tutorial.php Строка /mycop/docs/tutorial.php берется из переменной $REQUEST_URI. 4) Файл-регистратор выплевывает хтмл и флеш, которые редиректят на тот же файл-регистратор, только с дополнительными параметрами. Пишется хтмл код со следующими мета-указаниями: <META HTTP-EQUIV="refresh" CONTENT="4; URL=http://www.somehost.ru/директория/dfp_register.php?dfp_from=/mycop/docs/tutorial.php&dfp_flash=no"> Ниже пишется хтмл-код для ролика, c параметрами dfp_from, dfp_host и dfp_dir. Т.е. путь к ролику записывается так: some/dir/check_flash.swf?dfp_from=/mycop/docs/tutorial.php&dfp_host=имя_хоста&dfp_dir=имя_директории Имя ролика - dfp.swf, и он должен лежать в той же директории, что и скрипты register.php и redirect.php. В ролике есть один-единственный кадр со строкой: getURL(dfp_host+"/"+dfp_dir+"/dfp_register.php?dfp_from="+from+"&dfp_flash=yes"); 5) В файле-регистраторе стоит проверка на присутствие переменной $dfp_flash - если ее нет или она не равна ни no, ни yes, то пишется указанный выше хтмл; если же она валидна, то создается кука (cookie) сроком на неделю, в которой содержится переменная dfp_flash, равная no или yes. Также создается сессия и сессионная переменная dfp_flash_s=yes/no, на случай отключенных кук - пусть посетитель хоть во время сеанса не будет каждый раз подвергаться проверке. Другое имя переменной требуется для разделения переменных сессии и кук. 6) Посетитель отсылается обратно на документ, хранящийся в переменной $dfp_from, где проверяется еще раз скриптом-редиректом, который видит куку, перезаписывает ее, если надо (удлинняя ее срок), и, в зависимости от значения кукиной переменной dfp_flash выдает ему соответствующие данные. Вот весь план. В нем есть несколько некрасивых моментов, на которых я должен заострить внимание: 1) Если у посетителя нет плеера, то он ждет 4 секунды до редиректа. 2) Если ролик не загрузился за 4 секунды, то броузер его направляет по "хтмл-пути", но, с другой стороны, зачем пихать посетителю флешки, которые так тормознуто грузятся? 3) Если у посетителя такой древний броузер, что тот не поддерживает META HTTP-EQUIV, то это посетитель никогда не сможет проникнуть на сайт. Но таких посетителей единицы. Я надеюсь, что Вы полностью поняли идею, поэтому приведу совсем простенький исходный код, который легко переделать "под себя". Код:
------------------------------------------------------------Код:
------------------------------------------------------------Код:
------------------------------------------------------------ |
во всех бродилках пашет ?
|
2 Junge
при наличии поддержки куков :) |
Цитата:
Цитата:
зы: только в туториале сказано, что куки на неделю, хотя все настраивается (см. dfp_ini.php) |
Кстати, чтобы выяснить какой у пользователя плеер (МХ или 5) достаточно продлить выполение getURL() у пятерочного ролика секунды на две, а второй ролик сделать таким же, только с компрессией кода и getURL() должен выполняться сразу же после загрузки. Если у пользователя пятый плеер, то после загрузки компрессированного ролика тот ничего не поймет и редиректится только через 2 секунды через пятерочную версию.
|
Цитата:
|
Мне казалось, что при отключенных куках инфа о сессии хранится в части url, в переменной PHP_SESS_ID (название точно не помню)... Или это не так :confused:
|
| Часовой пояс GMT +4, время: 11:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.