Все глюки и баги сайтa
4573
0
substr($_SERVER['HTTP_USER_AGENT'],0,10)=='Opera/9.80' в этом условии именно Opera/9.80 обязательно, так как опера 9 версии имела юзерагент другого типа, а именно:
Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1
далее сменилось на шаблон
Opera/9.80 ($OS; U; $LANGUAGE) Presto/$PRESTO_VERSION Version/$VERSION
В общем теперь, 3 вариант этого куска когда полностью рабочий, протестировал на IE, Firefox, Opera, Chrome и Safari, при маскировке под другие браузеры, то под что маскируется стоит в первую очередь, то есть strpos корректно определит, думаю не стоит выуживать истинный браузер, но все же нужно добавить другие не столь распространенные браузеры, иначе так же по старому будет типа Mozilla/4.0
Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1
далее сменилось на шаблон
Opera/9.80 ($OS; U; $LANGUAGE) Presto/$PRESTO_VERSION Version/$VERSION
В общем теперь, 3 вариант этого куска когда полностью рабочий, протестировал на IE, Firefox, Opera, Chrome и Safari, при маскировке под другие браузеры, то под что маскируется стоит в первую очередь, то есть strpos корректно определит, думаю не стоит выуживать истинный браузер, но все же нужно добавить другие не столь распространенные браузеры, иначе так же по старому будет типа Mozilla/4.0
Изменил: Azzido (14.07.2010 / 22:33)
0
ооо... теперь нормально) спасибо) себе тоже взял на всякий случай
********
Ваш положительный голос за пользователя Azzido успешно оставлен!
В данный момент его авторитет: 34
Всего положительных голосов: 34
Всего отрицательных голосов: 0
********
********
Ваш положительный голос за пользователя Azzido успешно оставлен!
В данный момент его авторитет: 34
Всего положительных голосов: 34
Всего отрицательных голосов: 0
********
0
тут http://visavi.net/games/person.php?
неработает ссылка "Сражения"
неработает ссылка "Сражения"
0
766, код немного неправильный. Поменяй местами определения Internet Explorer`а.
В строке некоторых версий IE7 есть упоминание MSIE 6.0
и еще одна опечатка. на этот раз в пользовательской рекламе.
«Жирного» текста не бывает. Бывает только полужирный.
В строке некоторых версий IE7 есть упоминание MSIE 6.0
и еще одна опечатка. на этот раз в пользовательской рекламе.
«Жирного» текста не бывает. Бывает только полужирный.
0
766. Azzido, как-то ненадежно искать по 9.80
я тут нашел другой пример
я тут нашел другой пример
<?php function browser_info($agent) { // Cигнатуру Opera ищем раньше ИЕ, т.к. опера иногда раньше обманывала, // что она не опера, а ИЕ и добавляла себе ИЕшную сигнатуру "MSIE") // Ищем сигнатуру Opera старый вариант: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru] if (ereg( 'Opera ([0-9].[0-9]{1,2})', $agent, $version)) : $browse_type = "Opera"; $browse_version = $version[1]; // Ищем сигнатуру Opera новый вариант (версия живет отдельно): Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.50 elseif (ereg( 'Opera/', $agent)): ereg( 'Version/([0-9]{1,2}.[0-9]{1,2})', $agent, $version); $browse_type = "Opera"; $browse_version = $version[1]; // Ищем сигнатуру Internet Explorer elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $agent, $version)): $browse_type = "IE"; $browse_version = $version[1]; // Ищем сигнатуру Firefox elseif (ereg('Firefox/([0-9].[0-9]{1,2})', $agent, $version)): $browse_type = "Firefox"; $browse_version = $version[1]; // Ищем сигнатуру Chrome elseif (ereg( 'Chrome/([0-9].[0-9]{1,2})', $agent, $version)) : $browse_type = "Chrome"; $browse_version = $version[1]; // Ищем сигнатуру Netscape elseif (ereg( 'Netscape/([0-9].[0-9]{1,2})', $agent, $version)) : $browse_type = "Netscape"; $browse_version = $version[1]; // Если все мимо // значит наша функция этот браузер не знает else : $browse_type = "Unknown"; $browse_version = "Unknown"; endif; // Возвращаем тип и версию браузера в виде массива return array ($browse_type, $browse_version); }только его надо переписать под preg
0
770. ЯщщЬ aka ZooM, согласен, но вот в таком виде встречается
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
то есть уже в конце строки перечисление что есть в системе, так же как и у хрома встреччается определение сафари, но вункция strpos ищет первое вхождение, то есть определит верно
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
то есть уже в конце строки перечисление что есть в системе, так же как и у хрома встреччается определение сафари, но вункция strpos ищет первое вхождение, то есть определит верно
0
771. Vantuz, я немного с этой функцией не согласен, Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [ru] посылается не случайно, а в случае маскировки, есть в опере такая настройка, вот как это выглядит:
Представляться как Opera:
Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.60
Представляться как Firefox:
Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.60
Представляться как MSIE:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ru) Opera 10.60
Маскироваться под Firefox:
Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
Маскироваться под MSIE:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ru)
я в функции, что писал, хотел учитывать и маскировку под другие браузеры и не определять настоящий. В общем, посмотрел еще и на функцию что ты привел и снова внес изменения в свою, все же уверен что это наиболее подходящий вариант
Представляться как Opera:
Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.60
Представляться как Firefox:
Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.60
Представляться как MSIE:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ru) Opera 10.60
Маскироваться под Firefox:
Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6
Маскироваться под MSIE:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ru)
я в функции, что писал, хотел учитывать и маскировку под другие браузеры и не определять настоящий. В общем, посмотрел еще и на функцию что ты привел и снова внес изменения в свою, все же уверен что это наиболее подходящий вариант
0
<?php if(isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])){ $ua=strtok($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'],' '); } elseif(isset($_SERVER['HTTP_USER_AGENT'])){ // Проверяем на заголовки Opera // Сначала тип 10 версии Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.60 // Если не найдено, то старые версии Opera/9.63 (Windows NT 6.0; U; en) Presto/2.1.1 if(substr($_SERVER['HTTP_USER_AGENT'],0,5)=='Opera'){ if(preg_match('!Version/([0-9]{1,2}\.[0-9]{1,2})!',$_SERVER['HTTP_USER_AGENT'],$matches)){ $ua='Opera/'.$matches[1]; }else{ $ua=strtok($_SERVER['HTTP_USER_AGENT'],' '); } } // Проверяем на заголовки Opera в случае маскировки под другие браузеры elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Opera')){ if(preg_match('!Opera ([0-9]{1,2}\.[0-9]{1,2})!',$_SERVER['HTTP_USER_AGENT'],$matches)){ $ua='Opera/'.$matches[1]; }else{ $opera_false=TRUE; } }else{ $opera_false=TRUE; }
0
<?php if(isset($opera_false)){ if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 5.0')){ $ua='MSIE 5.0'; } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')){ $ua='MSIE 6.0'; } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0')){ $ua='MSIE 7.0'; } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0')){ $ua='MSIE 8.0'; } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Chrome')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Chrome'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Firefox'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Safari')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Safari'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Netscape')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Netscape'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'SeaMonkey')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'SeaMonkey'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'OmniWeb')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'OmniWeb'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Minimo')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Minimo'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'K-Meleon')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'K-Meleon'),' '); } elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Konqueror')){ $ua=strtok(strrchr($_SERVER['HTTP_USER_AGENT'],'Konqueror'),';'); } else{ $ua=strtok($_SERVER['HTTP_USER_AGENT'],' '); } } }else{ $ua='Unknown'; }
Изменил: Azzido (15.07.2010 / 08:22)
0
Можно функцию дорабатывать еще, основываясь на примеры различных юзерагентов, в том числе и устаревшие, например http://ru.wikipedia.org/wiki/User_Agent , самые популярные в юзерагенты уже есть
Изменил: Azzido (15.07.2010 / 08:24)
Для выполнения действия необходимо авторизоваться!