У меня есть этот код на моей домашней странице
<?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;
?>
но я не получаю желаемого поведения: как только я захожу на веб-сайт со своего мобильного телефона, я правильно перенаправлен на мобильную версию, но как только я нажимаю на ссылку, чтобы получить версию для настольного компьютера, я возвращаюсь к мобильной версии. Что мне не хватает?
Спасибо! 🙂
Не забудьте позвонить 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
переключиться на настольную версию.
Исходя из вашего текущего кода — у вас должен быть отдельный сеансовый 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;
?>