Для чего используются session_id, session_regenerate_id и session_name?

ok im новичок на сессиях позволяет себе, что у нас есть небольшой сайт для входа,

это логика

  1. авторизоваться
  2. if password right = use $ _SESSION [isaloginuser] = 1
  3. проверьте сеанс, чтобы увидеть меню, если $ _SESSION [isaloginuser] = 1
  4. показать меню
  5. пользователь хочет выйти из системы
  6. неустановленная сессия
  7. разрушить сеансовую систему

что он использует

session_register session_destroy session_unset session_start 

где происходит session_id и session_regenerate или session_name ? на сайте php говорится:

session_id () используется для получения или установки идентификатора сеанса для текущего сеанса.

Я все еще просто не понимаю, зачем они нам нужны? в реальной среде, что он делает?

Related of "Для чего используются session_id, session_regenerate_id и session_name?"

Нет, вам не нужно их использовать. В общем, все, что вам нужно, это

  • 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 (), чтобы, когда они вернутся к мой веб-сайт их предыдущие корзины не видны, и для меня его, как новый пользователь, «вошел» в магазин.