русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Файлы Cookies


Дата добавления: 2013-12-23; просмотров: 943; Нарушение авторских прав


Сеансы

Переменная сеанса является специальным типом переменной, значение которой сохраняется при переходе между последовательными страницами Web. C помощью переменных сеанса специфические данные пользователя можно сохранять при переходе со страницы на страницу, предоставляя ему индивидуализированный контент при взаимодействии пользователя с приложением Web. Переменные сеанса существуют обычно, пока не выполняется одно из следующих событий:

  1. пользователь закрывает окно браузера;
  2. завершение заданного на сервере максимального интервала времени сеанса;
  3. использование функций PHP, таких, как session_destroy(), чтобы освободить все существующие в данный момент переменные сеанса.

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

Система PHP имеет ряд средств для поддержки сеансов. Это руководство начинается с введения глобальной переменной $_SESSION[]. Переменную $_SESSION[] рекомендуется использовать для улучшения безопасности и удобочитаемости кода.

Также вводятся функции сеанса session_start() и session_destroy(). Каждая из них определена ниже:

$_SESSION[] – суперглобальный массив PHP, который содержит зарегистрированные в данный момент переменные сеанса сценария.

session_start() – инициализация данных сеанса. Эта функция вызывается перед созданием новой переменной сеанса с помощью $_SESSION[].

session_destroy() – разрушает все данные, зарегистрированные для текущего сеанса сценария

В учебнике вводится также функция PHP header("Location …"). Хотя это функция HTTP, а не функция сеанса, она обычно используется для перенаправления пользователей во время существующих сеансов. Эта функция определена ниже.



header("Location: http://www.domain.com") – функция header используется для перенаправления браузера на страницу, определенную параметром Location.

Следующий блок кода демонстрирует, как инициализируется переменная сеанса.

<?php

 

session_start();

 

if ($_SESSION['count'] == "")

{

 

$_SESSION['count'] = 1;

}

 

else

{

$_SESSION['count'] = $_SESSION['count'] + 1;

 

}

 

?>

В этом примере сначала вызывается функция session_start() для инициализации данных сеанса. Функция session_start() должна вызываться перед созданием и присваиванием значений переменным сеанса. Затем используется оператор if для проверки значения переменной сеанса "count". Если сеанс будет null или не содержит значения, то он инициализируется как 1, иначе значение переменной сеанса увеличивается на 1. В этом случае переменная сеанса count используется для подсчета числа посетителей. Переменные сеанса предоставляют идеальный способ создания счетчиков страниц, так как каждому пользователю предоставляется уникальный сеанс.

Переменная сеанса может создаваться также после успешного ввода пользователем своего имени и пароля, которые нужны для доступа к конфиденциальному сайту. В этом случае переменная сеанса содержит значение, которое передается со страницы на страницу, указывая, что пользователь имеет право доступа к любым ресурсам, связанным с сайтом. Когда пользователь выходит или решает "завершить", переменная сеанса должна возвращаться в исходное состояние. Это выполняется с помощью функции session_destroy().

login.php

 

<?php

if ($_POST['submit'] == "Login")

{

 

// сценарий проверки имени пользователя и пароля должен кодироваться здесь

 

//если аутентификация прошла успешно

session_start();

$_SESSION['access'] = "yes";

header("Location:access.php");

}

 

if ($_POST['submit'] == "Log Out")

{

 

//если пользователь решает выйти

session_destroy();

}

 

?>

 

access.php

 

<?php

// если пользователь обращается к этой странице,

// проверьте, что он был аутентифицирован в login.php

 

if ($_SESSION['access'] != "yes")

{

 

header(Location:login.php);

 

}

 

?>

Пример 8.1.

Пример выше состоит из двух страниц — login.php и access.php. Прежде чем пользователь сможет увидеть содержимое access.php, он должен пройти login.php. Создается сеанс, чтобы гарантировать, что пользователь был аутентифицирован. После того как пользователь вводит действительное имя пользователя и пароль, выполняется щелчок на кнопке "Login". Сценарий PHP проверяет, что пароль и имя пользователя допустимы. Затем переменной сеанса присваивается значение "yes" и доступ предоставляется. Пользователь перенаправляется на страницу access.php. Сценарий на access.php проверяет, что существует сеанс. Если сеанс не существует, применяется функция header(), чтобы перенаправить пользователя назад на страницу login.php и не разрешить доступ к содержимому страницы access.php.

Страница login.php содержит второй сценарий, который используется для уничтожения переменной сеанса, вызывая функцию session_destroy(). Сценарий выполняется после того, как пользователь щелкает на кнопке "Log Out".

Приложения Web, которые используют данные сеанса, могут быть доступны одновременно множеству пользователей. Чтобы каждый пользователь имел свой собственный сеанс, с каждым сеансом необходимо связать уникальное значение id. В PHP это уникальное значение сеанса id можно извлечь с помощью функции session_id(). Уникальное значение сеанса session_id() поддерживается для каждого пользователя и хранится в подкаталоге PHP/sessiondata, расположенном на сервере Web.

Так как значение session_id() является уникальным для каждого пользователя, его можно применять для идентификации пользователей, не создавая при этом индивидуальных имен пользователей и паролей. Функция session_id() определена ниже:

session_id() – используется для получения значения id текущего сеанса.

Файл 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.

Лекция 9. Доступ к базам данных



<== предыдущая лекция | следующая лекция ==>
Контрольный вывод введенных значений формы | Соединения ODBC без DSN


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.209 сек.