Работа с сессиями php

Пример использования сессии

В данном примере я покажу как можно использовать сессии (сеансы) в PHP на практике. Для начала на сервере создадим файл со следующим содержимым:


<?
// Создаётся пустой файл вида sess_819gk3tcdvilccra1t9kjdvsv9
// На машину пользователя прилетает сессионная кука с ID сессии. В данном случае 819gk3tcdvilccra1t9kjdvsv9
session_start();

// Инициализация строки с сообщениями об ошибках
$message = '';

// Если запрос отправлен методом POST
if ($_SERVER == "POST"):
  $name = strip_tags($_POST);
  $age = (int)$_POST;

  // Если поле `name` не заполнено
  if(empty($name)):
      $message = 'Поле `Ваше имя` обязательно к заполнению!';
  // Иначе, если поле `age` не заполнено
  elseif(empty($age)):
      $message = 'Поле `Ваш возраст` обязательно к заполнению!';
  // Если поля заполнены, записываем в сессию
  else:
      $_SESSION = $name;
      $_SESSION = $age;
  endif;

// Иначе берём данные из сессии
else:
    $name = $_SESSION ?? null;
    $age = $_SESSION ?? null;
endif;
?>
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>Сессии</title>
</head>
<body>
<h1>Создание сессии</h1>
<p><a href="destroy.php">Закрыть сессию</a></p><div class="ad_block">
                    <ins class="adsbygoogle"
                         style="display:block; text-align:center;"
                         data-ad-layout="in-article"
                         data-ad-format="fluid"
                         data-ad-client="ca-pub-4770392782346189"
                         data-ad-slot="4038172962"></ins>
                    <script>
                         (adsbygoogle = window.adsbygoogle || []).push({});
                    </script></div>
<p><?= $message ?></p>
<form action="<?= $_SERVER ?>" method="post">
    Ваше имя: <br>
    <input type="text" name="name" value="<?= $name ?>"><br><br>
    Ваш возраст: <br>
    <input type="text" name="age" value="<?= $age !== 0 ? $age : '' ?>"><br><br>
    <input type="submit" value="Отправить">
</form>
<?
if ($name and $age) {
    echo "<h3>Привет, $name!</h3>";
    echo "<h3>Тебе $age лет</h3>";
}
?>
</body>
</html>

Здесь я постарался максимально понятно описать всё происходящее. Под пользователя при заходе на эту страницу уже создаётся сессия, она пустая, это пока просто файл. Если пользователь заполнил все необходимые поля формы и нажал кнопку `Отправить`, то созданный файл (файл сессии) заполниться данными. Далее скрипт проверяет, если есть в сессии данные именно этого пользователя (здесь он уже сравнивает с кукой, которая пришла до этого на машину пользователя), то выводим эти данные. В противном случае, добавляем в сессию данные пользователя.

Создадим файл . При переходе на данную страницу будем удалять сессию полностью. Если необходимо удалять и сессионную куку, воспользуйтесь функцией:

setcookie(session_name(), session_id(), time()-3600);
// Файл destroy.php
<? session_start() ?>
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Закрыть сессию</title>
</head>
<body>
  <h1>Сессия закрыта</h1>
  <a href="index.php">Создать сессию</a>
</body>
</html>
<? session_destroy() ?>

Возможные проблемы

Данный материал есть также в виде видео:

Основная проблема при работе с сессией следующая: нельзя делать никакого вывода в браузер до окончания работы с сессиями.

Что такое вывод в браузер?

Это любой символ до <?php, например, текст или тег, даже пробел. Кроме того нельзя делать выводы через echo, var_dump и print_r.

Кодировка вашего документа обязательно должна быть utf-8 без BOM. Если она будет просто utf-8, то перед <?php будет вставлен спец. символ, характерный для данной кодировки и сессии работать не будут.

Если вы делаете какие-то вывод в браузер до работы с сессией, то увидите следующую ошибку: Warning: Cannot send session cookie — headers already sent.

Эта ошибка также вызывается другими сообщениями об ошибках, так как эти сообщения — это вывод в браузер до старта сессии

Обратите на это внимание.

Session Store Implementation

Every session store must be an and implement specific methods. The following methods are the list of required, recommended, and optional.

  • Required methods are ones that this module will always call on the store.
  • Recommended methods are ones that this module will call on the store if available.
  • Optional methods are ones this module does not call at all, but helps present uniform stores to users.

For an example implementation view the connect-redis repo.

Optional

This optional method is used to get all sessions in the store as an array. The should be called as .

store.destroy(sid, callback)

Required

This required method is used to destroy/delete a session from the store given a session ID (). The should be called as once the session is destroyed.

store.clear(callback)

Optional

This optional method is used to delete all sessions from the store. The should be called as once the store is cleared.

Optional

This optional method is used to get the count of all sessions in the store. The should be called as .

store.get(sid, callback)

Required

This required method is used to get a session from the store given a session ID (). The should be called as .

The argument should be a session if found, otherwise or if the session was not found (and there was no error). A special case is made when to act like .

store.set(sid, session, callback)

Required

This required method is used to upsert a session into the store given a session ID () and session () object. The callback should be called as once the session has been set in the store.

store.touch(sid, session, callback)

Recommended

This recommended method is used to «touch» a given session given a session ID () and session () object. The should be called as once the session has been touched.

This is primarily used when the store will automatically delete idle sessions and this method is used to signal to the store the given session is active, potentially resetting the idle timer.

Закрытие сессии

Закрытие сессии производится, как вы уже видели, при помощи функций session_unset() (освобождение всех переменных сессии от значений) и session_destroy() (закрытие сессии).

Разработаем простой скрипт инициализации имени пользователя на одной странице, удаление сессии и вывода приветствия с именем этого пользователя на другой странице.

pageone.php

PHP

<?php session_start(); // Отрываем сессию $_SESSION = ‘Вася’; // регистрируем переменную user через суперглобальный массив $SESSION со значением «Вася» ?> <a href=»pagetwo.php»>Перейти на вторую страницу</a>

1 2 3 4 5

<?php

session_start();// Отрываем сессию

$_SESSION’user’=’Вася’;// регистрируем переменную user через суперглобальный массив $SESSION со значением «Вася»

?>

<ahref=»pagetwo.php»>Перейтинавторуюстраницу<a>

pagetwo.php

PHP

<?php session_start(); // Стартуем сессию. echo «Приветствую вас, «.$_SESSION; //Выведем имя пользователя через суперглобальный массив $_SESSION session_destroy(); //уничтожим все данные, хранящейся в суперглобальном массиве $_SESSION ?>

1 2 3 4 5

<?php

session_start();// Стартуем сессию.

echo»Приветствую вас, «.$_SESSION’user’;//Выведем имя пользователя через суперглобальный массив $_SESSION

session_destroy();//уничтожим все данные, хранящейся в суперглобальном массиве $_SESSION

?>


Ну и страница, до которой данные сессии не сохранились. Сценарий такой же как и в pagetwo.php

pagethree.php

PHP

<?php session_start(); // Для работы с сессиями, их нужно сначала запустить (открыть, стартонуть) echo «Приветствую вас, «.$_SESSION; //Выведем имя пользователя через суперглобальный массив $_SESSION ?>

1 2 3 4

<?php

session_start();// Для работы с сессиями, их нужно сначала запустить (открыть, стартонуть)

echo»Приветствую вас, «.$_SESSION’user’;//Выведем имя пользователя через суперглобальный массив $_SESSION

?>

Напоследок поговорим о ЕРРОРАХ, которые могут возникнуть в процессе обучения.

Warning: Cannot send session cookie — headers already sent

Warning: Cannot send session cache limiter — headers already sent

Эти ERRORS говорят о том, что ещё до использования функции session_start() был передан хоть один HTTP заголовок. Что это? При общении сервера и браузера сначала идет запрос на сервер, откуда потом сначала возвращается HTTP заголовок, а потом вся информация, которую вы запрашивали. Так вот, в PHP для удобства придумали так, чтобы функции header(), set_cookie(), session_start() передавали сами HTTP заголовки

И вот, неопытный программист, ещё до выполнения одной из выше написанных функций, имел неосторожность поставить лишний символ (пробел, цифру, букву). Так вот, до функций header(), set_cookie(), session_start() не должно стоять никакого символа

Абсолютно никакого! Тогда все будет работать на УРА!

На этом, урок по работе с сессиями в PHP, окончен. Буду рад Вашим комментариям и вопросам.

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

P.S. Хотите опубликовать интересный тематический материал и заработать? Если ответ «Да», то жмите сюда.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Смотреть

English[edit]

English Wikipedia has articles on:session

Wikipedia

Nounedit

session (plural )

  1. A period devoted to a particular activity, e.g. the annual or semiannual periods of a legislative body (that together comprise the legislative term) whose individual meetings are also called sessions.
    a training session
    «Are we having a recording session?» / «Yes. We’ve even got some session musicians to provide some brass.»

    2009, Michael Otto; Stefan G. Hofmann, Avoiding Treatment Failures in the Anxiety Disorders, page 137:Alternatively, if the patient is stuck ritualizing before session, then the therapist might want to create contingencies that might help the patient come in on time

  2. A meeting of a council, court, school, or legislative body to conduct its business.
    This court is now in session.
  3. () The sequence of interactions between client and server, or between user and system; the period during which a user is logged in or connected.
    Logging out or shutting down the computer will end your session.
  4. (cricket) Any of the three scheduled two hour playing sessions, from the start of play to lunch, from lunch to tea and from tea to the close of play.
  5. () The act of sitting, or the state of being seated.
    • (Can we date this quote by Hooker and provide title, author’s full name, and other details?)
      So much his ascension into heaven and his session at the right hand of God do import.
    • ?, Alfred Tennyson, Merlin and Vivien
      But Vivien, gathering somewhat of his mood, … / Leapt from her session on his lap, and stood.
  6. (music)
  7. (education) An academic term.

Translationsedit

period devoted to a particular activity

  • Arabic: ‎ f (jalsa)
  • Armenian: նստաշրջան (hy) (nstašrǰan), սեանս (hy) (seans)
  • Belarusian: сэ́сія f (sésija), се́сія f (sjésija),  m (sjeáns)
  • Bulgarian: се́сия (bg) f (sésija)
  • Catalan:  (ca) f
  • Chinese:
    Mandarin:  (zh),  (zh) (huìqī)
  • Czech: sezení (cs) n
  • Danish: please add this translation if you can
  • Dutch:  (nl) f
  • Esperanto: sesio, seanco
  • Estonian: istung, seanss
  • Finnish:  (fi)
  • French:  (fr) f
  • Georgian: (sesia)
  • German:  (de) f
  • Greek: συνεδρίαση (el) f (synedríasi)
  • Haitian Creole:
  • Hebrew: ‎ (he) f (y’shivá)
  • Hungarian:  (hu)
  • Irish:  m
  • Italian:  f,  (it) f,  (it) f
  • Japanese: (かいき, kaiki)
  • Khmer: សម័យប្រជុំ (sa’may prɑcum)
  • Korean: (hoegi)
  • Maori: , wātū
  • Persian: نشست‎ (fa) (nešast)
  • Polish: sesja (pl) f,  (pl) m
  • Portuguese:  (pt) f
  • Romanian: please add this translation if you can
  • Russian:  (ru) f (séssija),  (ru) m (seáns)
  • Scottish Gaelic:  m
  • Serbo-Croatian:
    Roman:  (sh) f
  • Spanish:  (es) f
  • Swedish:  (sv)
  • Turkish: please add this translation if you can
  • Ukrainian: се́сія (uk) f (sésija),  m (seáns)
  • Volapük: please add this translation if you can
  • Welsh:  (cy) f

meeting of a body to conduct business

  • Arabic: please add this translation if you can
  • Armenian:  (hy) (nist)
  • Belarusian: сэ́сія f (sésija), се́сія f (sjésija), пасяджэ́нне n (pasjadžénnje)
  • Catalan:  (ca) f
  • Chinese:
    Mandarin:  (zh),  (zh) (huìyì)
  • Czech:  (cs) n
  • Dutch:  (nl) f
  • Finnish:  (fi),  (fi)
  • French:  (fr) f
  • Greek:  (el) f (sýnodos)
  • Irish:  m
  • Italian:  f
  • Khmer: សម័យប្រជុំ (sa’may prɑcum)
  • Maori: , nohoanga
  • Persian: نشست‎ (fa) (nešast), ‎ (fa) (hamâyeš)
  • Polish: sesja (pl) f,  (pl) n
  • Portuguese:  (pt) f
  • Russian:  (ru) f (séssija),  (ru) n (zasedánije)
  • Scottish Gaelic:  f
  • Serbo-Croatian:
    Cyrillic: , , ,
    Roman:  (sh),  (sh),  (sh),  (sh)
  • Spanish:  (es) f
  • Turkish: please add this translation if you can
  • Ukrainian: се́сія (uk) f (sésija),  n (zasídannja)

