javascript — Перенаправление версий для мобильных ПК вручную

У меня есть этот код на моей домашней странице

<?php
if(isset($_SESSION['mobile'])){
if($_SESSION['mobile']==1){
echo '
<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
window.location = "mobile/index.php";
}
</script>';
}
}
else{
$_SESSION['mobile']=1;
echo '
<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
window.location = "mobile/index.php";
}
</script>';
}
?>

и в мобильной версии моего сайта, чтобы вернуться к дестоп версии, я вставил ссылку на эту почти пустую страницу «redirect.php»

<?php
$_SESSION['mobile']=0;
header("location: ../index.php");
exit;
?>

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

Спасибо! 🙂

0

Решение

Не забудьте позвонить session_start() функционировать перед использованием сессий.

Лучше использовать это, чтобы уменьшить код:

<?php session_start();

if (isset($_GET["desktop"])) {

// DESKTOP
$_SESSION["mobile"] = 0;
...

} else {

// MOBILE
if (!isset($_SESSION["mobile"])) { $_SESSION["mobile"] = 1; }
if ($_SESSION["mobile"] == 1){ echo '<script>...</script>'; }
...

}
?>

И ссылка на домашнюю страницу с ?desktop=1 переключиться на настольную версию.

1

Другие решения

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

<?php
if(!$_SESSION['manuall_overide'])
if(isset($_SESSION['mobile'])){
if($_SESSION['mobile']==1){
echo '
<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
window.location = "mobile/index.php";
}
</script>';
}
}
else{
$_SESSION['mobile']=1;
echo '
<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
window.location = "mobile/index.php";
}
</script>';
}
}
?>

<?php
$_SESSION['manuall_overide']=1;
header("location: ../index.php");
exit;
?>
0

По вопросам рекламы [email protected]