хорошо я - новичок на сессиях, позволяет, предполагают, что у нас есть немного сайта входа в систему,
вот логика
что это использует
session_register
session_destroy
session_unset
session_start
где делает session_id
И session_regenerate
или session_name
входит? на php сайте это говорит
session_id () используется, чтобы получить или установить идентификатор сессии для текущей сессии.
я все еще просто не получаю его, почему нам нужны они так или иначе? в реальной среде, что это делает?
Нет, вам не нужно их использовать.В общем, все, что вам нужно, это
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_register() обесценилась в 5.3, я бы не советовал ее использовать. Вместо этого просто используйте
$_SESSION['varname'] = "value";
session_id он используется только если вы хотите получить идентификатор сессии для хранения в базе данных, это не "необходимо" для использования. session_name, просто задает имя, это не обязательно. regenerate используется, если вы хотите сделать новый id, это также не нужно, если только это не нужно вашему приложению, для сессии входа в систему, я очень сомневаюсь, что вы будете использовать это.
Остальные, я надеюсь, вы понимаете, что они делают (т.е. unset / destroy). Но надеюсь, это даст вам некоторое представление.
ID сессии - это идентификатор сессии. Сервер хранит данные о клиенте в файле cookie. Этот файл cookie отправляется с каждым HTTP-запросом клиента к серверу. PHP устанавливает cookie в виде маркера случайной строки. Этот маркер идентифицирует клиента и связывает его с набором пар ключ-значение. Идея переменной сеанса заключается в том, что cookie можно легко подделать. Однако идентификаторы сеанса, будучи случайными строками, трудно дублировать, что повышает безопасность.
Обычно я использую session_id () при создании корзин для покупок, чтобы я мог отслеживать, что добавил этот пользователь, а затем, как только я получу ответ от платежного шлюза о том, что платеж был успешным, я затем session_regenerate (), чтобы, когда они вернувшись на мой веб-сайт, их предыдущие корзины не видны, и для меня это похоже на то, что новый пользователь «вошел» в магазин.