PHP. Сессияҳо

Печать

Сессия ва cookies барои нигоҳдории маълумотҳои истифодабаранда ҳангоми гузаштан аз як саҳифа ба дигар саҳифа хизмат мекунанд. Ҳангоми истифодабарии сессия маълумотҳо дар файлҳои муваққатии сервер нигоҳ дошта мешаванд.

Файлҳо бо cookies дар компютери истифодабаранда нигоҳ дошта мешаванд ва бо воситаи браузер ҳангоми даъват ба сервер фиристонда мешаванд.

Истифодабарии сессия ва cookies дар бисёр барномаҳо ба монанди Интернет-магазинҳо, форумҳо, тахтаи эълонҳо ва монанди инҳо хеле муфид аст. Сараввал, барои нигоҳдории маълумотҳои истифодабаранда дар давоми кор дар якчанд саҳифаҳо. Дуввум, дар навбати худ пешниҳод кардани маълумотҳои нав ба истифодабаранда.

Протоколи HTTP протоколи “бе сабт кардан ҳолат” ба ҳисоб меравад. Ин маънои онро дорад, ки протоколи мазкур услуби сабти ҳолат байни ду амалиётро надорад. Яъне, ки истифодабаранда аввал як саҳифаи сомонаро кушода ва баъдан ба саҳифаи дигари ҳамин сомона мегазарад, он вақт танҳо бо воситаи протоколи HTTP ва дар асоси он муайян кардан номумкин аст, ки дархостҳои мазкур танҳо ба як истифодбаранда тааллуқ доранд. Дар чунин ҳолатҳо, дар бораи методҳои зарурӣ, ки бо ёрии онҳо маълумоти истифодабарандаро дар давоми яксеанс алоқа бо Web-сомонаҳо муайян кардан мумкин аст, донистан зарурат пеш меояд. Яке аз чунин методҳо ин идоракунии сеанс бо ёрии функсияҳое, ки барои он пешбинӣ шудаанд, мебошад. Барои мо донистан зарур аст, ки сеанс аслан гурӯҳи тағйирёбандаҳои махсус мебошад. Фарқи онҳо аз тағйирёбандаҳои оддӣ дар он аст, ки онҳо баъди амалиётҳои (сенарияҳои) PHP сабт карда мешаванд.

Кор бо сессияҳоро бо чунин этапҳо ҷудо мекунанд:
•    кушодани сессия
•    эълонкунии тағйирёбандаҳои сессия ва истифодабарии инҳо
•    пӯшидани сессия

Кушодани сессия

Роҳи соддаи кушодани сессия ин истифодабарии функсияи session_start аст, ки дар аввали скрипти PHP даъват карда мешавад:
session_start

Синтаксис:

session_start();

Ин функсия месанҷад, ки оё идентификатори сессия вуҷуд дорад. Агар на, онро месозад. Агар идентификатори сессияи мазкур вуҷуд дошта бошад, онгоҳ қимати тағйиёбандаҳои онро бор мекунад.

Эълонкунии тағйирёбандаи сессия

Баъди эълонкунии сессия имконияти истифодабарии массиви суперглобалии $_SESSION пайдо мегардад (суперглобалӣ – яъне дар тамоми ҷойҳо дастрас).  Бигзор файли index.php вуҷуд дошта бошад, ки массив ва тағйирёбандаи $_SESSION нигоҳ дошта мешавад.

<?php
  // Эълонкунии сессия
  session_start();

  // Бахшидани қимат ба сессия
  $_SESSION['name'] = "value";

  // Бахшидани массив ба сессия
  $arr = array("first", "second", "third");
  $_SESSION['arr'] = $arr;

  // Гузоштани ҳавола (ссылка) ба дигар саҳифа
  echo "<a href='other.php'>Саҳифаи дигар</a>";
?>

Дар саҳифае, ки функсияи session_start()  даъват карда мешавад, қимати тағйирёбандаҳои массиви суперглобалии $_SESSION-ро истифода бурдан имконпазир аст. Дар саҳифаи дигаре, ки other.php ном дорад, қимати тағйирёбандаҳои массиви суперглобалӣ чоп карда мешаванд, ки дар саҳифаи index.php эълон шуда буданд.

<?php
  // Эълонкунии массив
  session_start();

  // Чоп кардани қимати тағйирёбандаҳои массиви суперглобалии $_SESSION
  echo "<pre>";
  print_r($_SESSION);
  echo "</pre>";
?>

Натиҷаи кори скрипт чунин намуд дорад:

Array
(
    [name] => value
    [arr] => Array
        (
            [0] => first
            [1] => second
            [2] => third
        )
)

Пӯшидани сессия

Баъд аз истифодаи сессия аввал бояд тағйирёбандаро хориҷ кард, ва сипас функсияи unset() - ро бояд даъват кард.

Синтаксис:

unset($_SESSION['username']);

Добавить комментарий


Защитный код
Обновить

Произведение «OFTOB.COM» публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Непортированная.