Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: redirect на мобильную версию

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Aligatro
Отправлено: 19 Февраля, 2014 - 01:17:04
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Доброго времени суток, дорогие форумчане. Я тут в попытках решить свою нетривиальную задачу - зашел в тупик. В общем я сделал адаптацию своего сайта под мобильные устройства и добавил переключатель между версиями, такого вида.

PHP:
скопировать код в буфер обмена
  1.  /*-- Переключение на мобильную версию сайта ссылкой --*/
  2.  session_start(); // начинаем сессию
  3.  if (isset($_REQUEST['version'])) { // перехватываем линк
  4.         $_SESSION['version'] = $_REQUEST['version'];
  5. }
  6. function mobileview($on){ // создаем удобную функцию
  7. $on=$_SESSION['version'] == 'mobile';
  8. return $on;
  9. }


Все работает супер, но я хотел бы сделать так, что-бы при первом попадании на сайт пользователя с мобильным браузером принудительно бросало на pda версию (но только 1 раз, что бы потом можно было переключиться на десктоп сессию). В общем сам вопрос: как это сделать? =))

P.s пытался сделать через пень колоду (куккисы и прочее мракобесие ):

PHP:
скопировать код в буфер обмена
  1.  
  2.  if (wp_is_mobile()) {
  3.         setcookie('mobile', '1', time()+9999999, '/', home_url());
  4.         header('Location:' . home_url() . '/?version=mobile');
  5. }
  6.  
  7. if ($_COOKIE['mobile'] != '1') {
  8.    if ($_SESSION['version'] == 'desktop') {
  9.     setcookie('mobile', '2', time()+9999999, '/', home_url());
  10.     header('Location:' . home_url());
  11.    }
  12. }
  13.  

но понял, что изобретаю велосипед и это можно решить куда проще. Да и вышеприведенный скрипт к сожалению не сработал -)

Заранее огромное спасибо за помощь =)

(Отредактировано автором: 19 Февраля, 2014 - 01:18:11)

 
 Top
PHPLamer
Отправлено: 19 Февраля, 2014 - 11:50:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)






Нет?
 
 Top
Aligatro
Отправлено: 19 Февраля, 2014 - 23:06:15
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




PHPLamer пишет:
Нет?

Вы неверно меня поняли... C определением browser agent, у меня проблем нет. У меня проблема в том, что бы перевести смартфон-пользователя в мобильный вид при первом заходе на сайт (или единожды, принудительно инициировать сессию ?version=mobile) но при "мануальном" изменении версии на desktop переключить соответствующую сессию на полную =)
 
 Top
Aligatro
Отправлено: 22 Февраля, 2014 - 15:06:38
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Ответьте, пожалуйста. Если не понятен вопрос, я могу более детально его расписать. Просто я запутался с этой ерундой, а хотелось бы функционал по максимуму развить.

Спасибо.
 
 Top
PHPLamer
Отправлено: 24 Февраля, 2014 - 09:07:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




Aligatro

Зависит от того как вы отображаете мобильную версию, если для мобильной версии существует отдельный URL и на нём свои ссылки на другие ресурсы сайта с мобильным видом это одно и при определении HTTP_USER_AGENT можно просто редиректить туда пользователя, а дальше он уже будет гулять по "адаптированным" ссылкам.

Если же мобильное представление строиться в зависимости от сессионной переменной или cookies то назначать эту переменную при определении HTTP_USER_AGENT.

Ну или я снова не понял в чём проблема.

(Отредактировано автором: 24 Февраля, 2014 - 09:08:14)

 
 Top
Aligatro
Отправлено: 24 Февраля, 2014 - 22:36:48
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




PHPLamer пишет:
Зависит от того как вы отображаете мобильную версию, если для мобильной версии существует отдельный URL и на нём свои ссылки на другие ресурсы сайта с мобильным видом это одно и при определении HTTP_USER_AGENT можно просто редиректить туда пользователя, а дальше он уже будет гулять по "адаптированным" ссылкам.

Если же мобильное представление строиться в зависимости от сессионной переменной или cookies то назначать эту переменную при определении HTTP_USER_AGENT.

Ну или я снова не понял в чём проблема.

Спасибо, что откликнулись. Моя проблема заключалось в переключении сессии для впервые зашедшего пользователя, на мобильную, только и всего =) С определением user_agenta у меня с самого начала проблем не было -) Я тут порылся в буржуйском вебе и все же нашел решение. Как и следовало ожидать оно оказалось до безобразия простым.

PHP:
скопировать код в буфер обмена
  1.  
  2. if( !isset($_SESSION['version']) && wp_is_mobile()) {
  3.    wp_redirect( '/?version=mobile' );
  4. }
  5.  


wp_redirect можно заменить банальным header location, просто wordpress его почему-то адекватно не распознает.

P.s Кстати возник еще один вопрос, для того что-бы определить открыта ли сессия, что лучше использовать? isset, empty или $_SESSION['version'] == '' ? Просто кто-то говорит isset коректно, другие говорят этот метод не обрабатывается старыми браузерами, в общем я запутался _))

Спасибо за помощь =)

(Отредактировано автором: 25 Февраля, 2014 - 00:11:51)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB