Нам где-то нужно хранить промежуточные данные. Не постоянно в базе данных, а на какое-то время. Для этого можно использовать cookies. Но cookie ограничены по размеру, а надо хранить крупные файлы. Пользователь может эти cookie удалять. Кроме того, гонять постоянно огромное число данных через http-протокол не есть гуд. Если мы хотим сохранять какие-то данные, которые пользователю не хотелось бы показывать (а cookie пользователь может посмотреть, что в них), пришлось бы шифровать их, а потом каждый раз расшифровывать при получении. Это неудобно.
Принцип работы сессии
Рассмотрим работу сессии на примере online-теста. Есть сервер, на нем данные страницы. Вопрос 1, вопрос 2 и т.д. Т.е. пользователь заходит, первый вопрос — ответ приняли, второй вопрос — ответ приняли. В конце все суммируем и выдаем результат. Где же хранить промежуточные данные? Для этого и используют сессии. По сути, нам нужна некая глобальная переменная, которая была бы доступна из всех файлов (обычные переменные живут только внутри одного файла). Именно глобальным хранилищем и является сессия, это некие текстовые данные, которые доступны со всех страниц, и хранятся эти данные на сервере.
Приходит пользователь, запросил страницу. Мы проверяем, открыта ли для него сессия? Если сессия не открыта, мы ее открываем. Создается текстовый файл с уникальным идентификатором, который однозначно идентифицирует этого конкретного пользователя. И юзеру посылается запрашиваемая страница. Он ставит галочку, отправляет ответ. Мы проверяем — сессия существует? Да. Тогда записываем входящую информацию в эту сессию. Дальше отдаем пользователю вторую страницу, он поставил галочку. Опять данные приходят. Мы опять проверяем — сессия есть? Да. Записали данные в сессию. Подошли к результату, выбрали все из сессии, отдали результат пользователю. Далее, пришел второй пользователь. Для него создаем вторую сессию (у него свой идентификатор).
Сессия существует, пока открыт браузер пользователя. Потом она уничтожается. Т.е. сессия — это аналог cookie, только данные хранятся на сервере временно.