Wiki-учебник по веб-технологиям: PHP/Cookies ...

Главная | Каталог |

Файлы 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 с компьютера пользователя.

<?php
if ($_REQUEST[auth] == "no")
{
$msg "Вы не являетесь пользователем. Зарегистрируйтесь.";
}
// Если пользователь щелкает на кнопке Login, создается cookie,
// содержащий его имя пользователя и IP-адрес
if ($_POST[submit] == "Login")
{
$cookie_name "user";
$cookie_value $_POST[uname];
$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");
}
?>


В этой лекции будут рассматриваться вопросы создания и использования функций в PHP. Говоря «функции», мы не имеем в виду все существующие в PHP функции, а лишь функции, определяемые пользователем. Мы рассмотрим способы задания таких функций, методы передачи аргументов, использование аргументов со значением по умолчанию и значения, возвращаемые функцией.

В качестве примера создадим web-интерфейс для генерации html-формы. То есть пользователь выбирает, не прибегая к программированию, какие элементы формы нужно создать, и характеристики этих элементов, а наша программа генерирует нужную форму.