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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> куки странно себя ведут, нужно перезапускать браузер 
V
    Опции темы
begin
Дата 18.6.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня на сайте аутентификация сделана на куках.
Но вот проблема. Если пользователь решит выйти из одной учетной записи, и тут же войти под другим логином, то сайт просто никак не реагирует, но и не пишет, что логин неправильный. Но если перезапустить браузер, то можно снова входить в любую учетку. Данная проблема одинаково проявляется во всех трех браузерах.
Код аутентификации выглядит так:
Код

//выход
if ($_GET['logout']=='1')
{
setcookie("login");
header('Location: index.php');
}

//если уже осуществлен вход
if ($_COOKIE['login']!==NULL)
{
header('Location: index.php');
}
else
{
$login=mysql_real_escape_string($_POST['login']);
$query="select * from `t_user` where `login`='$login'";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
$pass=$res['pas'];
$id=$res['id'];
//нет кук и ПРАВИЛЬНЫЕ данные из формы
if (md5($_POST['pas'])==$pass)
{
setcookie("login", $id, time()+2592000);
header('Location: index.php');
}
//нет кук и НЕПРАВИЛЬНЫЕ данные из формы
else
{
//выводим форму входа
}
}

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


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


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

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



Код

if ($_GET['logout']=='1')
{
setcookie("login", "null");
header('Location: index.php');
}



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


Опытный
**


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

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



Цитата(MoLeX @ 18.6.2009,  13:00)
Код

if ($_GET['logout']=='1')
{
setcookie("login", "null");
header('Location: index.php');
}

Логику понял  smile 
правда, это не сработало:
Код

setcookie("login", "null");

но чуть изменил, и все теперь работает отлично:
Код

setcookie("login", NULL);


Благодарю  smile 
PM MAIL   Вверх
MoLeX
Дата 18.6.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



begin,  smile

Добавлено через 1 минуту и 2 секунды
да, темку отметь раз все работает
Цитата(begin @  18.6.2009,  13:19 Найти цитируемый пост)
но чуть изменил, и все теперь работает отлично:



Цитата(begin @  18.6.2009,  13:19 Найти цитируемый пост)
Логику понял

а логика в том чтобы кукам присвоит заранее неверное значение или же поставить им дату в прошлом что их удалит


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


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


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

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



Код

//если уже осуществлен вход
if ($_COOKIE['login']!==NULL)
{
header('Location: index.php');
}


а почему не делаешь проверку? ведь кука может быть неправильной?

Добавлено через 6 минут и 2 секунды
Код

//выход
if( $_GET['logout'] == '1' )
{
    setcookie('login', NULL);
    setcookie('passw', NULL);
    header('Location: index.php');
}

//если уже осуществлен вход
if( isset($_COOKIE['login']) AND isset($_COOKIE['passw']) )
{
    $query = 'select * from `t_user` where `login`='.mysql_escape_string($_COOKIE['login']).' AND `pass` = '.mysql_escape_string($_COOKIE['login']);
    
    // делаем проверку, и если все норм то пускаем
    //header('Location: index.php');
}
else
{
    $login = mysql_real_escape_string($_POST['login']);
    $query = 'select * from `t_user` where `login`='.$login;
    $result = mysql_query($query, $db) or die(mysql_error());
    $res = mysql_fetch_array($result);
    $pass = $res['pas'];
    $id = $res['id'];
    
    //нет кук и ПРАВИЛЬНЫЕ данные из формы
    if( md5($_POST['pas']) == $pass )
    {
        setcookie('login', $id, time()+2592000);
        setcookie('passw', md5($_POST['pas']), time()+2592000);
        header('Location: index.php');
    }
    else
    {
    
    }
}


Добавлено через 6 минут и 12 секунд
что-то типо такого

Добавлено через 6 минут и 28 секунд
но лучше глянь в сторону сессий


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


Опытный
**


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

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



Я еще раз подумал, и решил чуть усложнить задачу хакерам: не буду хранить в куки ид пользователя (ни уж тем более ни логин ни пароль). Просто про входе буду создавать уникальный идентификатор, записывать его в базу для данного юзера и этот же идентификатор хранить в куки. Так хоть не будет явно видно лишние данные, да и идентификатор будет время от времени меняться (куки ведь не навечно ставятся)
PM MAIL   Вверх
MoLeX
Дата 19.6.2009, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(begin @  18.6.2009,  21:10 Найти цитируемый пост)
Просто про входе буду создавать уникальный идентификатор, записывать его в базу для данного юзера и этот же идентификатор хранить в куки.

+ делай проверку по браузеру и оси


--------------------
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.

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


 




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


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

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