Опубликован: 08.05.2007 | Доступ: свободный | Студентов: 12882 / 3013 | Оценка: 4.13 / 3.77 | Длительность: 12:58:00
Лекция 8:

Сеансы

< Лекция 7 || Лекция 8: 12 || Лекция 9 >

Файлы Cookies

Файл cookie является сообщением от браузера 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. Файл setcookie.php
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.
< Лекция 7 || Лекция 8: 12 || Лекция 9 >
Максим Матросов
Максим Матросов
Наталья Джабасова
Наталья Джабасова