(computing) the sequence of interactions between client and server

  • Chinese:
    Mandarin: 通信期 (tōngxìn qī)
  • Finnish:  (fi)
  • French:  (fr) f
  • Greek: συνεδρία (el) f (synedría)
  • Portuguese:  (pt) f
  • Russian:  (ru) f (séssija)
  • Scottish Gaelic:  m

Verbedit

session (third-person singular simple present , present participle , simple past and past participle )

  1. (music) To hold or participate in a jam session

    2009 May 3, Virginia Heffernan, “World Music”, in New York Times‎:“I downloaded a clip from a drummer, who I now realize is Bernard Purdie, who has sessioned on all kinds of records,” he said.

    with other musicians.

essoins, osseins

Get PHP Session Variable Values

Next, we create another page called «demo_session2.php». From this page, we will access the session information we set on the first page («demo_session1.php»).

Notice that session variables are not passed individually to each new page, instead they are retrieved from the session we open at the beginning of each page ().

Also notice that all session variable values are stored in the global $_SESSION variable:

Example

<?phpsession_start();?><!DOCTYPE html><html> <body><?php// Echo session variables that were set on previous pageecho «Favorite color is » . $_SESSION . «.<br>»;echo «Favorite animal is » . $_SESSION . «.»;?> </body></html>

Another way to show all the session variable values for a user session is to run the following code:

Example

<?phpsession_start();?><!DOCTYPE html><html><body><?php print_r($_SESSION);?></body></html>

How does it work? How does it know it’s me?Most sessions set a user-key on the user’s computer that looks something like this: 765487cf34ert8dede5a562e4f3a7e12. Then, when a session is opened on another page, it scans the computer for a user-key. If there is a match, it accesses that session, if not, it starts a new session.

Настройка через файл .htaccess


Данный файл позволяет веб-мастеру управлять некоторыми настройками веб-сервера. Для его редактирования нужен доступ к файлам сайта. Способ не сработает, если в качестве обработчика PHP используется не Apache, а, например, NGINX + PHP-FPM. Хотя, тут тоже есть способ (о нем будет ниже).

В файл .htaccess вносим следующее:

php_value session.gc_maxlifetime 86400 php_value session.cookie_lifetime 0

* как можно заметить, параметры те же, что при настройки через php.ini.

Как говорилось выше, метод не сработает, если не используется Apache. Однако настройку можно выполнить на сервере (опять же, у нас должен быть соответствующий доступ).

Открываем файл настройки веб-сервера, например, в php-fpm:

vi /etc/php-fpm.d/www.conf

и редактируем/добавляем:

php_value = 86400 php_value = 0

После перезапускаем сервис:

systemctl restart php-fpm || service php-fpm restart

Как работают сессии PHP?

Первым делом идентифицируется браузер. Ему выдается уникальный идентификатор, который будет передаваться при каждом запросе.

Идентификатор – это обычная переменная с неким значением. По умолчанию её имя PHPSESSID.

И цель PHP заключается в том, чтобы передать (двумя способами) эту переменную браузеру, чтобы тот, в свою очередь, вернул её со следующим запросом.

Грубо говоря, на сервере создается файл со всеми переменными для созданной сессии (+устанавливается период жизни сессии). И при открытии сессии в каком-то PHP файле, то сразу же идет запрос о получении id с cookies (см. выше — PHPSESSID), если нет таковой cookie с именем PHPSESSID , то создается новая сессия. Ну а если есть PHPSESSID, то с сервера загружается все связанное с предыдущей сессией. (Например, зарегистрированные переменные сессии).

Через Cookies

Через URL

Кратко о способах

Итог: Кроме разрешения пользователя на использование cookie при передаче id сессии, можно так же задавать разрешение для PHP в файле php.ini для таких вот строк:

session.use_cookies = (1 – разрешить cookies, 0 — запретить)

session.use_trans_sid = (1 – разрешить передачу id сессии через url, 0 — запретить)

