Эх, почему так всегда, я вот только позавчера с подобной проблемой мучался. Все решил вроде. А сейчас вот такая статья. Но все же спасибо. Добавлю в избранное, тут параметров больше, чем у моей функции.
В целом наличие сторонних разработок, повторяющих весь функционал get_browser() — полезная вещь :) Главное не забывать, что это исключительно свойства браузера, и, скажем, $browserInfo->JavaScript == 1 ещё не гарантирует, что он включён.
скрипт к сожалению не идеален. Если зайти из под оперы, которая маскируется под лису, т.е. Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.52 многие параметры начинают бажить.
Для исправления всего-то надо чекать сначала, является ли оперой или нет
Есди да, определяем версию. Если нет, чекаем на соответсвие другим браузерам.
при чем тут клоакинг? я ж не отсылаю поисковик на спец-страничку. Наоборот, я не даю ему попасть в тупик и вывожу на сайт. Это как nofollow для гиперссылки.
Хороший вопрос поднят в начале топика «о чем это?», но главный вопрос «зачем это?» совсем не раскрыт. Получилось что-то вроде игрушки — поиграться и выбросить. Все равно будут пользоваться javascript…
Вы правы, это скорее для очень специфичных случаев, раньше это было очень необходимо, до появления HTML 2.0 скажем, сейчас редко используется сервер — сайд определение браузера для фиксов верстки. В тоже время отлично подойдет для скрипта статистики. Функция get_browser в php появилась в 2000ом году, это о чем то говорит :)
Скрипт статистики средствами PHP — довольно спорная идея. Зачем изобретать очередной велосипед, если существует достаточно решений на клиентской части?
цитирование мануала, клёво :-)
ps: пхп знает о клиенте не больше апача, перла, и прочих руби и питонов
так что тему можно переименовать, а всё изложение свести к тому, что вся инфа недостоверна и передаётся в заголовках
В одном моем проекте ребром стал вопрос о необходимости узнать браузер юзера с точностью до ста процентов, долго собирал заголовки браузеров и нашел некоторую закономерность. Думаю, сейчас это уже в прошлом, но два года назад именно порядок заголовков помог задетектить браузер.
Стопроцентной вероятности конечно нет. А указывать причиной документ, определяющий стандарты сервера и браузера — неоправданный бред. Можно поменять строку с юзер агентом, но очередность тех же заголовков RFC не определяет.
указанный документ определяет не стандарты сервера и браузера, а стандарты протокола их общения. и как раз в этом документе описано, как может (не «должен») идентифицировать себя браузер.
так что с бредом вы, конечно же, поторопились.
перечитайте, пожалуйста, мой пост ещё раз. я не утверждал, что очерёдность заголовков описывается данным рфц, я сказал, что согласно рфц нет ни одного достоверного способа решения вашей задачи.
пхп не знает. знает статистика. а достоверность дело относительное. на User-Agent полагаться нельзя ни на клиенте ни на сервере. Но можно делать правильные выводы. Если опера или файрфокс сменили юзер-агент, то это их проблемы уже, что они получат :)
> //вероятность выполнение участка кода стремится к нулю поэтому пишем сюда
Я бы тогда поменял местами два куска кода:
if(! ini_get('browscap'))
{// разбираемся с браузером}
else
{// посылаем начальство}
Хотя в данном случае это не особо принципиально, просто привычка пихать вперед то, что чаще сработает. Если будет много if/elseif, то производительность чуть получше, поскольку другие условия уже проверяться не будут.
если очень захотеть, можно в космос полететь :) не могу представить зачем это надо, но если надо — например при заходе на сайт запрос аяксом к скрипту пхп, который установит в сессию маркер включенности явы. если ява отключена то и маркер не установится :)аналогично с куки — установить и попытаться считать… но данные будут доступны только при заходе на следующую страницу :) можно при первом заходе на сайт делать редирект на скрипт, который это все установит а потом вызовет запрашиваемую страницу. Моя больная фантазия пока исчерпалась :)
Что PHP может узнать о браузере посетителя?