Истифодаи сookies ҳам барои барномасоз ва ҳам барои истифодабаранда қулай аст. Истифодабаранда аз он бурд мекунад, ки ҳар маротиба дар бораи худ маълумот ворид карданаш зарур нест, ба барномасоз бошад, сookies ёрӣ медиҳад, ки ба осонӣ маълумотҳоро дар бораи истифодабаранда бо боварӣ сабт кунад.
Таърифи Cookies – ин сатрҳои матнӣ, ки дар тарафи истифодабаранда нигоҳ дошта мешаванд ва ҷамъи ҷуфти “ном-маъно”, ки бо URL алоқаманд, бо воситаи онҳо броузер муайян мекунад, cookies-ро ба сервер фиристад ё на.

Гузоштани Cookies

Гузоштани cookies бо воситаи функсияи setcookie иҷро карда мешавад:

setcookie

Синтаксис:

  bool setcookie (string name [, string value [, int expire [, string path
  [, string domain [, int secure]]]]])

Ин функсия дорои аргументҳои зерин аст:
•    name – номи cookie – и гузошташаванда;
•    value – маъное, ки дар cookie бо номи $name нигоҳ дошта мешавад;
•    expire – вақт бо сонияҳо аз оғозӣ давра, бо гузашти вақт cookie бекор мешавад;
•    path – роҳ, ки дар он cookie дастрас аст;
•    domain - домен, ки дар он cookie дастрас аст;
•    secure – дастур, муайянкунандаи дастрасии cookie на аз рӯи дархости HTTPS. Ба таври автоматӣ ин дастур қимати 0 – ро доро аст, ки он маънои дастрасии cookie–ро аз рӯи дархости оддии HTTP дорад.

Намунаи соддаи истифода аз cookies

Намуди соддаи истифодаи амалиётро дида мебароем, ки он миқдори ташрифи истифодарандаро ба саҳифа бо ёрии cookies мешуморад.
Дар cookie бо номи counter миқдори ташрифи истифодаранда ба саҳифа нигоҳ дошта мешавад:

<?php
  $counter++;
  setcookie("counter",$counter);
  echo("Шумо ба ин саҳифа $counter маротиба ташриф овардед.");
?>

Ҳангоми кор бо cookies лаҳзаи бояд муҳимро фаромӯш накард, ки пеш ба броузер фиристодани cookies онро бояд гузошт, дар ягон қисм ё сарлавҳа, барои он, ки худи cookies–ҳо сарлавҳа мебошанд. Аз ин рӯ гузоштани cookies баъд аз фиристодани он ба броузер ба хатогӣ оварда мерасонад.
Ин дархостро пурратар дида мебароем, барои тағйири код пеш аз Гузоштани cookies матнро менависем. Агар дар инҷо матн пайдо шавад, онгоҳ хатогӣ ба вуҷуд омадааст.

<?php
  $counter++;
  setcookie("counter",$counter);
  echo("Шумо ба ин саҳифа $counter маротиба ташриф овардед.");
?>

Хатогие, ки эҳтимолан муоина мешавад, ба тағйирёбандаи $counter тааллуқ дорад, ки дар он қимати cookies нигоҳ дошта мешавад, зеро он корсозии дастури register_globals–ро талаб мекунад. Агар ин дастур хомӯш бошад, онгоҳ бо воситаи массиви глобалии $_COOKIE["name"] қиматҳои cookies–ро гирифтан мумкин мегардад:

<?php
  $_COOKIE['counter']++;
  setcookie("counter",$_COOKIE['counter']);
  echo("Шумо ба ин саҳифа ",$_COOKIE['counter'] маротиба ташриф овардед.");
?>

Аз сабабе, ки баъзе истифодабарандагон дар танзимоти броузери худ cookie – ро хомӯш мекунанд, ин барои аниқии кори барнома ва истифодабарии cookie халал мерасонад. Бинобар ин ҳангоми кор санҷидан лозим аст, ки оё cookie фаъол аст ва хомӯш, агар хомӯш пас ба истифодабаранда хабар медиҳем, ки аз рӯи зарурат онро фаъол намояд:

<?php
  if(!$cookie)
  {
    /* фиристодани сарлавҳа ба дигар саҳифа, ки дар
    ҳаракати гузоштани cookie дар назар дошта шудааст */
    header("Location: $PHP_SELF?cookie=1");
    /* гузоштани cookie бо номи "test" */
    setcookie("test","1");
  }
  else
  {
    if(!$test)
    {
      echo("Барои дурустии кори барнома зарур аст, ки
      cookies – ро фаъол созед");
    }
    else
    {
      /* cookie фаъол аст, мегузарем ба дигар саҳифа */
      header("Location: http://localhost/test1.php");
    }
  }
?>