А вот и скриншот того, как должен выглядеть cookie PHPSESSID в браузере

Комментарий к скриншоту: как вы видите, я имею cookie PHPSESSID для домена sessions.gromitsu. Как я это получил? Все просто. Я создал файл index.php в корне домена sessions.gromitsu и открыл-закрыл в нем сессию.

PHP

<?php session_start(); session_unset(); session_destroy(); ?>

1 2 3 4 5

<?php

session_start();

session_unset();

session_destroy();

?>

Что такое сессия в PHP?

Сессия — это механизм для сохранения информации на разных веб-страницах для идентификации пользователей при навигации по сайту или приложению. Сессия PHP представляет собой способ хранения информации в переменных сессии, которые могут быть использованы для аутентификации на нескольких веб-страницах. В отличие от куков, информация сессии не хранится на компьютере пользователя. Вместо этого сессия создает файл на сервере во временном каталоге.

В файле :

session.save_path = "/path"

// Моя настройка в Windows 10 
session.save_path = "S:\Server\session"

В файле :

php_value session.save_path "/path"

// Моя настройка в Windows 10 
php_value session.save_path "S:\Server\session"

Выше варианты для глобальной конфигурации хранения сессий. Можно настраивать хранение сессий для каждого проекта отдельно. Для этого в проекте необходимо вызвать php функцию c указанием необходимого пути. Перед укажем путь для хранения сессий проекта:

session_save_path("S:\Server\session");
session_start();

Второй вариант:

ini_set('session.save_path', "S:\Server\session");
session_start();

Скрытые поля на HTML-форме (hidden form fields)

Суть данного подхода состоит в том, что мы обеспечиваем навигацию по сайту при помощи стандартных html-форм. И при каждом следующем запросе мы сохраняем данные из предыдущего в скрытых полях на форме. Например:

В данном примере мы на первой html-форме получаем имя пользователя. Далее в контроллере в методе Forms2() мы извлекаем это значение из коллекции Form и передаем в представление посредством объекта ViewBag. В этом представлении генерируется код новой формы и в скрытом поле сохраняется имя пользователя. Таким образом, значение имени пользователя будет передано уже на третью формы вместе с дополнительной информацией — значением поля с именем «foodName». И так далее.

Давайте рассмотрим особенности такого подхода. Плюсов практически нет, разве что реализовать данную технику можно очень быстро. Но опять же и другие подходы тоже можно реализовать очень быстро. А вот минусы есть, и довольно существенные:

Настройка сессий на веб-сервере

Выполняется путем настройки файла php.ini. Данный способ удобен, если мы являемся администратором веб-сервера, а также если есть гарантия, что общая настройка сессий не повлияет на работоспособность всех веб-приложений, работающих на данном сервере.

Открываем на редактирование php.ini:

vi /etc/php.ini

И редактируем следующие параметры:

session.gc_maxlifetime = 86400 session.cookie_lifetime = 0

* где параметр gc_maxlifetime указывает на временя в секундах, после прошествии которого данные могут быть удалены; cookie_lifetime — время жизни файлов cookies; 86400 — 24 часа в секундах. * если параметру gc_maxlifetime задать значение 0, действие сессий будет бесконечным. Это, как правило, не стоит делать — приведет к падению производительности и безопасности сервера.

Путь до php.ini может быть разный в зависимости от программной платформы и набора компонентов. Например, при использовании php-fpm, путь может быть следующий: /etc/php/7.1/fpm/php.ini. Узнать путь можно командой php -i | grep php.ini

После настройки параметров, необходимо перезагрузить сервер, являющийся интерпретатором PHP.

Если это apache:

systemctl restart apache2 || systemctl restart httpd

* в версиях Linux без systemd используем команду service apache2 restart или service httpd restart.

Если используем FastCGI (PHP-FPM):

systemctl restart php-fpm || service php-fpm restart

Как автоматически продлевать сессии

Если сессия выдается на определенный период и заканчивается в определенное время, это может привести к прерыванию активного сеанса пользователя. Гораздо удобнее, если время действия сессии будет автоматически продлеваться, если посетитель обновляет страницу. Для этого существует параметр cookie_lifetime, который во всех примерах выше мы задавали в значении 0.

Если мы зададим значение cookie_lifetime 86400, то через 24 часа сессия прервется. Это не всегда удобно.

