Подключаем API яндекса для определения мобилы
1.
Вантуз-мен (20.08.2011 / 13:50)
В файле includes/header.php подключаем код
<?
// ------------------------ Автоопределение системы -----------------------------//
if (!empty($config['webthemes']) && empty($_SESSION['my_themes'])) {
if (empty($_SESSION['log']) || empty($_SESSION['par'])) {
$headers = array();
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0 && $key != 'HTTP_HOST' && $key != 'HTTP_CONNECTION') {
$key = strtolower(strtr(substr($key, 5), '_', '-'));
$headers[] = $key . ': ' . $value . "\r\n";
}
}
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=> implode($headers),
)
);
$device = trim(file_get_contents("http://phd.yandex.net/detect", false, stream_context_create($opts)));
if ($device=='<yandex-mobile-info-error>Unknown user agent and wap profile</yandex-mobile-info-error>') {
$config['themes'] = $config['webthemes'];
}
}
}
Определение мобильный браузер или обычные берет на себя яндекс, api коненчо там не очень удобное, но все же, если не может определить браузер, то включается web тема
2.
Саня (20.08.2011 / 14:07)
Лучше в боевом проекте не юзать, Яндекс не любит нагрузку на свои сервисы и может заблочить IP... (хотя может на апи и нет ограничений, хотя когда я парсил поиск, то после 20 запросов блокируют).
Но после вчерашнего сбоя на 3 часа что положил все сервисы Яндекса, ему такие вещи доверять нельзя точно.
3.
Дмитрий (20.08.2011 / 14:17)
Пробовал подключать геолокацию по IP в файл includes/header.php - капитально тормозило генерацию страниц. Пришлось отказаться от этой фенечки.
Яндекс не будет разве тормозить работу скрипта? Ведь перед генерацией страницы будут выполняться дополнительные действия - отправка запроса на удаленный сервер, получение ответа и обработка его.
4.
Вантуз-мен (20.08.2011 / 15:08)
ну по идее там один раз при входе на сайта запросит и данные запишутся в сессию, ну а так да, я согласен, API сторонних сайтов лучше всего по-минимому использовать
5.
ктулху (20.08.2011 / 16:37)
не забывайте ставить минимальный таймаут. и да, во время ддоса будет ппц...
6.
Удаленный (20.08.2011 / 17:20)
не нужно
7.
Валерий (20.08.2011 / 17:25)
Зачем это надо вообще? Нормальные офлайн функции есть
http://wapdisk.ru/86
8.
Studentsov (20.08.2011 / 18:14)
Яндекс не только по юзер-агенту определяет
9.
Вантуз-мен (20.08.2011 / 18:29)
7.
valerik, это уже давно устаревшая функция, она не определит если чел зашел с андроида или айфона
10.
ramzes (20.08.2011 / 19:29)
9.
Vantuz, а яндекс определит андроид если тот не через дефолтный уа? крайне сомнительно, а с дефолтным и своими силами без проблем определить
11.
Studentsov (20.08.2011 / 20:12)
Определяет как андроид, я с Opera Mobile серф веду.
12.
ramzes (20.08.2011 / 20:35)
11.
Адвокат Дьявола,
http://whatsmyuseragent.com/ какой у тебя уа?
Сорри за оффтоп
уже нашел
Браузер: Opera/9.80 (Android 2.2.2; Linux; Opera Mobi/ADR-1103211415; U; ru) Presto/2.7.81 Version/ 11.00
Ни какой яндекс не нужен для определения
13.
ZaRiN (20.08.2011 / 23:08)
Если и юзать апи сторонних сервисов то результаты обязательно кешировать и сначало у себя проверять наличие информации и только потом дергать апи, а вообще лучше апи не юзать, а то в пиковые моменты может генерация страницы существенно увеличится и тот же самый яндекс может выкинуть сайт с индекса из-за медленной загрузки
URL:
https://visavi.net/topics/24242