Начало Новини Маркет Проекти Форум ИТ Работа Уроци Скриптове WiFi точки Още Вход


PHP Cookies

От Mutatos / 30.09.2011 00:28
Размер на шрифта: A | A | A

Cookies са текстови файлове, съхранени на компютъра, с цел проследяване. PHP  подържа HTTP-бисквитки.

Има три стъпки в идентифициране на  завърналите се потребители:

 1  Сървър скрипт изпраща набор от "бисквитките" на браузъра. Примерно име, възраст, или идентификационен номер и др.
  
 2  Браузера съхранява тази информация за бъдеща употреба.
  
  3 Когато  браузъра изпраща искане на уеб сървъра, той изпраща тази cookies информация на сървъра и сървъра използва тази информация за идентифициране на потребителя.

Тази глава ще ви научи как да настроите "бисквитките", как да получите достъп до тях и как да ги изтриете.


Анатомия на Cookie:

"Бисквитките" обикновено са в заглавната част на HTTP (въпреки че JavaScript може също да зададе бисквитка директно на браузъра). PHP скрипт, поставя
бисквитката,  да изпрати заглавия, които изглеждат подобно на това:
CODE
1
2
3
4
5
6
7
HTTP/1.1 200 OK
Date
: Fri, 04 Feb 2000 21:03:38 GMT
Server
: Apache/1.3.9 (UNIX) PHP/4.0b3
Set
-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
                
path=/; domain=tutorialspoint.com
Connection
: close
Content-Type: text/html

Както можете да видите, Set-Cookie съдържа името, стойноста, дата GMT,пътя и домейн. Името и стойността, ще бъде URL кодирани. В свършващото поле е зададена инструкция към браузъра,  да "забрави" бисквитката, след дадено време и дата.

Браузърът е конфигуриран да съхранява "бисквитките" той, ще запази тази информация до датата на изтичане на срока на годност. Ако потребителят посочи браузър на всяка страница, която съответства на пътя и Домейнът на бисквитката, той ще изпрати отново бисквитката на сървара. Браузъра може да изглежда като това:
 
CODE
1
2
3
4
5
6
7
8
9
GET / HTTP/1.0
Connection: Keep-Alive
User
-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept
-Language: en
Accept
-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

PHP скрипта, ще имат достъп до cookie в променлива околна среда $_COOKIE или  $HTTP_COOKIE_VARS[] който притежава всичките имена и ценности на
бисквитките.Над бисквитката може да използвате $HTTP_COOKIE_VARS["name"].

Настройка на Cookies с PHP:

PHP задава SetCookie () функция за бисквитка. Тази функция изисква до шест аргументи и трябва да бъде извикана преди <html> тагове. За всяка бисквитка тази функция трябва да се зададе отделно.

CODE
1
setcookie(name, value, expire, path, domain, security);

Ето подробно аргументи:

Name Име - определя името на бисквитката и се съхранява в променлива среда наречена HTTP_COOKIE_VARS. Тази променливост се използва за достъп до бисквитките.


Value Стойност- определя стойността на променливите имена и съдържанието, което всъщност искате да съхраните.

Expiry Изтичане - бъдеще време в секунди, от 00:00:00 GMT на 1-ви Jan 1970. След това време бисквитките, ще станат недостъпни. Ако този параметър не е зададен, тогава бисквитка автоматично ще изтече, когато Web Browser е затворен.

Domain Домейн - използвани за обозначаване на името на домейна в много големи домейни и трябва да съдържа най-малко два периода, за да бъдат валидни. Всички бисквитки са валидни само за хост и домейн, който ги е създал.

Security Сигурност - може да се определя до 1,да се уточни, че бисквитката трябва да се изпращат само от сигурно предаване, при което се използва  друг начин  и до 0, което означава, бисквитка може да бъде изпратена чрез редовни HTTP HTTPS.

Path –Това определя директориите, за който бисквитката е валидна. Напред
наклонена черта позволява бисквитката да бъдат валидна за всички директории.

В пример ще създадем две бисквитки, като  името и възраста на тези "бисквитки" ще изтече след един час.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
<?php
   setcookie
("name", "John Watkin", time()+3600, "/","", 0);
  
setcookie("age", "36", time()+3600, "/", ""0);
?>
<
html>
<
head>
<
title>Setting Cookies with PHP</title>
</
head>
<
body>
<?
php echo "Set Cookies"?>
</
body>
</
html>

Достъп до Cookies с PHP

PHP предоставя много начини за достъп до cookies. Най-лесният начин е да използвате  $ _COOKIE или $ HTTP_COOKIE_VARS променливи. В последващият пример ще имате достъп до всички бисквитки, посочени от по-горният пример.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<html>
<
head>
<
title>Accessing Cookies with PHP</title>
</
head>
<
body>
<?
php
echo
$_COOKIE["name"]. "<br />";
/*
is equivalent to */
echo $HTTP_COOKIE_VARS["name"]. "<br />";

echo $_COOKIE["age"] . "<br />";
/*
is equivalent to */
echo $HTTP_COOKIE_VARS["name"] . "<br />";
?>
</
body>
</
html>[/code

Можете да използвате функцията
isset () да се провери, дали бисквитката е зададена, или не.

[code]<html>
<
head>
<
title>Accessing Cookies with PHP</title>
</
head>
<
body>
<?
php
 
if( isset($_COOKIE["name"]))
   
echo "Welcome " . $_COOKIE["name"] . "<br />";
 
else
   
echo "Sorry... Not recognized" . "<br />";
?>
</
body>
</
html>

Изтриване на Cookie с PHP

По принцип, за да изтриете бисквитка, трябва да се обърнете към SetCookie () с аргумент, но това не винаги работи добре и не трябва да се разчита.

Най-безопасното е  да зададете куки с дата, която вече е изтекла:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  setcookie
( "name", "", time()- 60, "/","", 0);
 
setcookie( "age", "", time()- 60, "/","", 0);
?>
<
html>
<
head>
<
title>Deleting Cookies with PHP</title>
</
head>
<
body>
<?
php echo "Deleted Cookies" ?>
</
body>
</
html>






Статистика
Погледнат: пъти
Гласове: --
Оценка:
Действие
 



myTech.bg © 2004 - 2011 | Контакти | За реклама