Если есть необходимость в контроле и прерывании сессии, можно воспользоваться php-функцией session_destroy().

What is a PHP Session?

When you work with an application, you open it, do some changes, and then you close it. This is much like a Session. The computer knows who you are. It knows when you start the application and when you end. But on the internet there is one problem: the web server does not know who you are or what you do, because the HTTP address doesn’t maintain state.

Session variables solve this problem by storing user information to be used across multiple pages (e.g. username, favorite color, etc). By default, session variables last until the user closes the browser.

So; Session variables hold information about one single user, and are available to all pages in one application.

Tip: If you need a permanent storage, you may want to store the data in a database.

Другие функции для работы с сессиями

session_unregister(string)session_destroy()session_set_cookie_params(int lifetime ])Список функций для работы с сессиями (session) в php

session_cache_expire - возвращает окончание действия текущего кэша
session_cache_limiter - получает и/или устанавливает текущий ограничитель кэша
session_commit - псевдоним session_write_close()
session_decode - декодирует данные сессии из строки
session_destroy - уничтожает все данные, зарегистрированные для сессии
session_encode - шифрует данные текущей сессии как строку
session_get_cookie_params - получает параметры куки сессии
session_id - получает и/или устанавливает текущий session id
session_is_registered - определяет, зарегистрирована ли переменная в сессии
session_module_name - получает и/или устанавливает модуль текущей сессии
session_name - получает и/или устанавливает имя текущей сессии
session_regenerate_id - модифицирует текущий идентификатор сеанса недавно сгенерированным
session_register - регистрирует одну или более переменных для текущей сессии
session_save_path - получает и/или устанавливает путь сохранения текущей сессии
session_set_cookie_params - устанавливает параметры куки сессии
session_set_save_handler - устанавливает функции хранения сессии уровня пользователя
session_start - инициализирует данные сессии
session_unregister - дерегистрирует переменную из текущей сессии
session_unset - освобождает все переменные сессии
session_write_close - записывает данные сессии и конец сессии
По умолчанию, сессия живёт до тех пор, пока клиент не закроет окно браузера.

Логика работы сессии

Пример работы1.2.index.php

session_start(); // каждый файл, в котором Вы хотите использовать данные сессий должен в начале кода содержать команду "запуска сессии" 
$login = 'admin';
$password = 'pass';
$_SESSION = $login; // сохраняем переменную содержащую логин
$_SESSION = $password; // сохраняем переменную содержащую пароль

3.example.php

session_start(); // снова "запускаем сессиию" 
echo "Ваш логин ".$_SESSION; // выведет "Ваш логин admin", хотя на этой странице мы не записывали данных!

4.example.php

session_start(); // снова "запускаем сессиию" 
unset($_SESSION); // так разрегистрировали переменную или "уничтожили"
echo "Ваш логин ".$_SESSION; // выведет "Ваш логин " . Так как мы её уничтожили в прошлой строке, то и данных нет
session_destroy(); // разрушаем сессию. Всех данных, включая $_SESSION уже нет. При их запросе будет выводить ошибка

Example

A simple example using to store page views for a user.

var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session')

var app = express()

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}))

app.use(function (req, res, next) {
  if (!req.session.views) {
    req.session.views = {}
  }

  // get the url pathname
  var pathname = parseurl(req).pathname

  // count the views
  req.session.viewspathname = (req.session.viewspathname || ) + 1

  next()
})

app.get('/foo', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views'/foo' + ' times')
})

app.get('/bar', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views'/bar' + ' times')
})

Итоги

	
// Создание и(или) доступ к сессии
session_start();

// Запись в сессионную переменную
$_SESSION = 'John';

// Чтение из сессионной переменной
echo $_SESSION;

// Удалить сессионную переменную
unset($_SESSION);

// Очистить массив $_SESSION полностью
session_unset();

// Удалить временное хранилище (файл сессии) на сервере
session_destroy();

// Принудительное удаление сессионной cookie
setcookie(session_name(), session_id(), time()-3600);


// Простой пример использования сессий
session_save_path('С:\temp');
session_start();
if (!isset($_SESSION)) $_SESSION = 0;
echo "Вы обновили эту страницу ".$_SESSION++." раз. ";
echo "<br><a href=".$_SERVER.">обновить";

С этим читают