Введение в программирование на PHP5

         

Файлы Cookies


Файл cookie является сообщением браузеру Web от сервера Web. Браузер сохраняет сообщение в текстовом файле. Это сообщение посылается затем назад на сервер каждый раз, когда браузер запрашивает страницу с сервера.

Основное назначение cookies состоит в идентификации пользователей и возможной подготовке специально настроенной для них страницы Web. При посещении сайта Web, использующего cookies, на сайте может быть предложено заполнить форму, чтобы предоставить такую информацию, как свое имя и возможные интересы. Эта информация упаковывается в cookie и посылается браузеру Web, который сохраняет ее для последующего использования. Когда вы в следующий раз посещаете тот же самый сайт Web, браузер пошлет cookie серверу Web. Сервер может использовать эту информацию, чтобы создать индивидуализированные страницы Web. Поэтому, например, вместо обычной приветственной страницы можно увидеть приветственную страницу со своим именем.

В PHP файлы cookies создают с помощью функции setcookie(). Все данные cookie хранятся в глобальной переменной PHP $_COOKIE и доступны для последующих страниц.

setcookie(name,value,expiration,path,domain,security) – определяет файл cookie, который посылается вместе с остальными заголовками HTTP. Как и другие заголовки, файлы cookie должны посылаться до какого-либо вывода работы сценария (это ограничение протокола). Поэтому требуется, чтобы обращение к функции было помещено до любого вывода, включая теги и любые символы разделители. Если вывод происходит до обращения к этой функции, то setcookie() не выполнится и вернет FALSE. Если setcookie() выполняется успешно, то возвращается TRUE. Это не указывает на то, что пользователь принял cookie.

Параметры setcookie() объясняются в следующей таблице.

ПараметрОписание
nameИмя cookie. Этот идентификатор хранится в глобальной переменной $_COOKIE и доступен в последующих сценариях
valueЗначение cookie. Значение, связанное с идентификатором cookie. Хранится на компьютере пользователя, поэтому не должно содержать секретной информации
expirationВремя, когда истекает значение cookie или становится более недоступным. Это время можно задать с помощью функции time(). Файлы cookie, без заданного значения времени истечения, завершают свое существование при закрытии браузера
path Указывает пути доступа на сервере, для которых cookie действителен или доступен. Прямая косая черта "/" говорит, что cookie доступен во всех папках
domainДомен, в котором доступен cookie. Если домен не определен, по умолчанию используется хост, на котором создан cookie. Значения domain должны содержать в строке как минимум две точки ".", чтобы быть допустимыми
securityУказывает, будет ли cookie передаваться через HTTPS. Значение 1 означает, что cookie передается через защищенное соединение. Значение 0 обозначает стандартную передачу HTTP

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


Пример 8.2.

(html, txt)

Пример 8.3.

(html, txt)


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



<?php

if ($_REQUEST[auth] == "no") { $msg = "Вы не являетесь пользователем. Зарегистрируйтесь."; }

// Если пользователь щелкает на кнопке Login, создается cookie, // содержащий его имя пользователя и IP-адрес

if ($_POST[submit] == "Login") { $cookie_name = "user"; $cookie_value = $_POST[uname]; $cookie_value = $cookie_value; $cookie_expire = time() + 14400;

setcookie($cookie_name,$cookie_value,$cookie_expire,"/");

$formDisplay = "no"; }

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHMTL 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml">

<head> <title>Страница Web </title>

<style type="text/css">

body {font:10pt arial;color:white} div#form {background-color:gray;border:solid 1px black;padding:10px} input {border:solid 2px black}

</style>

<?php

if ($formDisplay == "no")

{

?>

<meta http-equiv='refresh' content='0;url=siteaccess.php?auth=yes'/>

<?php

}

?>

</head>

<body>

<div id="form"> <h4 style="color:red">New User? Create User Name</h4> <form action="setcookie.php" method="post">

<p>User Name: <br/> <input type="text" name="uname" size="7"/> </p>

<input type="submit" value="Login" name="submit"/>

</form>

<h4 style="color:red">Existing User? <a style="color:white" href="siteaccess.php?auth=yes">Enter Site</a></h4>



</div> <br/> <br/> <?php

echo "<span style='color:red'>" . $msg . "</span>";

?>

</body> </html>

Пример 8.2.

siteaccess.php

<?php

// Если пользователь щелкает на кнопке Login, // создается cookie, содержащий его имя пользователя и IP-адрес

if ($_REQUEST[auth] == "yes" && $_REQUEST[user]) {

echo "Добро пожаловать " . " " . $_COOKIE[user] . " на сайт с ограниченным доступом. Теперь на вашем жестком диске хранится cookie, и вы можете обращаться к этому сайту без регистрации при каждом обращении";

}

else

{

header("Location:setcookie.php?auth=no"); }

?>

Пример 8.3.

© 2003-2007 INTUIT.ru. Все права защищены.

Содержание раздела