Для чего session_id, session_regenerate_id и session_name, используемый?

хорошо я - новичок на сессиях, позволяет, предполагают, что у нас есть немного сайта входа в систему,

вот логика

  1. вход в систему
  2. если право пароля = использует $ _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 () используется, чтобы получить или установить идентификатор сессии для текущей сессии.

я все еще просто не получаю его, почему нам нужны они так или иначе? в реальной среде, что это делает?

10
задан Gumbo 23 July 2010 в 14:59
поделиться

5 ответов

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

  • session_start , чтобы начать обработку сеанса, и
  • session_destroy , чтобы уничтожить сохраненные данные сеанса (это не изменяет $ _ SESSION ) и
  • session_unset для сброса переменной $ _ SESSION (но вы также можете выполнить $ _ SESSION = array () ).

session_id и session_name предназначены для получения и установки идентификатора текущего сеанса и имени идентификатора сеанса (по умолчанию PHPSESSID ). session_regenerate_id может использоваться для восстановления / изменения идентификатора сеанса текущего сеанса. Это может быть полезно, если, например, вы хотите обновлять идентификатор сеанса каждые 10 минут или после изменения состояния подлинности пользователя, связанного с сеансом.

14
ответ дан 3 December 2019 в 14:52
поделиться

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

Фиксация сеанса означает следующее: вы посещаете веб-сайт и проверяете свой идентификатор сеанса. Затем вы манипулируете другим пользователем, чтобы он посетил сайт, используя свой идентификатор сеанса, и выполнил вход. Теперь вы вошли в систему как этот пользователь и имеете его права, потому что вы оба используете один и тот же сеанс.

Чтобы предотвратить это, дайте пользователю новый идентификатор сеанса, используя session_regenerate_id () , когда он успешно входит в систему. Теперь только у него есть идентификатор сеанса, а ваш старый идентификатор сеанса больше не действителен.

10
ответ дан 3 December 2019 в 14:52
поделиться

session_register() обесценилась в 5.3, я бы не советовал ее использовать. Вместо этого просто используйте

$_SESSION['varname'] = "value";

session_id он используется только если вы хотите получить идентификатор сессии для хранения в базе данных, это не "необходимо" для использования. session_name, просто задает имя, это не обязательно. regenerate используется, если вы хотите сделать новый id, это также не нужно, если только это не нужно вашему приложению, для сессии входа в систему, я очень сомневаюсь, что вы будете использовать это.

Остальные, я надеюсь, вы понимаете, что они делают (т.е. unset / destroy). Но надеюсь, это даст вам некоторое представление.

3
ответ дан 3 December 2019 в 14:52
поделиться

ID сессии - это идентификатор сессии. Сервер хранит данные о клиенте в файле cookie. Этот файл cookie отправляется с каждым HTTP-запросом клиента к серверу. PHP устанавливает cookie в виде маркера случайной строки. Этот маркер идентифицирует клиента и связывает его с набором пар ключ-значение. Идея переменной сеанса заключается в том, что cookie можно легко подделать. Однако идентификаторы сеанса, будучи случайными строками, трудно дублировать, что повышает безопасность.

2
ответ дан 3 December 2019 в 14:52
поделиться

Обычно я использую session_id () при создании корзин для покупок, чтобы я мог отслеживать, что добавил этот пользователь, а затем, как только я получу ответ от платежного шлюза о том, что платеж был успешным, я затем session_regenerate (), чтобы, когда они вернувшись на мой веб-сайт, их предыдущие корзины не видны, и для меня это похоже на то, что новый пользователь «вошел» в магазин.

2
ответ дан 3 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: