Сценарий выхода из системы не работает, если перенаправление установлено - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть следующий сценарий выхода из системы:

setcookie("key", "", time() - 36000);
setcookie("usr_email", "", time() - 36000);
session_destroy();
header("Location: http://www.site.net/");

Когда мне нравится эта страница (logout.php), она отлично работает и выходит из системы.

Но по какой-то причине, когда я использую:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^log-out /logout.php

Я вижу, что перенаправление работает, но выход из системы не выполняется.

РЕДАКТИРОВАТЬ: только что отмечено, после перенаправления обратно на домашнюю страницу, куки все еще доступны. Просто пояснение, если я сразу перейду к файлу php выхода из системы, он прекрасно работает.

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Я думаю, что проблема в том, что дефис в вашем файле htaccess. Попробуйте это:

RewriteRule ^log\-out /logout.php

Не могли бы вы также сообщить об ошибках / поведении, которое происходит?

Edit:
Проблема в вашем PHP тогда. Прежде всего, я бы рекомендовал хранить связанные с логином данные в сеансах, а не в файлах cookie. Файлы cookie могут добавляться и редактироваться пользователями.

В любом случае, код должен успешно очистить, если не удалить, куки. Возможно, вы проверяете, вошли ли вы в систему, основываясь на том, существуют ли файлы cookie, а не на их содержимом. В этом случае попробуйте if(empty($_COOKIE['key'])), который проверит, пусто оно или нет.

Чтобы полностью удалить cookie: unset($_COOKIE['key']).

Кстати, session_destroy() вообще не имеет отношения к куки.

Редактировать 2:
Попробуйте назначить файл cookie для своего домена и всех его поддоменов (включая www):

setcookie('key', '', time() - 36000, '/', '.mysite.net');

Сделайте то же самое при добавлении куки.

0 голосов
/ 03 февраля 2012

Попробуйте это в файле htaccess

Options +FollowSymlinks
RewriteEngine on

RewriteBase /

RewriteRule ^log\-out logout.php

Установите для RewriteBase базовый URL: надеюсь, вы это знаете.

...