ok im новичок на сессиях позволяет себе, что у нас есть небольшой сайт для входа,
это логика
что он использует
session_register session_destroy session_unset session_start
где происходит session_id
и session_regenerate
или session_name
? на сайте php говорится:
session_id () используется для получения или установки идентификатора сеанса для текущего сеанса.
- Можно ли сохранить экземпляр класса в пространстве $ _SESSION?
- Завершение сеанса Codeigniter
- Какая самая лучшая / самая быстрая таблица таблиц MySQL для временного / вращающегося хранилища, например, для управления сеансом?
- Сессии, не работающие в localhost, но работающие на реальном сервере (Codeigniter)
- Выйти из системы, если пользователи неактивны в течение определенного периода времени
Я все еще просто не понимаю, зачем они нам нужны? в реальной среде, что он делает?
Нет, вам не нужно их использовать. В общем, все, что вам нужно, это
session_start
чтобы начать обработку сеанса и session_destroy
чтобы уничтожить сохраненные данные сеанса (это не изменяет $_SESSION
), и session_unset
чтобы сбросить переменную $_SESSION
(но вы также можете сделать $_SESSION = array()
). session_id
и session_name
должны получить и установить текущий идентификатор сеанса и имя идентификатора сеанса (по умолчанию – PHPSESSID
). session_regenerate_id
может использоваться для восстановления / изменения идентификатора сеанса текущего сеанса. Это может быть полезно, если, например, вы хотите обновить идентификатор сеанса каждые 10 минут или после изменения состояния подлинности пользователя, связанного с сеансом.
session_regenerate_id()
используется для предотвращения фиксации сеанса.
Фиксация сеанса означает следующее: вы посещаете веб-сайт и проверяете свой идентификатор сеанса. Затем вы управляете другим пользователем при посещении сайта с помощью идентификатора сеанса и входа в систему. Теперь вы вошли в систему как этот пользователь и имеете свои привилегии, потому что вы используете один и тот же сеанс.
Чтобы предотвратить это, дайте пользователю новый идентификатор сеанса, используя session_regenerate_id()
когда он успешно session_regenerate_id()
. Теперь только он имеет идентификатор сеанса, а ваш старый идентификатор сеанса больше недействителен.
session_register () обесценивается в 5.3, я бы предложил против использования. Вместо этого просто используйте
$_SESSION['varname'] = "value";
session_id он просто использовался, если вы хотите получить идентификатор сеанса для хранения в базе данных, это не «необходимо» для использования. session_name, просто устанавливает имя, это необязательно. Регенерация – это если вы хотите сделать новый идентификатор, это также не обязательно, если ваше приложение не нуждается в этом, для сеанса входа в систему я очень сомневаюсь, что вы его используете.
Остальные, я надеюсь, вы понимаете, что они делают (то есть, unset / destroy). Но надежда, которая дает некоторое представление.
Идентификаторы сеанса являются идентификатором сеанса. То, как сервер хранит данные о клиенте, находится в файле cookie. Этот файл cookie отправляется с каждым HTTP-запросом на сервер этим клиентом. PHP устанавливает куки-файл как случайный токен. Этот токен идентифицирует клиента и связывает его с набором пар ключ-значение. Идея переменной сеанса заключается в том, что файлы cookie можно легко подделать. Идентификаторы сеансов, однако, являются случайными строками, трудно дублировать и, таким образом, добавляют безопасность.
Обычно я использую session_id () при создании корзин для покупок, поэтому я могу отслеживать, что добавил этот пользователь, после того как я получил ответ от платежного шлюза, что платеж был успешным, я затем session_regenerate (), чтобы, когда они вернутся к мой веб-сайт их предыдущие корзины не видны, и для меня его, как новый пользователь, «вошел» в магазин.