250 likes | 420 Views
Веб-программирование . Скрипов Сергей Александрович skripov@csu.ru 2010. HTTP cookie.
E N D
Веб-программирование Скрипов Сергей Александрович skripov@csu.ru 2010
HTTP cookie Ку́ки — фрагмент данных, созданный веб-сервером и хранимый на компьютере пользователя в виде файла, который веб-клиент каждый раз пересылает веб-серверу в HTTP-запросе при попытке открыть страницу соответствующего сайта.
HTTP cookie • Используются для: • аутентификации пользователя; • хранения персональных предпочтений и настроек пользователя; • отслеживания состояния сессии доступа пользователя; • ведения статистики о пользователях.
HTTP cookie • Установка cookie • Браузер отправляет веб-серверу HTTP-запрос. • Сервер отвечает, отправляя запрашиваемую страницу вместе сHTTP-заголовком. Там может содержаться указание браузеру сохранить куки • Если куки поддерживаются браузером и их приём включён, браузер отправляет их обратно серверу с каждым последующим запросом
HTTP cookie • Атрибуты cookie • имя/значение • срок действия • путь • доменное имя • Set-Cookie: name=newvalue; expires=date; path=/; domain=.example.org.
HTTP cookie • Атрибуты cookie • Домен и путь говорят браузеру, что куки должна быть отправлена обратно на сервер при запросах URL для указанного домена и пути. Если они не указаны, используются домен и путь запрошенной страницы. • Дата истечения указывает браузеру, когда удалить куки. Если срок истечения не указан, куки удаляется с закрытием браузера. • Дата истечения указывается в формате «Нед, ДД-Мес-ГГГГ ЧЧ:ММ:СС GMT». Например: • Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net
HTTP cookie Cookies в PHP int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) Функция setcookie должна быть вызвана до любого другого вывода
HTTP cookie Для обработки cookie на сервере используется массив $_COOKIE[“имя cookie“]
HTTP cookie <?php if(isset($_POST["name"])) setcookie("name",$_POST["name"],time()+3600); ?> <html> <head><title>Cookie test</title></head> <body> <form method="POST"> <input type=text value="<?php echo $_COOKIE["name"]?>" name="name"> <input type=submit> </form> </body> </html>
HTTP cookie #include <stdio.h> int main(int argc, char *argv[], char *env[]) { int i=0; printf("Content-type: text/html\n"); printf("Set-Cookie: name=user;expires=expires=Fri,1-Apr-2011 23:59:59 GMT;path=/~summer;domain=.csu.ac.ru\n"); printf("Set-Cookie: pass=123;expires=expires=Fri,1-Apr-2011 23:59:59 GMT;path=/~summer;domain=.csu.ac.ru\n"); printf("\n"); while(env[i++]) printf("%s<br>",env[i-1]); return 0; }
Сессии PHP Веб-сервер не поддерживает постоянного соединения с клиентом, и каждый запрос обрабатывается, как новый, безо всякой связи с предыдущими. Сессии – механизм для хранения пользовательских данных на сервере
Сессии PHP Данные сессии обычно хранятся в виде файла во временной директории Пользователю (браузеру) для доступа к сессии выдается идентификатор вида 9ebca8bd62c830d3e79272b4f585ff8f Сами данные сессии хранятся в файле во временной директории с именем вида sess_9ebca8bd62c830d3e79272b4f585ff8f
Сессии PHP • Хранение идентификатора на стороне клиента: • cookies. • Браузер сохраняет cookie с именем PHPSESSID • (PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f ) • Php cценарий на сервере получив идентификатор открывает соответствующий файл • (sess_9ebca8bd62c830d3e79272b4f585ff8f )
Сессии PHP • Хранение идентификатора на стороне клиента: • PHP просматривает всю сформированную страничку и дописывает к каждой ссылке и к каждой форме передачу идентификатора сессии
Сессии PHP Хранение идентификатора на стороне клиента: <a href="/index.php">Index</a> - исходная <a href="/index.php?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f">Index</a> <input type="hidden" name="PHPSESSID" value="9ebca8bd62c830d3e79272b4f585ff8f">
Сессии PHP Пример //sess.php <?php session_start(); $_SESSION['test']='Hello world!'; echo "Hello" ?>
Сессии PHP Пример //sess1.php <?php session_start(); echo $_SESSION['test']; session_unset();
PHP Предопределенные переменные $_SERVER массив, содержащий такую информацию, как headers/шапки, paths/пути и размещение скриптов. Вхождения в этом массиве создаются web-сервером.
PHP Предопределенные переменные $_SERVER['REQUEST_METHOD'] Какой метод запроса был для доступа к странице; например, 'GET','POST'.
PHP • Предопределенные переменные • $_SERVER['HTTP_ACCEPT_CHARSET'] • Содержимое шапки Accept-Charset: из текущего запроса, если имеется. • Пример: 'iso-8859-1,*,utf-8'.
PHP • Предопределенные переменные • $_SERVER['HTTP_USER_AGENT'] • Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)
PHP • Предопределенные переменные • $_SERVER['REMOTE_ADDR'] • IP-адрес, с которого пользователь просматривает текущую страницу.
PHP • Предопределенные переменные • $_SERVER['HTTP_X_FORWARDED_FOR'] • IP-адрес, с которого пользователь просматривает текущую страницу.