Как php работает с cookie.
![]() |
Механизм cookie необходим, чтобы хранить на стороне клиента небольшие объемы данных. Например, когда браузер предлагает сохранить логин и пароль для какого-либо сайта, то он их помещает в cookie. Естественно для разных web-сайтов будут созданы отдельные файлы. К примеру, браузер Internet Explorer сохраняет все в текстовых файлах в папке Cookies. Имя файла будет образовано от имени пользователя, под которым вы зашли в систему и от домена, который вы посетили. |
Кстати, я провел один эксперимент. Посетил сайт с голосованием и после того, как я отдал голос за один из вариантов, у меня в папке cookies создался соответствующий файл. При попытке проголосовать снова, мне отказали. Тогда я разозлился и удалил файл из Cookies. И ресурс подумал, что я никогда и не
голосовал. Но это не всегда может сработать. Более продвинутые сайты, насколько я понял, помимо cookie, используют защиту от накрутки по ip. И еще всякие фичи, которые пока я не знаю.
Давайте теперь перейдем непосредственно к практике.
Чтобы создать cookie, надо воспользоваться функцией setcookie(имя_cookie, значение, время жизни). Я сделал небольшой пример, который демонстрирует механизм cookie.
Листинг файла index.php
Листинг файла cookie.php
echo $_COOKIE['mycook'];
?>
Сначала идёт проверка. Если файл cookie существует, то на экран выведется “ты уже знаешь как работает механизм cookie”.
Если cookie не существует, то мы её создаем и переходим с запросом в другой скрипт, где вытаскиваем значение cookie.
time()+15 – таким образом, я указал, что cookie будут храниться ровно 15 секунд, после создания. То есть если вы обратитесь к скрипту cookie.php через, скажем 20 секунд, то уже ничего не увидите, так как cookie уже будет удалён из системы.
Если вы хотите удалить вручную, то просто укажите в setcookie() один параметр – имя этой самой куки.
Хочу обратить внимание на одну вещь. Создавать cookie надо перед html текстом, оператором echo и всеми вещам, которые отправляются браузеру. Так как setcookie() посылает браузеру заголовок с именем Set-Cookie. А все заголовки надо передавать до команд вывода.





Июнь 23rd, 2008
Можно ли сохранять в куках логин и пароль пользователя, можно ли прочитать куки каким нибуть способом? Я имею ввиду взлом сайта.. И наконец можно ли подставить свой логин на чужом сайте где используется такая методика?
Я пишу свой собствений сайт, поетому нужна ваша косультация… Как безопасней записовать дание юзера для его индетефекацие на сайте…
Июнь 23rd, 2008
Есть некоторые виды хакерских атак, используя которые злоумышленник может получить доступ к cookie ваших посетителей, если вы храните там пароли.
Я логин/пароль храню в БД. Каждый раз когда человек заходит на сайт – он может залогиниться в специальной форме. Данные которые он вводит в форму(логин/пароль) я проверяю на наличие в БД. Если такие есть то в переменную сессии записываю что-нибудь вроде $_SESSION['is_logged'] = true; и дальше уже работаю с этой переменной.
Июнь 23rd, 2008
Да ето полезно, но что делать если мне для індетефикации нужно лиш логин человека… Хим! хорошая идея… Можно зделать при авторизации запись в куки логина и какова нибуть набора цифир, которий будет уникальний для каждива человека.. Набор цифир будет служить как индетификатор, а логин как дополнительний инструмент… Как ви считаете? Безопосним етот метод будет, если внимание будет приделено лиш набору цифир, а логин просто второстопеним… (соррі русскоим язиком не владею (правописанием
))
Июнь 23rd, 2008
Кстати как посмотреть все установление значения в куках?
вот етой переменой
print_r($_COOKIE); // виводет все записи установление у куках…
Декабрь 12th, 2008
Кстати для определения голосовал пользователь или нет пожно использовать две полезные пердопределенные переменные в сочетании: $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_X_FORWARDED_FOR']. Первая известна, а вот вторая переменная не описана в офицальной документации(по крайней мере не встречал). Эта переменная принемает на себя внутренний(серый) IP клиента
Октябрь 11th, 2009
Можно еще другим способом проверить
Апрель 14th, 2010
Лучше всегда используйте в своих проектах сессию чем куки, и храните все пароли в базе в виде md5. Так все делают.
Апрель 23rd, 2010
Может быть и все используют сессию для авторизации, но для автоматической авторизации на форуме без cookie не обойтись. У меня вопрос: из-за чего может не работать cookie? В броузере они включены, на разных сайтах они работают, но не работают на одном, который я разрабатываю
Июнь 12th, 2010
Vladimir
Возможно хостинг с которым ты работаешь(если он бесплатный) отключает возможность использования.
Август 2nd, 2010
Так как мне записанные куки обработать в скрипте? Типа if(isset($_COOKIE['bugaga'])) { … } else { … } ?
Январь 12th, 2011
Помоему, нужно больше примеров. Особенно про безопасность куков.
Февраль 19th, 2011
Здравтвуйте!
Правильно ли я понимаю, что при включенном register globals – cookies ставятся и уже используются в том же файле, а с выключенным register globals – cookies ставятся, но могут использоваться лишь в следующем загруженном файле, т.е. после перехода.
$ddd=”Vasia”;
if(empty($_COOKIES["ddd"]) setcookie(“ddd”,$ddd);
echo $_COOKIES["ddd"]; #При первом выполнении говорит что нет такой переменной, Нажимаю обновить и вижу Vasia.
Это работает лишь при второй загрузке этого файла, почему и как обойти?
Спасибо за ответ!
Февраль 19th, 2011
Painerman, так и задумано, ибо такова спецификация куков. если например ты в script.php задаешь куку и пытаешься ее сразу же вывести – фига. кука невидима до загрузки следующей страницы
Февраль 19th, 2011
Однако кука все-таки после установки видима при register_globals On.
Вот о таких тонкостях умалчивается. Спасибо за ответ, добрые люди! На всяких dklab и phpnet уже бы нах послали!
Еще раз спасибо!
Февраль 19th, 2011
Да не за что в общем то =)
Март 28th, 2011
мудило, одной строчки “Если файл cookie существует, то на экран выведется “ты уже знаешь как работает механизм cookie”.” уже достаточно для того, что бы понять, что слово PHP ты впервые прочитал, отсасывая мараканскому торговцу мандаринами, так как оно было написано на его пенисе
Март 28th, 2011
Простите, Господин. Не все такие продвинутые и разносторонне развитые.
Март 28th, 2011
Виктор, а не убиться бы тебе об стену? Ты сам скорее всего никто, ибо нормальный кодер, да и вообще человек, более адекватен и всегда старается помогать новичкам. ЛОЛ
Май 12th, 2011
Простите, а у меня куки не становятся видны после перехода по оператору header! Только если обновлю страницу (нажимаю назад и снова пройти index.php), тогда куки работают как надо. Что не так, подскажите, пожалуйста!
Май 13th, 2011
Дань, попробуй мета редирект, а еще я с этим борюсь так:
после setcookie(“кука”,1,time()+666) ставлю $_COOKIES["кука"]=1
После этого куку можно использовать сразу.
Май 13th, 2011
Даня, отправляй сначала куку и только потом редирект через header()
инфа о Location передается в заголовках вместе с куками, поэтому браузер может редирект сделать, еще и не записав куки
Январь 31st, 2012
vi vse pidorasi, slava allahu
P.S a 4e Lena mol4it? Lena 2$ za otsos, ok
Март 30th, 2012
А использование строчки header обязательно?