Поиск

Удаление cookie

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

Хотя функция setcookie ( ) может принимать до шести аргументов, факти чески для удаления требуется только один имя cookie. Присвоение перемен ной cookie пустого значения то же самое, что удаление cookie с тем же име нем. Например, если для создания cookie UserName необходимо написать такую строку:

setcookie("UserName","Larry");

то для удаления переменной UserName нужна следующая запись:

setcookie("UserName","");

Ради предосторожности можно также задать срок действия, который уже истек.

setcookie("UserName","",time()60);

Чтобы продемонстрировать эту возможность, добавим кнопку "Reset на страницу cookies.php. Посланные ранее cookie будут стерты, и восстановятся цвета по умолчанию.
Выполнение действия

  1. Откройте последнюю версию файла cookies.php в текстовом редакторе (листинг 12.2).
  2. Добавьте условную инструкцию в уже существующую условную конструк цию if ($BeenSubmitted) (листинг 12.3, строки 38).
  3. if ($Reset) {
    setcookie("BGColor", "", time() "100");
    setcookie ("TextColor", "" , time()"100");
    $BGColor = "WHITE";
    $TextColor = "BLACK";
    } else {

    Если форма отправлена, PHP сначала проверит, истинно ли значение пе ременной $Reset. При положительном результате проверки сценарий удалит существующие cookies, установив пустые значения cookie с теми же имена ми. Сценарий также вернет значения цветов по умолчанию для данной стра ницы.

  4. Закончите условную инструкцию if ($Reset).
  5. setcookie("BGColor", "$NewBGColor", time()+ "1000000");
    setcookie ("TextColor", "$NewTextColor", time()+ "1000000");
    SBGColor = $NewBGColor;
    $TextColor = $NewTextColor;

    Если форма отправлена, а значение переменной $Reset ложно, форма долж на быть обработана так же, как представлено в листинге 12.2.

  6. В HTMLформу добавьте триггерную кнопку, чтобы пользователь мог вер нуть исходные цвета (листинг 12.3, строка 47).
  7. <PxINPUT TYPE=Checkbox NAME=Reset VALUE=TRUE>Check this box to reset —the colors.<P>

    Эта кнопка будет сообщать, возвращать ли исходные значения. Я добавил два тэга параграфа, чтобы HTMLформа выглядела эстетичней.

  8. Сохраните сценарий (листинг 12.3), загрузите его на сервер и протести руйте в браузере (рис. 12.1112.13).
  9. Листинг 12.3 т Для восстановления всех исходных значений посылаются пустые переменные cookie с именами существующих. В HTMLформу добавля ется также триггерная кнопка Reset.

    1 <?php
    I if ($BeenSubmitted) {
    3 if ($Reeet) {
    4 setcookie("BGColor", "", time() "100");
    5 setcookie ("TextColor", "" , time()"100");
    6 $BGColor = "WHITE";
    7 $T«ctColor = "BLACK";
    8 } else {
    9 setcookie("BGColor", "$NewBGColor", time()+ "1000000"];
    10 setcookie ("TextColor", "$NewTextColor"., timed + "1000000");v II $BGColor = $NewBGColor;
    12 $TextColor = $NewTextColor;
    13 >
    14 } else {
    15 if (!$BGColor) {
    16 $BGColor = "WHITE";
    17 }
    18 if (!$TextColor) {
    19 $TextColor = "BLACK";
    20 }
    21 }
    22 ?>
    23 <HEAD>
    24 <TITLE>User Customization</TITLE>
    25 </HEAD>
    26 <?php
    27 print ("<BODY BGCOLOR=$BGColor TEXT=$TextColor>\n");
    28 ?>
    29 Currently your page looks like this!
    30 <FORM ACTION="cookies.php" METHOD=POST>
    31 Select a new background color:
    32 <SELECT NAME="NewBGColor">
    33 <OPTION VALUE=WHITE>WHITE</OPTION>
    34 <OPTION VALUE=BLACK>BLACK</OPTION>
    35 <OPTION VALUE=BLUE>BLUE</OPTION>
    36 <OPTION VALUE=RED>RED</OPTION>
    37 <OPTION V ALUE=GREEN>GREEN</OPTION>
    38 </SELECT>
    39 Select a new text color":
    40 <SELECT NAME"NewTextColor">"
    41 <OPTION VALUE=WHITE>WHITE</OPTION>
    42 <OPTION VALUE=BLACK>BLACK</OPTION>
    43 <OPTION VALUE=BLUE>BLUE</OPTION>
    44 <OPTION VALUE=RED>RED</OPTION>
    45 <OPTION VALUE=GREEN>GREEN</OPTION>
    46 </SELECT>
    47 <PxINPUT TYPE=Checkbox NAME=Reset VALDE=TRUE>Check thie box to reset
    the colors.<P>
    48 <INPUT TYPE=HIDDEN NAME=BeenSubmitted VALUE=TRUE>
    49 <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!">
    50 </FORM>
    51 </BODY>
    52 </HTML>
    Для отладки функций setcookie () в рассмотренных выше сценариях не забудь те включить опцию предупреждения о каждой установке cookie в вашем браузере (рис. 12.1).
    Функция setcookie () одна из немногих в РНР, которая может поразному ра ботать в разных браузерах, так как они реагируют на cookie нестандартно. Для достижения наилучших результатов протестируйте созданный сайт на различных платформах с помощью разных браузеров.