Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ы строками, а потому вместо пустых строк здесь нужно использовать 0. 

Параметр $expire задает timestamp, который, например, может быть сформирован 
функциями time() или mktime(). Параметр $secure говорит о том, что величина 
Cookie может передаваться только через безопасное HTTPS-соединение (мы не будем 

рассматривать в этой книге HTTPS, о нем можно написать целые тома, что, вообще 
говоря, и делается). Вот несколько примеров использования SetCookie(): 
// Cookie на одну сессию, т. е. до закрытия браузера 
SetCookie("TestCookie","Test Value"); 
// Эти Cookies уничтожаются браузером через 1 час после установки 
SetCookie("TestCookie",$val,time()+3600); 
SetCookie("TestCookie",$val,time()+3600,"/~rasmus/",".utoronto.ca",1); 
После вызова функции SetCookie() только что созданный Cookie сразу появляется 
среди глобальных переменных как переменная с заданным в параметре $name име- 
нем. Она появится и при следующем запуске сценария — даже если SetCookie() в 
нем и не будет вызвана. Параметр $value автоматически URL-кодируется при по- 
сылке на сервер, а при получении Cookie — автоматически декодируется, как это 
происходит и с данными формы, так что нам не нужно об этом заботиться. 
И еще один пример: счетчик посещения страницы конкретным посетителем. Запуская 
данный сценарий, пользователь будет видеть, сколько раз он уже гостил на вашей 
странице. 
Листинг 21.1. Индивидуальный счетчик посещений 
if(!isSet($Counter)) $Counter=0; 
$Counter++; 
SetCookie("Counter",$Counter,0x7FFFFFFF); 
echo "Вы запустили этот сценарий $Counter раз!"; 

Глава 21. Работа с WWW 293 
Видите, как просто мы храним информацию о посещениях, даже если наш сайт по- 
сещают миллионы человек в день? А теперь представьте себе, какой код пришлось 
бы написать, чтобы сделать аналогичную программу, но с сохранением данных на 
сервере... 
Возможно, вам понадобится сохранять в Cookies не только строки, но и сложные 
объ- 
екты. Для этой цели объект нужно сначала преобразовать в строку (например, при 
помощи Serialize()) и поместить ее в Cookie. 
А потом, наоборот, распаковать строку, используя Unserialize(). 
Однако, если сохраняемый массив имеет небольшой размер, каждый его элемент 
можно разместить в отдельном Cookie: 
SetCookie("Arr[0]","aaa"); 
SetCookie("Arr[1]","bbb"); 
SetCookie("Arr[2][0]","ccc"); // многомерный массив 
По сути, Cookie с именем Arr[0] ничем не отличается с точки зрения браузера и 
сер- 
вера от обычного Cookie. Зато PHP, получив Cookie с именем, содержащим квадрат- 

ные скобки, поймет, что это на самом деле элемент массива, и создаст его 
(массив). 
Тут нет ничего удивительного — ведь PHP поступает точно так же и с переменными, 

поступившими из формы пользователя... Правда, в отличие от форм, не советую вам 

особо увлекаться подобными Cookies: дело в том, что в большинстве браузеров 
число 
Cookies, которые могут быть установлены одним сервером, ограничено, причем 
огра- 
ничено именно их количество, а не суммарный объем. Поэтому, наверное, лучше бу- 

дет все-таки воспользоваться функцией Serialize() и установить один Cookie, а 
еще лучше — написать собственную функцию сериализации, которая упаковывает 
данные чуть эффективнее. 
Получение Cookie 
Еще кое-что о Cookies. Предположим, сценарий отработал и установил какой-то 
Cookie, например, с именем Cook и значением Val. В следующий раз при запуске 
этого сценария (на самом деле, и всех других сценариев, расположенных на том же 

сервере в том же каталоге или ниже по дереву) ему передастся пара типа Cook=Val 

(через специальную переменную окружения). PHP это событие перехватит и автома- 
тически создаст переменную $Cook со значением Val. То есть интерпретатор дейст- 

вует точно так же, как если бы значение нашего Cookie пришло откуда-то из формы.
 
Та переменная, которую мы установили в прошлый раз, будет доступна и сейчас! 
SSI и функция vi
 
<<-[Весь Текст]
Страница: из 287
 <<-