Почему этот файл cookie не работает? - PullRequest
1 голос
/ 17 декабря 2011

Мой сайт имеет полную версию и мобильную версию.При вводе URL-адреса index.php обнаружит, что клиент пользователя перенаправляется на полную или мобильную версию.Это отлично работает.Пользователи с настольного клиента также могут переключиться на мобильную версию.Но у меня проблемы с переходом мобильного клиента на полную версию.Коды здесь:

// index.php
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('...',substr($useragent,0,4))) {
  $type = 'mobile';
} else {
  $type = 'full';
}
if ($type == 'mobile' and $_COOKIE['switch'] != 'full') {
  header ('Location: m/');
} else {
  include './front.html.php';
}
?>

// m/switch.php  page when user click
<?php
setcookie('switch', 'full', time() + 60);
header('Location: ../');
?>

Я также изменил порядок setcookie и header, но все еще не работает.запрещено в мобильном устройстве?

* Обновление *

Я добавил $type = 'mobile'; перед условием, поэтому независимо от того, какой клиент, предполагаетсябыть мобильнымЗатем я использовал Chrome на своем ноутбуке для тестирования, и куки, безусловно, включены.Это идет в мобильную версию (хорошо), но нажмите switch по-прежнему не идет в полную версию.Так что это проблема самого куки.

1 Ответ

1 голос
/ 19 января 2012

Вам необходимо указать путь к cookie

setcookie('switch', 'full', time() + 60, '/');

Из руководства мы можем узнать

http://php.net/manual/en/function.setcookie.php

Путь на серверев котором куки будут доступны на.Если установлено значение «/», файл cookie будет доступен во всем домене.Если установлено значение «/ foo /», файл cookie будет доступен только в каталоге / foo / и во всех его подкаталогах, таких как / foo / bar / домена.Значением по умолчанию является текущий каталог, в котором устанавливается cookie.

В вашем примере скрипт switch.php установит cookie по пути /m/ (значением по умолчанию является текущий каталог),Однако ваш index.php пытался прочитать форму cookie /, поэтому перенаправление не удастся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...