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
Форумы портала PHP.SU :: Версия для печати :: redirect на мобильную версию
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » redirect на мобильную версию

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

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

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.  

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

Заранее огромное спасибо за помощь =)
2. PHPLamer - 19 Февраля, 2014 - 11:50:56 - перейти к сообщению


Нет?
3. Aligatro - 19 Февраля, 2014 - 23:06:15 - перейти к сообщению
PHPLamer пишет:
Нет?

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

Спасибо.
5. PHPLamer - 24 Февраля, 2014 - 09:07:32 - перейти к сообщению
Aligatro

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

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

Ну или я снова не понял в чём проблема.
6. Aligatro - 24 Февраля, 2014 - 22:36:48 - перейти к сообщению
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 коректно, другие говорят этот метод не обрабатывается старыми браузерами, в общем я запутался _))

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

 

Powered by ExBB FM 1.0 RC1