Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает логаут, (лог-ин основан на куки и сессиях) 
V
    Опции темы
Crusaderr
Дата 18.8.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Приветствую!
Механизм работы авторизации на моем сайте такой:
У юзера проверяется, есть ли сессия. Если сессии нет,- проверяются его куки. Если в куках записаны логин и пароль(вернее, md5 пароля), они сверяются с данными из базы и в случае успеха юзер входит в систему и стартует сессия.
Код проверки:
Код
if (!isset($_SESSION['id']))
    {
        if(isset($_COOKIE["idpolzovatelya"])&&isset($_COOKIE["sekretnyyparolpolzovatelya"]))
        {
        $id = $_COOKIE["idpolzovatelya"];
        $pass = $_COOKIE["sekretnyyparolpolzovatelya"];
        $res1 = mysql_query("SELECT * FROM user WHERE id='$id'AND pass='$pass'");
            if(mysql_num_rows($res1)==1)
            {
            $res1 = mysql_fetch_array($res1);
            $_SESSION['id'] = $res1['id'];    //устанавливаем id в сессию
            }
        }
        else {
        header ("location: http://".$_SERVER["SERVER_NAME"]."/logout/");
        exit;
        }
    }

При выходе по идее должна уничтожаться сессия и удаляться файлы кук. Куки не удаляются (я посмотрел в опере).
Код логаута:
Код
session_start();    //инициализируем механизм сессий
setcookie ("idpolzovatelya", "", time() - 3600); 
setcookie ("sekretnyyparolpolzovatelya", "", time() - 3600);
session_destroy();    //удаляем текущую сессию
Header("Location: index.php");

Подскажите, как сделать так чтобы куки удалялись и сессия убивалась?
PM MAIL WWW ICQ Jabber   Вверх
SneG0K
Дата 19.8.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



вот сессию почистить можно так
Код

session_destroy();
$_SESSION = array();

куки я удаляю так
Код

setcookie("cookie"); \\Без установки временных флагов.

PM WWW Skype   Вверх
Ипатьев
Дата 19.8.2009, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Странно. Зачем столько разговоров про сессию если вопрос состоит в том, как очистить куки.
В первую очередь надо помнит о том, что убивать куку следует с теми же точно параметрами, с которыми она ставилась
PM MAIL   Вверх
MoLeX
Дата 19.8.2009, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

setcookie ("idpolzovatelya", "", time() - 3600); 
setcookie ("sekretnyyparolpolzovatelya", "", time() - 3600);


можно не указывать время в прошедшей форме ( time() - 3600 ), достаточно занчение куки обнулить

Код

setcookie ("idpolzovatelya", ""); 
setcookie ("sekretnyyparolpolzovatelya", "");



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Crusaderr
Дата 24.8.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Проблема была в том, что человек не мог выйти.. Куки оставались, но были пустыми. решил так:
сменил
Код

   if(isset($_COOKIE["idpolzovatelya"])&&isset($_COOKIE["sekretnyyparolpolzovatelya"]))

на
Код

    if(isset($_COOKIE["idpolzovatelya"])&&$_COOKIE["idpolzovatelya"]!=""&&isset($_COOKIE["sekretnyyparolpolzovatelya"])&&$_COOKIE["sekretnyyparolpolzovatelya"]!="")

Всем спасибо за внимание =)
PM MAIL WWW ICQ Jabber   Вверх
mexico
Дата 25.8.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Цитата

 if(isset($_COOKIE["idpolzovatelya"])&&$_COOKIE["idpolzovatelya"]!=""&&isset($_COOKIE["sekretnyyparolpolzovatelya"])&&$_COOKIE["sekretnyyparolpolzovatelya"]!="")

Тихий ужос )))  уважаемый Crusaderr а вы не хотели бы узнать что делает функция isset перед тем как ее использовать? 

isset() - Определяет, существует ли переменная.
empty() - Определяет, есть ли у переменной какое либо значение.


PM MAIL   Вверх
MoLeX
Дата 25.8.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



интересно, если у меня стоят эти куки я получу статус админа?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.