перенаправление на мобильную версию и обратно

djkoff

Новичок
Подскажите, пожалуйста, как сделать переход с полной версии сайта на мобильную, и если пользователь захочет перейти с мобильной на полную зафиксировать его на полной, а не снова перенаправлять на мобильную?
 

djkoff

Новичок
PHP:
<?php

$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$mobile = strpos($_SERVER['HTTP_USER_AGENT'],"Mobile");
$symb = strpos($_SERVER['HTTP_USER_AGENT'],"Symbian");
$operam = strpos($_SERVER['HTTP_USER_AGENT'],"Opera M");
$htc = strpos($_SERVER['HTTP_USER_AGENT'],"HTC_");
$fennec = strpos($_SERVER['HTTP_USER_AGENT'],"Fennec/");
$winphone = strpos($_SERVER['HTTP_USER_AGENT'],"WindowsPhone");
$wp7 = strpos($_SERVER['HTTP_USER_AGENT'],"WP7");
$wp8 = strpos($_SERVER['HTTP_USER_AGENT'],"WP8");
if ($ipad || $iphone || $android || $palmpre || $ipod || $berry || $mobile || $symb || $operam || $htc || $fennec || $winphone || $wp7 || $wp8 === true) {
	header('Location: http://m.medika-med.ru'); 
}

?>
Есть такой код перенаправление на мобильну версия, а вот как сделать обратно на полную версию и с фиксацией я не знаю.
 

djkoff

Новичок
знаю! :)
ну если записывать по IP, то не факт что на этом устройстве оно не сменится и в следующий раз пользователя скрипт снова не отправит на мобильную версию.
 

workOnFood

Новичок
знаю! :)
ну если записывать по IP, то не факт что на этом устройстве оно не сменится и в следующий раз пользователя скрипт снова не отправит на мобильную версию.
Тогда используй куки. Что-то я не подумал о незарегистрированных и неавторизованных пользователях)

Вешай куку допустим mobile_version = 1 в случае если используюется мобильная версия и перезаписывай на mobile_version = 0 если он переключился на обычный вид. В скрипте проверяй значение и перенаправляй в соответствие со значением mobile_version.
 

djkoff

Новичок
Написал такой код

PHP:
if (isset($_GET['versm'])) {
	if ($_GET['versm'] == 'full') {
		setcookie('mobile', true, time()+9999999');
		header('Location: http://www.domain.ru');
	}
}

if (empty($_COOKIE['mobile']) || $_COOKIE['mobile'] == false) {
	if ($ipad || $iphone || $ipod || $android || $symb || $operam || $htc || $winphone || $berry === true) {
		setcookie('mobile', false, time()+9999999);
		header('Location: http://m.domain.ru');
	} else {
		setcookie('mobile', true, time()+9999999);
		header('Location: http://www.domain.ru');
	}
}
но если вернуться на полную версию сайта через domain.ru/index.php?versm=full то он не запоминает новые куки и снова кидает на мобильную версию, что и как мне сделать? подскажите пожалуйста!
 

workOnFood

Новичок
PHP:
setcookie('mobile', false, time()+9999999, '/');
path параметр нужно указывать для корня сайта. А так у тебя кука устанавливается только для той странички на которой она устанавливается.
 

djkoff

Новичок
не получилось даже так :(

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

а документации разной про куки я уже столько поначитался %)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
PHP:
setcookie('mobile', false, time()+9999999, '/');
path параметр нужно указывать для корня сайта. А так у тебя кука устанавливается только для той странички на которой она устанавливается.
Там домены разные.
 

djkoff

Новичок
workOnFood
всё дописал как вы посоветовали, но проблема не решилась.
при заходе с моб.устройства на domain.ru/?versm=full, он не перезаписывает куки и не заходит на полную версию, а снова отправляет меня на моб.версию сайта:(
 

Вурдалак

Продвинутый новичок
Судя по синтаксической ошибке, ты показываешь нам не тот код, который выполняется — очень трудно помочь в такой ситуации.

P.S. После header('Location: ...') необходимо так или иначе завершать работу скрипта.
 

djkoff

Новичок
полный код вот

PHP:
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$symb = strpos($_SERVER['HTTP_USER_AGENT'],"Symbian");
$operam = strpos($_SERVER['HTTP_USER_AGENT'],"Opera M");
$htc = strpos($_SERVER['HTTP_USER_AGENT'],"HTC_");
$winphone = strpos($_SERVER['HTTP_USER_AGENT'],"WindowsPhone");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");

if (empty($_COOKIE['mobile']) || $_COOKIE['mobile'] == false) {
    if ($iphone || $ipod || $android || $symb || $operam || $htc || $winphone || $berry === true) {
        setcookie('mobile', false, time()+9999999);
        header('Location: http://m.domain.ru');
    } else {
        setcookie('mobile', true, time()+9999999);
        header('Location: http://www.domain.ru');
    }
}

if (isset($_GET['versm'])) {
    if ($_GET['versm'] == 'full') {
        setcookie('mobile', true, time()+9999999');
        header('Location: http://www.domain.ru');
    }
}
так что я не понимаю что у меня не так и почему это дело не работает. подскажите, пожалуйста!
 

djkoff

Новичок
Вурдалак
А как мне найти эту ошибку? В каком именно месте она?
 

workOnFood

Новичок
djkoff
PHP:
$berry === true
Всегда будет давать false, хоть это и не критично. И еще устанавливая в куку значение false ты ее удаляешь.
 

Beavis

Banned
ну запусти этот код и увидишь

тебе же сказали что надо при установке куки указывать путь и домен, а ты показываешь код где этого нет, и удивляешься, почему не работает..

и прочитай тут warning
 
Сверху