Как php работает с cookie.

Механизм cookie необходим, чтобы хранить на стороне клиента небольшие объемы данных. Например, когда браузер предлагает сохранить логин и пароль для какого-либо сайта, то он их помещает в cookie. Естественно для разных web-сайтов будут созданы отдельные файлы. К примеру, браузер Internet Explorer сохраняет все в текстовых файлах в папке Cookies.
Имя файла будет образовано от имени пользователя, под которым вы зашли в систему и от домена, который вы посетили.

Кстати, я провел один эксперимент. Посетил сайт с голосованием и после того, как я отдал голос за один из вариантов, у меня в папке cookies создался соответствующий файл. При попытке проголосовать снова, мне отказали. Тогда я разозлился и удалил файл из Cookies. И ресурс подумал, что я никогда и не
голосовал. Но это не всегда может сработать. Более продвинутые сайты, насколько я понял, помимо cookie, используют защиту от накрутки по ip. И еще всякие фичи, которые пока я не знаю.

Давайте теперь перейдем непосредственно к практике.
Чтобы создать cookie, надо воспользоваться функцией setcookie(имя_cookie, значение, время жизни). Я сделал небольшой пример, который демонстрирует механизм cookie.

Листинг файла index.php

<?
//проверка на наличие cookie
if (!isset($_COOKIE['mycook']))
{
setcookie('mycook','теперь ты знаешь как работает cookie',time()+15);
// редирект на cookie.php
header("Location: cookie.php");
}
else echo"ты уже знаешь как работает механизм cookie";

?>

Листинг файла cookie.php

<?
echo $_COOKIE['mycook'];
?>

Сначала идёт проверка. Если файл cookie существует, то на экран выведется “ты уже знаешь как работает механизм cookie”.
Если cookie не существует, то мы её создаем и переходим с запросом в другой скрипт, где вытаскиваем значение cookie.

time()+15 – таким образом, я указал, что cookie будут храниться ровно 15 секунд, после создания. То есть если вы обратитесь к скрипту cookie.php через, скажем 20 секунд, то уже ничего не увидите, так как cookie уже будет удалён из системы.
Если вы хотите удалить вручную, то просто укажите в setcookie() один параметр – имя этой самой куки.

Хочу обратить внимание на одну вещь. Создавать cookie надо перед html текстом, оператором echo и всеми вещам, которые отправляются браузеру. Так как setcookie() посылает браузеру заголовок с именем Set-Cookie. А все заголовки надо передавать до команд вывода.




Читайте также:



 #  #  #  #  #  #  #  #  #  #

9 Ответов на “Как php работает с cookie.”

  1. lena
    Июнь 23rd, 2008

    Можно ли сохранять в куках логин и пароль пользователя, можно ли прочитать куки каким нибуть способом? Я имею ввиду взлом сайта.. И наконец можно ли подставить свой логин на чужом сайте где используется такая методика?
    Я пишу свой собствений сайт, поетому нужна ваша косультация… Как безопасней записовать дание юзера для его индетефекацие на сайте…

  2. novice
    Июнь 23rd, 2008

    Есть некоторые виды хакерских атак, используя которые злоумышленник может получить доступ к cookie ваших посетителей, если вы храните там пароли.
    Я логин/пароль храню в БД. Каждый раз когда человек заходит на сайт – он может залогиниться в специальной форме. Данные которые он вводит в форму(логин/пароль) я проверяю на наличие в БД. Если такие есть то в переменную сессии записываю что-нибудь вроде $_SESSION['is_logged'] = true; и дальше уже работаю с этой переменной.

  3. lena
    Июнь 23rd, 2008

    Да ето полезно, но что делать если мне для індетефикации нужно лиш логин человека… Хим! хорошая идея… Можно зделать при авторизации запись в куки логина и какова нибуть набора цифир, которий будет уникальний для каждива человека.. Набор цифир будет служить как индетификатор, а логин как дополнительний инструмент… Как ви считаете? Безопосним етот метод будет, если внимание будет приделено лиш набору цифир, а логин просто второстопеним… (соррі русскоим язиком не владею (правописанием :-( ))

  4. lena
    Июнь 23rd, 2008

    Кстати как посмотреть все установление значения в куках?
    вот етой переменой

    print_r($_COOKIE); // виводет все записи установление у куках…

  5. booba2003
    Декабрь 12th, 2008

    Кстати для определения голосовал пользователь или нет пожно использовать две полезные пердопределенные переменные в сочетании: $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_X_FORWARDED_FOR']. Первая известна, а вот вторая переменная не описана в офицальной документации(по крайней мере не встречал). Эта переменная принемает на себя внутренний(серый) IP клиента

  6. Seodaiter
    Октябрь 11th, 2009

    Можно еще другим способом проверить

  7. Gani
    Апрель 14th, 2010

    Лучше всегда используйте в своих проектах сессию чем куки, и храните все пароли в базе в виде md5. Так все делают.

  8. Vladimir
    Апрель 23rd, 2010

    Может быть и все используют сессию для авторизации, но для автоматической авторизации на форуме без cookie не обойтись. У меня вопрос: из-за чего может не работать cookie? В броузере они включены, на разных сайтах они работают, но не работают на одном, который я разрабатываю

  9. Иван
    Июнь 12th, 2010

    Vladimir
    Возможно хостинг с которым ты работаешь(если он бесплатный) отключает возможность использования.

Оставить комментарий


© 2008 - 2010 i-novice.net | Все права защищены.