PHP cookie суперглобальный, похоже, не установлен - PullRequest
2 голосов
/ 03 апреля 2011

Я сейчас занимаюсь разработкой сайта на PHP.Я пытаюсь установить cookie, в котором будет храниться идентификатор пользователя.Это для входа в систему, и мне нужен идентификатор пользователя, чтобы иметь возможность добавить его в разные таблицы в базе данных MySQL.

Когда пользователь успешно входит в систему, он создает сеанс PHP и файл cookie, а затем использует обновление метатега для перехода на страницу индекса.

if ($row = mysql_fetch_array($result))
{
    setcookie('id', $row['use_id']);
    $_SESSION['user'] = $username;
    setcookie('userID', $row['use_id']);
    echo '<meta http-equiv="refresh" content="0;url=../index.php">';
}

Если я удаляю мета-обновление и просто отображаю cookie, используя $_COOKIE['userID'], он работает нормально, но когда я пытаюсь использовать $_COOKIE['userID'] на странице index.php после того, как она выполнит мета-обновлениеничего не отображается.

Ответы [ 2 ]

5 голосов
/ 03 апреля 2011
setcookie('userID', $row['use_id'], 0, "/");

Редактировать: ноль для времени истечения.

Ваш файл cookie не отображается для index.php, так как он был установлен из скрипта в подкаталоге.Так что это не видно для страниц на верхних уровнях.Вам необходимо установить путь к куки (4-й параметр) в «/», и куки будут доступны во всем домене.

По этой причине ваш куки не был виден index.php.

header('Location: ../index.php');
                  ^^^

Вы перенаправили страницу на верхний уровень каталога, но ваш файл cookie не был установлен для всего домена.

2 голосов
/ 03 апреля 2011

Если каталог страниц индекса выше каталога, из которого вы установили файл cookie, файл cookie будет недоступен на странице индекса. И я предлагаю вам использовать заголовок местоположения для перенаправлений. Надеюсь, это поможет вам.

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