Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 141) Курс PHP: Куки


Школа программирования

141) Курс PHP: Куки

Последний выпуск по PHP был N 135.

Куки

Используемая в абсолютном большинстве крупных интернет-систем технология куков (cookies) представляет собой возможность сохранения на компьютере пользователя (через браузер) некоторых персональных данных, которые затем, при следующем сеансе общения, могут использоваться для настройки нового сеанса.

В куках сохраняются, например, имя и пароль пользователя (хотя это не совсем корректно), сведения о последних посещенных им страницах, номера незаконченных шагов регистрации и т. д.

Куки задаются основной функцией

setcookie()

Ее первый параметр - название кука, обязателен, а остальные - нет. Вторым параметром может следовать значение заданного кука, третьим - время существования данного кука в секундах.

Важно! Установка кука должна происходить до отправки любого заголовка, точно так же, как и вызов функции session_start() начала сессии (см. занятие 98).

  <?php

  // ставим куки
  setcookie( "MoiKuki" );

  ?>

  <html>
  <body>
  <h1> Тестируем куки </h1>
  ...

Замечательная особенность функции setcookie() в том, что в качестве ее первого параметра (название куки) на самом деле выступает имя некоторой переменной. Поэтому определить, заданы ли куки, можно, просто проверив, была ли установлена (задействована) в сценарии соответствующая переменная в текущем сеансе работы, что выполняется функцией isset(имя-переменной).

Следующий пример может быть заготовкой сценариев обработки куков. Допустим, мы решили назвать наш кук - MyKyk, а в качестве его значения - полученное от формы поле.

  <html>
  <body>
  <h1>Пример обработки формы PHP-скриптом</h1>
  <form action="cookie.php" method="POST">
  Введите имя: <input type="text" name="login">
  <p>
  <input type="submit" value="Отправить">
  </form>
  </body>
  </html>

Тогда сценарий cookie.php может быть таким:

  <?php
  $status = 0;

  if ( isset($MyKyk) ) $status = 1;

  else {

  // задаем кук
  setcookie("MyKyk", $_POST["login"] );
  print "<p>Здравствуйте, ". $_POST["login"];
  exit; // до следующей сессии

  }
  ?>

  <html>
  <body>
  <?php

  print "<p>Здравствуйте снова, " . $MyKyk;

  ?>
  </body></html>

Фактически после отправки формы в первый раз в дальнейшем мы можем обращаться из браузера сразу непосредственно к сценарию cookie.php, и он укажет наше имя!

Однако действовать данный механизм будет лишь в пределах текущего сеанса связи с браузером. Если браузер перезапустить, имя пользователя он не вспомнит.

Чтобы кук сохранялся на компьютере более долгое время, нежели текущий сеанс браузера, надо в функции setcookie() задать третий параметр - время хранения нужного кука на локальном компьютере. Например, это может быть один час:

  ...
  // задаем кук
  setcookie("MyKyk", $_POST["login"], time()+3600 );

Выражение указывает текущее время (функция time()), к которому добавлено 3600 секунд. В новое указанное время (отстоящее от текущего на час вперед) кук будет уничтожен, а до того момента он будет храниться, даже если браузер или Windows будут перезапущены. Соответственно, в новом сеансе браузера можно обратиться напрямую к cookie.php в обход формы, и пользователь будет опознан верно.

Чтобы удалить кук явно, можно либо задать уже прошедшее время его фиксации:

  setcookie("MyKyk", $_POST["login"], time() - 100 );

либо просто вызывать данную функцию только с одним параметром:

  setcookie("MyKyk");


(c) 2004-2006 Сергей Бобровский bobrovsky as russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/


Вышел мой учебный курс "Технологии Delphi. Разработка приложений для бизнеса".
http://shop.piter.com/book/978591180282/

Учебный курс рассчитан не только на разработчиков, но и на всех тех, кто хочет стать ИТ-менеджером. Для этого как минимум нужно иметь общее представление о современных технологиях разработки и их истории и владеть соответствующей терминологией.
В книге описаны десятки технологий, каждой из которых посвящены отдельные книги. Таким образом, купив одну мою книгу, вы существенно сэкономите :) В книге полностью описан язык Delphi (версия 2006, полностью совместимая с Turbo Delphi) для обеих платформ - Win32 и .NET. Охвачены также темы работы с файлами на этих платформах, создания файл-серверных, клиент-серверных, распределенных приложений, веб-программ (Indy, ASP.NET, веб-сервисы). Описаны языки SQL и OCL. Немало глав посвящены истории программирования и различных технологий. Особое внимание уделено созданию программ с помощью технологии ECO и языка моделирования UML - программы фактически рисуются, и теперь даже для создания корпоративных приложений и их переноса в Интернет не обязательно знать программирование!
Отдельная часть отведена технологиям организации групповой работы, управления требованиями, контроля версий, локализации и тестирования.
Тут подробнее про книгу.

Другие мои книги, которые пока доступны в продаже:


Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное