php скрипт

12
D
На сайте с 01.04.2009
Offline
97
866

Есть скрипт

<?php
if ( stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox') ) echo $foo;
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome') ) echo 'chrome';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) echo 'safari';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'Opera') ) echo 'opera';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.0') ) echo 'ie6';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.0') ) echo 'ie7';
elseif ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.0') ) echo 'ie8';
?>

Надо чтобы вместо вывода имен браузеров, выводился нужный мне код, который в фаилах, а фаилы инклудятся.

Знаю что задача простая, но у меня не получается.

F
На сайте с 06.06.2008
Offline
51
#1

Я так понял идея такая: если в $_SERVER['HTTP_USER_AGENT'] есть название какого-то броузера, то должен выводиться или инклюдится текст.

Самое простое что приходит на ум это сделать массив где ключ - название броузера, а значение - либо переменная, либо файл который надо инклюдить.

Пример:

$array = array ("Firefox" => "firefox.php",
"Chrome" => "chrome.php",
"Safari" => "safari.php",
"Opera" => "opera.php"
);

Дальше проверяем через цикл какой броузер у пользователя и в зависимости от этого инклюдим то что нужно:

foreach ($array AS $key=>$value)
{
if (substr_count ($_SERVER['HTTP_USER_AGENT'], $key) > 0)
include $value;
}

Функция substr_count вычисляет количество появлений подстроки, т.е. число появлений значения $key в $_SERVER['HTTP_USER_AGENT']. Если совпадения есть, значит инклюдим нужный файл или просто через echo выводим переменную.

D
На сайте с 01.04.2009
Offline
97
#2

Спасибо, попробую, если не получится, отпишу.

Orangesoda
На сайте с 22.08.2010
Offline
17
#3
freesoccer:

Дальше проверяем через цикл

А зачем проверять именно через цикл?

F
На сайте с 06.06.2008
Offline
51
#4

Orangesoda - предложите Ваш вариант :)

Моя логика: как правило в $_SERVER['HTTP_USER_AGENT'] содержится текст вида:

"Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.63"

Проверка производится по совпадению с названием броузера (в данном случае Opera). Совпадение может быть лишь с одним из браузеров в списке, либо ни с каким из браузеров, поэтому цикл в данном случае наиболее удобен, нежели многократные конструкции if (...).

Orangesoda
На сайте с 22.08.2010
Offline
17
#5

Ааааах черт!

Тут же User_Agent.

Извиняюсь, сразу не обратил внимания! =)

A
На сайте с 19.07.2010
Offline
130
#6
Orangesoda:
А зачем проверять именно через цикл?

полностью согласен, а цикл зачем? :)

if( preg_match('%(Opera|Firefox|Chrome|Safari)%i', $_SERVER['HTTP_USER_AGENT'], $mm) ){
include strtolower($mm[1]).'.php';
}
.............
WT
На сайте с 08.10.2010
Offline
17
#7

Кому что ближе, тот с тем и работает) Кто-то через массивы проверяет, а кто-то через регулярки...

Это действительно каждому свое...

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)
A
На сайте с 19.07.2010
Offline
130
#8

2WebTih: это точно :)

freesoccer:
Проверка производится по совпадению с названием броузера (в данном случае Opera). Совпадение может быть лишь с одним из браузеров в списке, либо ни с каким из браузеров, поэтому цикл в данном случае наиболее удобен, нежели многократные конструкции if (...).

кстати, у Вас цикл не разрывается и возможно совпадение с несколькими браузерами.

Orangesoda
На сайте с 22.08.2010
Offline
17
#9

admak, в данном случае через цикл быстрее, чем связываться с регулярными.

F
На сайте с 06.06.2008
Offline
51
#10

admak - мой вариант это общий случай. Принудительное завершение цикла - это уже уточнение условия задачи ;)

Ваш вариант считаю замечательным, поскольку занимает всего 2 строки, но сам привык работать с массивами, поэтому такая реализация и пришла первой в голову.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий