2013-07-24 5 views
2

У меня есть сайт (www.website.com) и мобильный сайт (m.website.com), и я пытаюсь разрешить пользователям «просматривать полный сайт», если они хотят с мобильного. В настоящее время я использую Javascript для проверки ширины экрана на полном сайте, а затем перенаправления на мобильный.Посмотреть полный сайт с печеньем, javascript и мобильным перенаправлением

if (screen.width <= 699) { 
document.location = "http://m.website.com"; 
} 

Это прекрасно работает. На мобильном сайте есть кнопка «Посмотреть полный сайт». Когда вы нажимаете на нее, она перенаправляет вас на мой скрипт «force_desktop.php», который устанавливает cookie, а затем отправляет вас на главный сайт.

<?php 
setcookie("force_desktop", "1"); 
header("Location: http://www.mywebsite.com"); 
?> 

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

Logic

Если Cookie force_desktop найден

Затем выйдите

Else

тест размер экрана запуска

Вот код, который я пытался использовать, но Безразлично» т работы. Этот код помещается в мой файл head.php, который будет запускаться на каждой странице и помещается между тегами открытия и закрытия скриптов.

Попытка 1

if($_COOKIE['force_desktop'] == '1' { 
exit; 
} else if($_COOKIE['force_desktop'] != '1' { 
if (screen.width <= 699) { 
document.location = "http://m.website.com"; 
} 
}; 

Попытка 2

if(isset ($_COOKIE["force_desktop"])){ 
exit; 
else 
if (screen.width <= 699) { 
document.location = "http://m.mywebsite.com"; 
}; 

Альтернативная логика, которая могла бы работать

ЕСЛИ Cookie force_desktop не найден и Screen.Width < = 699

Затем перенаправлять m.myseite.com

Else

Выход

Примечание

Я запустить следующий сценарий, чтобы убедиться, что печенье помещаются, и является.

<?php 
print_r($_COOKIE); 
?> 

Я бежал из идей и знать мое кодирование не является правильным, особенно если/другое заявление в If/Else заявление. Я также не уверен, что лучше использовать «isset», чтобы узнать, используется ли cookie или ($ _COOKIES ['variable'] == "#"). Я бы очень признателен за хорошие отзывы об этом.

Заранее спасибо за вашу помощь и предложения,

Matt

ответ

2

Вы смешивание JavaScript и PHP. Вы пытаетесь использовать screen.width в своем PHP-скрипте, что не имеет смысла. Для вывода JavaScript на страницу вам нужно использовать оператор echo. Затем он проверяет разрешение экрана пользователя и выполняет перенаправление.

Попробуйте это:

if(isset ($_COOKIE["force_desktop"])){ 
    exit; 
} 
else 
{ 
    echo '<script> 
    if (screen.width <= 699) { 
    document.location = "http://m.mywebsite.com";} 
    </script>'; 
}; 
+0

спасибо Амаль для Qui ck ответ. Я понимаю логику этого ответа и что если он не найдет cookie «force_desktop», он напишет (эхо) скрипт, который проверяет ширину экрана в html. Однако я не уверен, где в коде разместить это. Я поместил это в свой файл «head.php» и поместил его как есть в тегах php внутри тегов скриптов и даже сохранил его в отдельный файл php и использовал php для проверки того, работает ли это. Я просто не могу понять, как правильно это реализовать. Надеюсь, вы сможете помочь этому новичку немного больше, Еще раз спасибо Amal. – Matt

+0

@Matt: просто добавьте скрипт в начало кода вашего полного сайта, и он должен работать. –

+0

Спасибо Амалу за то, что указали мне в правильном направлении. Там должно быть «}» перед тегом закрывающего скрипта для запуска вызова screen.width, вот что вызывало у меня столько проблем. Я также добавил тег "}" перед else и "{" после else. Еще раз спасибо человеку, отмеченному как правильный ответ. – Matt

-1

Вы не можете смешивать Javascript и PHP, JavaScript является передним концом и РНР заднего конца. Попробуйте что-то вроде этого:

if($something){ 

    Header("Location: somewhere.php"); 

} 
0

вы должны сделать этот тест в верхней части страницы PHP, и уверен, что вы не можете смешать PHP и Java Script, как этот

и может изменить этот код, как

<?php 
$flag = 0; 
if(isset($_COOKIE['force_desktop']))$flag++; 
?> 

позже на странице используется код, как только <head> тег начинается

.. 
.. 
<head> 
<?php 
if(!$flag){ 
echo '<script> 
if (screen.width <= 699) { 
document.location = "http://m.mywebsite.com"; 
</script>'; 
} 
?> 
Смежные вопросы