![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
Здравствуйте!
подскажите пожалуйста как в php проверить включин ли на клиенте javascript? Это сообщение отредактировал(а) alexey___ - 27.7.2008, 00:09 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
никак. проверить конфигурацию клиента(в т.ч. настройки браузера) можно только на стороне клиента.
PHP выполняется на стороне сервера. |
|||
|
||||
Dima 2015 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: 2 Всего: 2 |
Мне вот тут подумалось... Ну на прямую конечно никак.
Но можно сделать скрытое поле формы: <input type="hidden" name="is_JS" value="0"> И ф-цию JS, которая меняет value с 0 на 1. Если JS работает то на сервер придет 1, если нет - то 0. Или ерунду говорю? ![]() * Не, наверное ерунду... если JS выключен то кто эту форму отправлять то будет... Но во время авторизации скажем точно должно прокатить... Это сообщение отредактировал(а) Dima 2015 - 27.7.2008, 02:13 |
|||
|
||||
Dima 2015 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: 2 Всего: 2 |
В общем можно сделать изврат типа такого:
Приходит юзер на index.php и получает:
Воть, а в init.php:
|
||||
|
|||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
такой вопрос может возникнуть, если требуется отдать клиенту два разных типа страниц: с js и без js для тех у кого он отключён
самое простое в этом случае в начале страницы прописать:
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
класс.
просто интересно, кто-нибудь из теоретиков такое сам делал, или хотя бы видел? и еще очень забавно предположение о том, что пользователи на сайт заходят исключительно через индекс. |
|||
|
||||
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
Задача решена, всем спасибо!
Прошу прощенья, что сразу не сказал, что нужно сделать! Задача заключалась в следующем: 1. Если есть javascript, то делаем меню с использованием javscript - меню и выпадающее подменю (2 уровня) 2. Если нет javascript, то делаем простое меню с использованием css - просто основное меню (1 уровень) Данные для меню берутся БД Задачу решил следующим образом: для 2 между <noscript> поместил div в который помещается меню. для 1 сформировал строку (Меню) на php, которая включает в себя набор тегов и потом вызвал следующее
т.е. если javascript включен, моё меню построится - поместится в div иначе выполнится действие в <noscript> |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
alexey___, осталось только объяснить, какое этот вопрос имеет отношение к разделу PHP: Общие вопросы
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Feldmarschall, никакого, очевидно.
Но чтоб предотвратить появление хотя бы 1% вопросов из той же песочницы, я предпочтел бы эту тему оставить здесь. тем более, в других разделах она не откроет ничего нового. |
|||
|
||||
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
Feldmarschall. возможно никакого отношения нет! Но возникают вопросы о том как при загрузке php страницы обойти javascript.
Везде очень много красивого текста, красивых слов и т.д. Также видно, что существует много способов поверки "включен ли javascript" в броузере.... Если есть возможность дайте пожалуйста ссылки, где это можно почитать. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
alexey___, я могу дать только ссылку, с помощью которой можно узнать, что такое РНР. Чтобы не возникало вопросов на тему, что он может, а что нет.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
alexey___, давай выясним раз и навсегда: PHP выполняетяся на стороне сервера. О клиенте он знает только то, что клиент сам "сообщит". Потому если тебя интересует что-то, работающее/отображающееся на стороне клиента - задай вопорс в разделе "Верстка" или "Javascript". Но не в "PHP: Общие вопросы"
|
|||
|
||||
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
skyboy, Feldmarschall
Спасибо, большое! при решении данной проблемы я зациклился на php и думал решить эту задачу именно средствами php. Но получив ответ от skyboy (27.7.2008, 00:12)
и все вопосы у мення отпали. и я перестал решать задачу средставми php. думаю, что не нужно было выкладывать свой вариант решения. а если посмотреть все ответы данной темы, то можно будет увидеть что ответ в тему только один от skyboy Всем большое спасибо! |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Не стоило давать такие оценки. У тебя недостаточно опыта, чтобы судить о том, какой ответ в тему. А какой-нет. К тому же, это форум. Не стоит его путать с платной службой поддержки, которая подписала контракт облуживать исключительно твою драгоценную персону. Это форум. И в него могут писать свободно все желающие. В меру своих способностей и понимания вопроса. Оценивать лучше не ответы, а свои знания. Которые сильно нуждаются в улучшении. |
|||
|
||||
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
что косается моих знаний, то они действительно нуждаются в улучшении - всего пару недель за php.
у меня вопрос! в интернете нашел, что при помощи функции get_browser() (нужно ещё правильно подключить файл browscap.ini) можно получить информацию и броузере клиента, также и том подключен ли javascript в броузере или нет. правильно ли я понял действии этой функции? т.е для чего это всё используется? как правильно подключить browscap.ini? |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Нельзя с её помощью получить такую информацию.
Что тебе уже несколько раз объяснили, и ты даже поблагодарил за объяснения. Это сообщение отредактировал(а) Feldmarschall - 27.7.2008, 23:00 |
|||
|
||||
elkeeper |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.7.2008 Репутация: 1 Всего: 1 |
Никого не слушай - функция правильная. То, что тебе тут несут (по другому не назвать), что мол нельзя пхп определить параметры браузера т.к. пхп - на сервере, а браузер - на клиенте - это полный бред и пляски с бубном. иди на http://ru2.php.net/manual/ru/function.get-browser.php - там по-компетентнее народ сидит. Настройка browscap.ini необходима, что бы вся эта канетель работала быстрее (здесь, видимо, имеется в виду настройка кэширования сего файла т.к. при вызове get_browser() она постоянно пробегает весь этот файл, выгружая его себе) Для "профессионалов - программистов", которые тут постили про невозможность определения параметров браузера: По-мимо настроек сервера, переменных и пр. во все ваши пхп скрипты передаются переменные окружения (есть такой зверь - представляете!?), в которых есть куча настроек текущих параметров работы php (начиная со страниц, с которых пришел пользователь и заканчивая настройками Apache (или, в общем, веб-сервера)). И что самое интересное, в эти же переменные окружения передаются и параметры браузера. А вы думали клиент только получает от сервера? Нет, не только. И мало того - передаёт уйму информации о себе. (Источник - phpinfo();) PS Всё работает нормально и без настройки browscap.ini PPS Ради интереса - выгрузка сей функции Исходник: <?php echo $_SERVER['HTTP_USER_AGENT'] . "\n\n"; $browser = get_browser(null, true); print_r($browser); ?> Результатом выполнения будет что-то подобное: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3 Array ( [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 [css] => 2 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [backgroundsounds] => [vbscript] => [javascript] => 1 [javaapplets] => 1 [activexcontrols] => [cdf] => [aol] => [beta] => 1 [win16] => [crawler] => [stripper] => [wap] => [netclr] => ) Думаю, объяснять, что к чему, не надо...) PPPS Совет на будущее (псевдо-программистам) - прежде, чем с пеной у рта что-то доказывать, не поленитесь выяснить, не является ли это полным бредом. Это сообщение отредактировал(а) elkeeper - 28.7.2008, 20:18 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
elkeeper, и как get_browser() вернет информацию о том, включен ли javascript на стороне клиента?
до кучи: вот request headers, который мой mozilla firefox отправляет для получения одной из картинок при работе с этой конкретной страницей(дамп получен при помощи полезного во многих отношениях firebug):
найди здесь "javascript: yes" или что-то аналогичное(сейчас я абсолютно умалкиваю о том, что всякие анонимайзерные плагины под разные браузеры искажают или вообще подавляют user-agent заголовки). снизойди. пожалуйста, очень тебя прошу. Добавлено через 2 минуты и 10 секунд мысль мелкнула: а не путаешь ли ты, elkeeper, состояние javascript(включен/выключен - например, плагином "no script" или через настройки) и поддержку javascript(как, например, lynx не поддерживает или консольный terminal)? Добавлено через 3 минуты и 11 секунд правда?! 0_о Добавлено через 6 минут и 33 секунды alexey___, смотри, не ведись на эту провокацию. если не веришь нам, не верь ему - проверь сам и убедись, что со включенным javascript и выключенным возвращает "волшебная" функция get_browser() и поверь(пока - на слово), что клиент далеко не всегда отдает в заголовках свой user-agent. и далеко не всегда в нем - корректная информация. и уж совсем нету в тех заголовках про состояние javascript'a и про установленные плагины/подержку activeX. совсем. Добавлено через 8 минут и 24 секунды дефис не нужен. |
|||
|
||||
alexey___ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 12.3.2007 Где: Казахстан Репутация: 1 Всего: 1 |
ALL, интересная тема - неправда ли!!!???
проверил работу get_browser(). При включенном или выключенном javascript в броузере при проверке - всегда результат один единичка.
хотя в различных источниках советуют использовать get_browser, для получения информации о состоянии текущего броузера. НО ничего не выходит |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Естественно, т.к. единственное назначение этой функции - это определение браузера пользователя по заголовку User-Agent. А все значения полученного массива - это, как правильно заметил skyboy, возможности данного браузера (прим. GoogleBot не умеет выполнять JS, а FF умеет). |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
...в свою очередь, полученные исходя из данных в browsercap(abilities).ini. Следовательно, возможность распознать возможности по user-agent'y(если все же он будет получен и будет адекватный клиенту) зависит от версии PHP и/или доредактированности browsercap.ini, оттого полагаться на сей механизм даже в вопросах определения потенциальной поддержки javascript'a я бы не стал. а судя по тому, каким был первый пост товарища elkeeper на форуме и по его последующему молчанию, товарищ балуется троллизмом. |
|||
|
||||
elkeeper |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.7.2008 Репутация: 1 Всего: 1 |
Товарищ elkeeper не балуется троллизмом, а просто ехал с работы домой, убеждал себя в осутствии в headerах какого-либо намека на передачу каких-либо свойств браузера (кроме его названия), осознавал бесполезность функции get_browser (параллельно изучая такое же бесполезное содержание browsercap.ini) и заново открывал для себя переменные окружения. А теперь по теме. Хотел бы принести искренние извинения всем за присутствие здравого снобизма (именно снобизма - навязчивого желания оскорбить кого-либо не было) в собственном изложении - таков я есть и это остаётся на моей совести. (проходить курс "Убей в себе сноба" не буду, хотя было бы полезно) Также, хотел бы извиниться перед alexey___'ем за попытку "сбить с пути истинного" - не нарочно, честно. 12-ти часовой рабочий день дал о себе знать (да, рабочий день у меня начинается в 8 утра). И конечно же, всем большое человеческое спасибо за то, что не позволили миру получить ещё одного идиота-программиста (это я про себя) в самом расцвете сил. И ещё я научился пользоваться советами... своими советами ![]() PS Хотя про headerы можно было написать и сразу (это только после поста, я полез в Live HTTP-headers смотреть) - по-моему самое наглядное объяснение, что именно передает браузер и чего передавать он явно не может... |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
т.е. по-твоему простого "инфорация о клиенте в полной мере доступна тоьлко клиенту, а серверу - нет" - недостаточно? ![]() ну, не совсем. все же во время внедрения, браузеры были, наверное, честными(отдаавли корректный user agent), между собой слабо совместимыми на уровне верстки(internet explorer 4 и netscape какой-то там), javascript еле-еле осилил innerHTML - ни о каком createElement/getElementById речи не шло, потому эта функция, наверное, спасала целые народы. А сейчас, когда не то, что заголовки - куки подделывают... эээх... :( только в следующий раз на поворотах аккуратнее, ладушки? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |