Никита К.
1594 сообщения
#14 лет назад
Второй час решаю следующую проблему.

Есть скрипт, который определяет ширину экрана пользователя.
Если ширина меньше какого-то значения - выводим далее страницу ()
Если больше - переадресовываем на index.html, на которой расположен фрейм с index.php

Проблема в чем?
1. Если не применять Cookie для хранения информации "который раз зашел", то внутри фрейма снова переадресация, потом снова и т.д. Бесконечный цикл, в общем.
2. Если в Cookie записывать например "1", то "Если Cookie != 1, то переадресовываем, иначе - выводим страницу дальше". Всё ок, внутри серфинга нормально кликается по ссылкам и т.д. Но если снова зайти на главную () то нас не переадресовывает на index.html, на которой расположен фрейм.

Как быть? Как мне правильно определить надо переадресовывать или нет, чтобы и внутри фрейма работало
Виталий Я.
659 сообщений
#14 лет назад
Anexroid, покажите хотябы скрипт переадресатора , вслепую сложно что-либо сказать ...
Используйте сессии вместо куков , да и зачем вам фрейм ? Вот например :

<?php
session_start();
if(!isset($_SESSION) || empty($_SESSION)) {
if (isset($_GET)){
//если уже был запущен обработчик
$_SESSION=$_GET;
}
else {
//здесь организовать скрипт проверки размера экрана
//а вместо кука в зависимости от размера экрана в урл передать параметр сайз .
}
}
if($_SESSION==1) {
//а здесь вывод в зависимости от размера
}
if($_SESSION==2) {
//а здесь вывод в зависимости от размера
}
if($_SESSION==3) {
//а здесь вывод в зависимости от размера
}
?>

Примерно так , если заработает - скажите мне спасибо )
Никита К.
1594 сообщения
#14 лет назад
if(intval($resolution_width) > 600) 
{
setcookie('comp', 1);

if($_COOKIE != 1)
{
header("Location: ;);
}
}
Виталий Я.
659 сообщений
#14 лет назад
Anexroid, см. предыдущий пост )
к примеру 1-ширина экрана меньше 600 , 2 - больше . Это проверяет яваскрипт .
И передает нужный параметр урлом .
Никита К.
1594 сообщения
#14 лет назад
Не, нельзя так.

Смысл в чем:
Сайт сделан для мобильных телефонов (WAP)
Если человек зашел с компа (определяется по размеру экрана) - то выводим ему "заглушку" с фреймом (узким) в котором отображается наш сайт (WAP)
Виталий Я.
659 сообщений
#14 лет назад
Цитата ("Xazzzi"):
<?php
session_start();
if(!isset($_SESSION) || empty($_SESSION)) {
  if (isset($_GET)){
    //если уже был запущен обработчик
    $_SESSION=$_GET;
  }
  else {
  //здесь организовать скрипт проверки размера экрана
  //а вместо кука в зависимости от размера экрана в урл передать параметр сайз .
  }
}
if($_SESSION==1) {
  //а здесь вывод вап сайта
}
if($_SESSION==2) {
  //а здесь вывод фрейма с заглушкой
}
?>

Почему же нельзя ?
Андрей К.
1172 сообщения
#14 лет назад
Цитата ("Anexroid"):
if(intval($resolution_width) > 600) 
{
setcookie('comp', 1);

if($_COOKIE != 1)
{
header("Location: ;);
}
}

setcookie не добавляет ничего в $_COOKIE, пока не перезагрузите страницу.
И используя ваш метод, вы на редирект отправите любой мобильник с разрешением дисплея более 600 точек в горизонтальном положении, если у него есть автоматическая смена ориентации экрана.
Никита К.
1594 сообщения
#14 лет назад
Xazzzi, здесь, если я выведу фрейм, то $_SESSION будет == 2, и внутри фрейма будет опять выводится заглушка с фреймом и т.д.

Цитата ("Lisio"):

setcookie не добавляет ничего в $_COOKIE, пока не перезагрузите страницу.

Я в курсе, именно поэтому у меня при входе на site.ru - переадресация срабатывала, а затем, во фрейме, когда в куках уже было доступное значение - нет.

Цитата ("Lisio"):
И используя ваш метод, вы на редирект отправите любой мобильник с разрешением дисплея более 600 точек в горизонтальном положении, если у него есть автоматическая смена ориентации экрана.

Не спорю. Но в данном случае мне важно не 100% определение комп/мобильник, а правильный вывод содержимого
Антон Е.
279 сообщений
#14 лет назад
if(intval($resolution_width) > 600)
{
setcookie('comp', 1);

if($_COOKIE != 1)
{
header("Location: ;);
}
else
{
setcookie('comp',0);
}
}

мне кажется вот так должно работать,попробуй
Николай Т.
205 сообщений
#14 лет назад
Цитата ("Anexroid"):

Смысл в чем:
Сайт сделан для мобильных телефонов (WAP)
Если человек зашел с компа (определяется по размеру экрана) - то выводим ему "заглушку" с фреймом (узким) в котором отображается наш сайт (WAP)

user agent парсерить не хочется?
Максим Ф.
3195 сообщений
#14 лет назад
А у меня настолько современный мобильный, что я не хочу ваш wap, а хочу нормальный сайт. Как мне обойти ваш алгоритм?
Вот для этого, если вы обратите внимание, сайты имеют в хедере ссылку на wap. Пользователь счастлив, прогер пьёт пиво.
Считаю ваше решение некорректным в предпосылке к нему.
Никита К.
1594 сообщения
#14 лет назад
e1it3, там в принципе класс определяет: ширина/высота экрана, браузер, если мобила - то модель мобилы, если комп - то браузер

Цитата ("AlekartRu"):
А у меня настолько современный мобильный, что я не хочу ваш wap, а хочу нормальный сайт.

Этот сайт не имеет web-версии в принципе.

Цитата ("AlekartRu"):
Вот для этого, если вы обратите внимание, сайты имеют в хедере ссылку на wap.

А этот сайт имеет имеет в адресной строке браузера домен .mobi
Антон Е.
279 сообщений
#14 лет назад
Цитата ("neadekvat"):
neadekvat
да конструкция вообще странная,просто дополнил как по логике работать должно. Вообще очень жутко смотреть на код в котором ты сначала задаешь переменную в куках равную 1 и тут же проверяешь не равна ли она 1...думаю можно было найти решение покрасивее
Андрей К.
1172 сообщения
#14 лет назад
Цитата ("Anexroid"):
Не спорю. Но в данном случае мне важно не 100% определение комп/мобильник, а правильный вывод содержимого

А насколько вывод будет правильным, если я зайду с компа, используя браузер, который развернут только на 1/4 экрана?
Никита К.
1594 сообщения
#14 лет назад
Lisio, вам выдаст "заглушку". Скрипт определит Вас как "Комп - Имя браузера", и даст Вам независимо от настоящего размера экрана - 800px вроде.

Просто скрипт в главную очередь создан для того, чтобы определять размер экрана мобильных девайсов
Никита К.
1594 сообщения
#14 лет назад
Цитата ("_VersouL_"):
if(intval($resolution_width) > 600)
{
setcookie('comp', 1);

if($_COOKIE != 1)
{
header("Location: ;);
}
else
{
setcookie('comp',0);
}
}

мне кажется вот так должно работать,попробуй


При переходе по ссылке внутри фрейма - переадресация срабатывает. Что я, собственно, и предполагал
Никита К.
1594 сообщения
#14 лет назад
Может есть какое0то решение при помощи сессий?