Как стать автором
Обновить

Комментарии 13

Вот он, диверсант, тормозящий прогресс! Жечь напалмом!
еще вариант включая iphone

require 'browser.php';
$browser = new Browser;

if ($browser->name == 'firefox' && $browser->version > 3) {
echo 'text';
}
if ($browser->name == 'msie' && $browser->version < 6) {
echo 'text';
}
if ($browser->name == 'msie' && $browser->version <= 6 && $browser->os == 'macintosh') {
echo 'text';
}


browser.php
class Browser
{
private $props = array('version' => '0.0.0',
'name' => 'unknown',
'agent' => 'unknown',
'os' => 'unkown');

public function __construct()
{
$browsers = array("firefox", "msie", "opera", "chrome", "safari",
"mozilla", "seamonkey", "konqueror", "netscape",
"gecko", "navigator", "mosaic", "lynx", "amaya",
"omniweb", "avant", "camino", "flock", "aol", "webtv",
"netpositive", "mspie", "galeon", "icab", "phoenix", "firebird");

$this->agent = strtolower($_SERVER['HTTP_USER_AGENT']);

if (eregi("win", $this->agent))
$this->os = "windows";
elseif (eregi("iPhone", $this->agent))
$this->os = "iphone";
elseif (eregi("mac", $this->agent))
$this->os = "macintosh";
elseif (eregi("linux", $this->agent))
$this->os = "linux";
elseif (eregi("OS/2", $this->agent))
$this->os = "os/2";
elseif (eregi("BeOS", $this->agent))
$this->os = "beos";

foreach($browsers as $browser)
{
if (preg_match("#($browser)[/ ]?([0-9.]*)#", $this->agent, $match))
{
$this->name = $match[1];
$this->version = $match[2];
break;
}
}
}

public function __get($name)
{
if (!array_key_exists($name, $this->props))
{
SimpleError("No such property or function.", "Failed to set $name", $this->props);
}
return $this->props[$name];
}

public function __set($name, $val)
{
if (!array_key_exists($name, $this->props))
{
SimpleError("No such property or function.", "Failed to set $name", $this->props);
die;
}
$this->props[$name] = $val;
}

}
тоже сильно )
Что-то я шутку только сейчас заметил:
Opera! Mozilla.
Обнови свой броузер и перестань морочить голову дизайнерам всякой межбраузерностью!

а Internet Explorer, тихом, молком? по-моему из всех перечисленных неудобство доставляет только IE. и межбраузерностью правильно пишется кросс а не меж. И если уж так хочется пересадить человека то нужно пересаживать с IE а не на IE. и для того что бы пересадить с IE есть CSS Хак:

и всех делов
Перенес, спасибо.
Да то, что там не через $_SERVER[] уже говорит о многом.
eregi как правило медленнее strpos
Eregi вообще уже давно не поддерживаются (из 6.0-ой версии вообще уберут). Вместо них надо использовать preg_*
Спасибо автору за пополнение коллекции говнокодов на govnokod.ru/php =)
Самое место.
Автор, пишите себе сайты под IE, желательно под 6. Только, пожалуйста, не удивляйтесь, что ваши костыли не работают в других браузерах.
Ну и да, у вас будет мегапосещаемый сайт с таким кодом ;)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории