Удаление 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 нестандартно. Для
    достижения наилучших результатов протестируйте созданный сайт на различных
    платформах с помощью разных браузеров.


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: