Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Как да използваме cookie в PHP?
  1. Въведение
  2. Използване
     
Автор  @Djimbo (01.05.2004 08:30)  съобщение до автора
Погледнат  2852 пъти  добави към любими
Оценка  добави коментар
Гласове  6  изпрати на приятел
Коментари  (1)  абонирай се за PHP
    Страница 1 / 2

 



Има шест неща, които трябва да укажете при работа с една "бисквитка".
Това са нейното име, съдържание, продължителност на живота, домейн, път и подсигуреност.

Името на cookie е този низ, с който по-късно ще се обръщате към нея за да получите стойността й. Продължителността на живота указва колко време желаете "бисквитката" да е валидна. Ако не сте задали време или сте го указали като 0, то файлът ще бъде изтирт от браузъра веднага след неговото затваряне. Такива cookie файлове са валидни само за текущото посечение на потребителя. Може би най-рядко ще се налага да задавате домейн за който да е валиден файла. Така или иначе не може да напишете yahoo.com и да чакате да получите файловтете, записани на твърдия диск на посетителя от портала. Браузърът така или иначе ще ви изпрати само вашите. Полза от тази възможност за настройка на cookie може да имате, ако използвате няколко субдомейна на един и същ домейн.
По принцип ако "бисквитката" е зададена от уеб страница, намираща се на адрес http://domain.com, то тя ще се изпраща само до другите страници в този домейн, но не и до http://www.domain.com или другите негови поддомейни. как да преодолеем това ограничение ще разберем след малко. Пътят на валидност на cookie файла дава възможност да ограничите или разширите страниците, до които той ще се предава в рамките на текущия домейн. Това е полезно, ако имате няколко различни сайта като поддиректории на домейна. Сега ще обясним това с практически примери.

За разлика от други програмни езици, PHP предлага изключително лесен начин за записване, променяне и изтриване на "бисквитки". Тук това става става само с един ред код, съдържащ функцията setcookie(). Синтаксисът е следният:

число setcookie (низ име [, низ стойност [, число продължителност [, низ път [, низ домейн [, число подсигурена]]]]])

Функцията ще върне 1, ако се е изпълнила успешно и 0 - ако не е успяла.

Запомнете, че "бисквитките" се получават и изпращат в HTPP хедърите - тоест преди каквото и да било същинско съдържание на Уеб страницата. Това е най-често срещаната причина за появата на грешки при работа с тях. Ако искате да изпратите, промените или изтриете cookie това трябва да стане преди да изпратите на браузъра каквото и да било друго. Например :

CODE
1
2
3
4
<?
echo "<html><head>";
setcookie ("user", "ivan");
?>

Този код ще върне грешка, зашото се опитвате да изпратите "бисквитка" след като вече сте пуснали някакво съдържание. HTTP хедърите нямат нищо общо с хедърите на HTML сттраниците, ограниавани между таговете <head> и </head>. Цялото съдържание на уеб страницата влиза в тялото на HTTP пакета.

Когато се опитате да изпълните този код, PHP ще ви съобщи, че хедърите вече са изпратени, като ще ви каже на кой ред в скрипта е завършило изпращането и на кой ред вие се опитвате да пуснете cookie. Това е наистина полезно, но бих искал да обърна внимание на един случай, когато е много трудно да откриете от къде идва грешката.

CODE
1
2
3
4
<?
setcookie ("user", "ivan");
echo "<html><head>";
?>

На пръв поглед проблемът би трябвало да е решен и горния код трябва да се изпълни правилно. Но поради една или друга причина в него има интервал пред отварящата скоба на PHP. Този интервал сам по себе си е изход, така че слага край на заглавните части. Затова бъдете сигурни, че <?...?> е жинаги в самото начало на файла. Макар и на пръв поглед дребен, този пробелм може да прични няколко часа търсене на причната си, особено ако има някоко включени един в друг файлове, затова е добре да го имате предвид.

Както забелязахте от начина на представяне на синтаксиса на функцията setcookie(), единствения задължителен елемент в нея е името й. Това обаче не означава, че можете да прескачате аргументите както искате. Това е друга често срещана грешка, която води до грешно записани "бисквитки" или до невъзможността да се изтрие вече съществуваща. Ако желаете да използвате опцията път на действие, но не желаете да указвате продължителност, нямате право да напишете

CODE
1
<?setcookie ("user", "ivan", "/mojat_sajt"); ?>

Функцията си търси елементите по реда, който те бяха показани по-горе и когато ползвате някой от тях, другите в ляво от него стават задължителни. Така че вярният вариант на горния ред е:

CODE
1
<?setcookie ("user", "ivan", 0, "/mojat_sajt");?>

Можете да "прескочите" елеметите, които не искате да задавате с 0 - когато трябва да са числа или с "" - когато трябва да са низове. Ето как ще изглежда една "бисквитка", която искаме да използваме по подигурена връзка (HTTPS), но всички останали аргументи са по поразбиране:

CODE
1
<?setcookie ("user", "ivan", 0, "", "", 1);?>

Така записахме "бисквитка" с име "user", стойност "ivan", валидна за всички страници в текущата поддиректория на текущия домейн при използването на подсигурена връзка.
Изтриването на cookie става, като на съществуващ файл се зададе празно съдържание. Но това трябва да стане по същия начин, по който е бил създаден. Така за да изтирем току що създаденото cookie, трябва да напишем:

CODE
1
<? setcookie ("user", "", 0, "", "", 1); ?>

Нека сега илюстрираме всичко това с пример. Ще създадем малка система за проследяване на посетителя на адрес http://www.domain.com/site
В началния файл, примерно index.php, включваме форма, в която очакваме да получим името/прякора на потребителя:

CODE
1
2
3
4
5
6
<?
<
form action=user.php method=post>
<
input type="text" name="username">
<
input type="submit" value="изпрати">
</
form>
?>

Когато потребителят въведе името си и кликне бутона за изпращане, той ше попадне на файла user.php, в който е записано:

CODE
1
2
3
<?
setcookie ("user", $username);
?>

По този начин всички страници, намиращи се на http://www.domain.com/site ще имат достъп до съдържанието на cookie файла user - тоест до името, посочено от посетителя. Важно е да запомните, че това не може да стане в момента на изпращането. С други думи - user.php няма достъп до "бисквитката" в момента. Тя ще достъпна при следващото зареждане на страница. В конкретния случай това не е проблем, защото ние все пак разполагаме с името на потребителя в променливата, използвана във формата от index.php. Така че можем да напишем :

CODE
1
2
3
4
<?
setcookie ("user", $username);
echo "Здравейте, $username!<br>Кликнете <a href="index.php">тук</a>, за да смените името, което посочихте или <a href="content.php">тук</a> за да продължите!"
?>



  Следваща страница >> 


Ключови думи: PHP cookie първи стъпки бисквитки


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

А как да взимам информация от кукитата.
Примерно phpBB форума записва във куки когато съм се логнал.
И моята цел е примерно да взема именно тази инф дали съм се логнал във форума и с какво име.

  jaredharet на 07.04.2006 22:03

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008