Сессии - это механизм, позволяющий хранить определённые данные на сервере, уникальные для каждого пользователя. Особо внимательные читатели обнаружат сходство с cookie. И, в целом, это одно и то же. Однако, ключевой момент: данные хранятся не в браузере пользователя, а в специальном файле на сервере, имя которого уникально для каждого пользователя. А уникальный идентификатор сессии PHP хранится уже в cookie.
Давайте с Вами поработаем с сессиями в PHP. И начнём с функции session_start(). Данная функция делает следующее: если пользователь зашёл впервые, то создаёт уникальный идентификатор и записывает его в cookie, а также создаёт новый файл, вновь уникальный для пользователя. Если пользователь уже заходил, то тогда сервер считывает значение уникального идентификатора из cookie и, в соответствии с ним, обращается к нужному файлу сессии. Из этого файла PHP считывает все данные и помещает их в массив $_SESSION. Давайте напишем простой код, в котором мы записываем переменную в сессию, либо считываем, если она уже была записана.
<?php
session_start();
if (isset($_SESSION['name'])) $name = $_SESSION['name'];
else $_SESSION['name'] = "15St";
echo $name;
?>
Вначале мы вызываем функцию session_start(), которую я описал выше. Затем проверяем: существует ли переменная "name" в сессии. Если существует, то считываем из неё данные и записываем в переменную name. Если не существует (то есть пользователь пришёл в первый раз), то устанавливаем переменной "name" в сессии значение "15St.". Следующей строкой выводим значение переменной $name. Очевидно, что при первом запуске, Вы увидите пустую строку, а вот при втором увидите строку "15St.", считанную из сессии.
Советую Вам сейчас ввести в адресной строке: "javascript:document.cookie" (вводите на той же вкладке, что и запускали скрипт). В результате, Вы увидите примерно следующее: "PHPSESSID=f99c53cca398f756fa958e8cee2136bc". Как раз значение PHPSESSID и является тем самым уникальный идентификатором.
И чтобы всё стало совсем понятно, то советую даже найти файл сессии. Если Вы используете Denwer, то он лежит в папке "tmp". Посмотрите на файлы, которые начинаются на "sess_" - это и есть те самые файлы сессии. Вы можете их открыть в простом блокноте.
Ещё одно очень важное свойство - это временность сессий в PHP. То если cookie хранятся до тех пор, пока их не удалит браузер. А браузер их по умолчанию не удаляет никогда. То сессии хранятся время, заданное в настройках PHP. По умолчанию, это 15 минут. То есть если Вы будете использовать аутентификацию на основе сессии, то через 15 минут бездействия пользователя, ему снова придётся авторизоваться. Разумеется, это хорошо, так как если пользователь забудет "Выйти", то ничего плохого не случится. Злоумышленник не сможет воспользоваться аккаунтом пользователя. Более того, при использовании cookie их можно выкрасть, подставить в своём браузере, и в результате злоумышленник авторизован под чужими данными, не зная даже пароля. А сессию украсть не получится, так как все параметры хранятся на сервере, и узнать о них не получится.
Поэтому старайтесь в своей практике преимущественно использовать сессии, а не чистые cookie.
И, напоследок, хочется предупредить об очень частой ошибке. Никогда не выводите данные в браузеры до использования функции session_start(), иначе она выдаст ошибку. То есть нельзя писать вот так:
<?php
echo "Hello";
session_start();
?>
При запуске данного скрипта возникнет ошибка. То же самое правило действовало и с cookie(функция setcookie()). Так что, думаю, здесь всё понятно.
Что же касается сессий в PHP, то, разумеется, их можно использовать для хранения данных о статистике, аутентификации, личных настроек пользователя и других аналогичных вещей.