Подключаем 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