Удаление cookie
Хотя переменная cookie автоматически пропадает, когда пользователь закры
вает браузер или когда срок ее действия истекает, порой возникает необходи
мость удалить cookie вручную. В частности, на сайтах, работающих с зареги
стрированными пользователями, все cookie удаляются, когда пользователь
отменяет свою регистрацию на этом ресурсе.
Хотя функция setcookie ( ) может принимать до шести аргументов, факти
чески для удаления требуется только один имя cookie. Присвоение перемен
ной cookie пустого значения то же самое, что удаление cookie с тем же име
нем. Например, если для создания cookie UserName необходимо написать такую
строку:
setcookie("UserName","Larry");
то для удаления переменной UserName нужна следующая запись:
setcookie("UserName","");
Ради предосторожности можно также задать срок действия, который уже
истек.
setcookie("UserName","",time()60);
Чтобы продемонстрировать эту возможность, добавим кнопку "Reset на
страницу cookies.php. Посланные ранее cookie будут стерты, и восстановятся
цвета по умолчанию.
Выполнение действия
- Откройте последнюю версию файла cookies.php в текстовом редакторе
(листинг 12.2).
- Добавьте условную инструкцию в уже существующую условную конструк
цию if ($BeenSubmitted) (листинг 12.3, строки 38).
if ($Reset) {
setcookie("BGColor", "", time() "100");
setcookie ("TextColor", "" , time()"100");
$BGColor = "WHITE";
$TextColor = "BLACK";
} else {
Если форма отправлена, PHP сначала проверит, истинно ли значение пе
ременной $Reset. При положительном результате проверки сценарий удалит
существующие cookies, установив пустые значения cookie с теми же имена
ми. Сценарий также вернет значения цветов по умолчанию для данной стра
ницы. - Закончите условную инструкцию if ($Reset).
setcookie("BGColor", "$NewBGColor", time()+ "1000000");
setcookie ("TextColor", "$NewTextColor", time()+ "1000000");
SBGColor = $NewBGColor;
$TextColor = $NewTextColor;
Если форма отправлена, а значение переменной $Reset ложно, форма долж
на быть обработана так же, как представлено в листинге 12.2. - В HTMLформу добавьте триггерную кнопку, чтобы пользователь мог вер
нуть исходные цвета (листинг 12.3, строка 47).
<PxINPUT TYPE=Checkbox NAME=Reset VALUE=TRUE>Check this box to reset
—the colors.<P>
Эта кнопка будет сообщать, возвращать ли исходные значения. Я добавил
два тэга параграфа, чтобы HTMLформа выглядела эстетичней. - Сохраните сценарий (листинг 12.3), загрузите его на сервер и протести
руйте в браузере (рис. 12.1112.13).
Листинг 12.3 т Для восстановления всех исходных значений посылаются
пустые переменные cookie с именами существующих. В HTMLформу добавля
ется также триггерная кнопка Reset.
<?php
if ($BeenSubmitted) {
if ($Reeet) { setcookie("BGColor", "", time() "100"); setcookie ("TextColor", "" , time()"100"); $BGColor = "WHITE"; $T«ctColor = "BLACK"; } else { setcookie("BGColor", "$NewBGColor", time()+ "1000000"]; setcookie ("TextColor", "$NewTextColor"., timed + "1000000");v
II $BGColor = $NewBGColor; $TextColor = $NewTextColor; > } else { if (!$BGColor) { $BGColor = "WHITE"; } if (!$TextColor) { $TextColor = "BLACK"; } } ?> <HEAD> <TITLE>User Customization</TITLE> </HEAD> print ("\n"); ?> Currently your page looks like this! <FORM ACTION="cookies.php" METHOD=POST> Select a new background color: <SELECT NAME="NewBGColor"> <OPTION VALUE=WHITE>WHITE</OPTION> <OPTION VALUE=BLACK>BLACK</OPTION> <OPTION VALUE=BLUE>BLUE</OPTION> <OPTION VALUE=RED>RED</OPTION> <OPTION V ALUE=GREEN>GREEN</OPTION> </SELECT> Select a new text color": <SELECT NAME"NewTextColor">" <OPTION VALUE=WHITE>WHITE</OPTION> <OPTION VALUE=BLACK>BLACK</OPTION> <OPTION VALUE=BLUE>BLUE</OPTION> <OPTION VALUE=RED>RED</OPTION> <OPTION VALUE=GREEN>GREEN</OPTION> </SELECT> <PxINPUT TYPE=Checkbox NAME=Reset VALDE=TRUE>Check thie box to reset
the colors.<P> <INPUT TYPE=HIDDEN NAME=BeenSubmitted VALUE=TRUE> <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!"> </FORM> </BODY> </HTML>
|