[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: COOKIE
OTSHELNIK
Прочитал важную тему раздела. Скачал готовый скрипт. Поразбирал его. Былобы наверное проще,просто втупую поставить скрипт и не заморачиваться мне,но.. Мне нужно разобраться,чего не смог сделать самостоятельно при разборе скрипта авторизации. Вот несколько вопросов:

1. Как что-либо записывая в COOKIE с сайта на компьютер? Покажите пожалуйста на примерах.
2. "...Здесь мы генерим уникальный хэш, который сам по себе не несет никакой полезной информации, записываем его в куку и специальное поле в таблице. Теперь идентифицировать пользователя можно сверяя значение куки со значением этого поля." было сказано в топ-теме. А вот как допустим при новой авторизации в COOKIE перезаписывать этот случайный хэш.
3. Как при входе на сайт доставать изх COOKIE необходимое и как потом то можно использовать?
4. Как удалять COOKIE у пользователя,если он жмёт чудо-кнопку "Выход"?
5. И как именно организовать запись в COOKIE по желанию пользователя?(на сайтах обычно стоит кнопочка "Запомнить меня")

Это основные вопросы. Если можно,примеры,чтобы было понятно всё. Я почитал в интернете о работе с куками,но ничего не понял. Просто у меня сейчас мною написанная авторизация-максимум всё держится на $_SESSION['id_user'] и при закрытии браузера или некотором времени неактивности приходится авторизовываться заново,что может не только мне принести неудобства.



Спустя 1 час, 22 минуты (24.04.2010 - 11:25) sl4mmer написал(а):
OTSHELNIK
1) браузер обращаясь к серваку, первым делом получает заголовки (HEADERS), с вместе с ними кукис и передаються, это происходит до начала любого вывода- если например попробуешь записать чтото в кукис после того как какая либо инфа ушла в поток вывода браузера (хоть один символ)- тебе выдаст ошибку - мол " не могу изменить заголовки, заголовки уже отправлены". Ахраняться кукисы в специальном разделе кэша браузера.

2)дак вместе с куком )) отправляешь новый просто и все...

3) данные куки доступны в суперглобальных ассоциативном массивах $_COOKIE и $HTTP_COOKIE_VARS.где ключом являеться имя кукиса

4)для удаления кукиса просто установи кукиш с таким же именем и пустыми параметрами

5) Для этого тебе нужно установить время жизни кукиса - это третий параметр в setcookie() после имени и значения. Время жизни это время в юникс формате до которого он действителен например

SetCookie("Cookie_na_chas","Ya chasovoi cookie XDD)",time()+3600);
SetCookie("Cookie_Gorec","Ya dolgozhitel cool.gif ",time()+9999999);




Спустя 2 дня, 7 часов, 25 минут, 57 секунд (26.04.2010 - 18:51) OTSHELNIK написал(а):
по второму вопросу:
непонял немножко. вот я допустим создаю три cookie при авторизации вида

SetCookie("nik","$nick",time()+99999999);
SetCookie("id","$id",time()+99999999);
SetCookie("hash","$hash",time()+99999999);


в первом я ник пользователя,во втором его айди,а в третьем хэш... правильно-ли я вообще делаю? если да,то сверку авторизован ли или нет пользователь лучше делать такого вида или как-то иначе?

if(isset($_COOKIE['nik']) and isset($_COOKIE['hash']))
{ echo 'Вы авторизированы'; }
else { echo 'Вы не вошли'; }

Спустя 16 часов, 3 минуты, 25 секунд (27.04.2010 - 10:54) sl4mmer написал(а):
OTSHELNIK
прикольно) то есть человек вручную создав кукки может свободно войти на твой сайт под любым ником?) Это у тя на авторизация а аццкая дырка получаеться..

советую покопаться в исходниках любой cms и посмотреть как там это реализуеться... ну вот например старый добрый php-nuke - там весьма наглядно все
))

Спустя 2 часа, 22 минуты, 46 секунд (27.04.2010 - 13:17) OTSHELNIK написал(а):
sl4mmer, у меня везде проверка в nik и hash ж есть... хотя,нужно сделать еще и сверку $_COOKIE['hash'] и то что в базе при авторизации записывается 10 значное число)

Спустя 37 минут, 40 секунд (27.04.2010 - 13:54) OTSHELNIK написал(а):
sl4mmer, посмотрел php-nuke,я пока что такой код понять не могу и не осилил,как там это всё происходит.

Спустя 5 часов, 53 минуты, 30 секунд (27.04.2010 - 19:48) OTSHELNIK написал(а):
ну,а таким способом можно пользоваться? я просто плох в безопасности.

@$cc = mysql_query(mysql_fetch_array("SELECT cookie FROM user WHERE id = ".$_COOKIE['id']));
if($_COOKIE['hash'] = $cc )
{
echo'Всё ок';
}
else
{
echo 'Сюда нельзя';
}


поясню-в $cc храниться хэш,который случайно сгенерился при авторизации. соответсвенно всё в базе и этот же хэш в куках hash. попроверял-работает,но насчет безопасности... думаю,что мало кому захочется мучаться с подбором случайного числа в 10 символов smile.gif но вот встал другой вопрос-подобную проверку нужно проводить на каждой странице. каждый раз этот запрос в базу не будет влиять на скорость генерации?

Спустя 22 минуты, 47 секунд (27.04.2010 - 20:11) twin написал(а):
Во первых ты перепутал местами функции
mysql_query(mysql_fetch_array(

и видимо тебя за это ругали. но ты не послушал и натравил собак.
@$cc = 

Потом ты присвоил (знак равно) элементу массива $_COOKIE false, которое получил из вышенаписанного, и решил, что "все ok"
if($_COOKIE['hash'] = $cc )

Вот никогда не ставь собак без дела.

Спустя 30 минут, 9 секунд (27.04.2010 - 20:41) OTSHELNIK написал(а):
twin, точно,спасибо. а то я думаю,чего сначала работала,потом перестала. ну,а в общих чертах можно-ли использовать такой способ?

Спустя 1 час, 8 секунд (27.04.2010 - 21:41) twin написал(а):
В ооочень общих. Только сам принцип.

Спустя 8 часов, 5 минут, 10 секунд (28.04.2010 - 05:46) OTSHELNIK написал(а):
хм,а еще что-то? чем можно обесопаситься?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.