2010-11-06 3 views
6

Я создаю функцию входа на свой сайт, и я думаю об обновлении идентификатора сеанса на каждой странице, чтобы сделать вещи более безопасными.PHP «Session_regenerate_id» и аутентификация пользователей

Я прочитал PHP: информацию о регенерации, но сообщения на странице PHP сильно отличаются от информации, которую они предоставляют о session_regenerate_id.

Может кто-нибудь объяснить эти два вопроса:

  • Мне нужно скопировать старые данные сессии в недавно генерироваться один, или это делается автоматически делать? Примеры кода очень ценятся ...

  • Как я могу проверить, не был ли пользователь уже вошел в систему? Что следует хранить в переменной сеанса и как? Примеры кода очень ценятся ...

Благодарности

ответ

7

Вызывать session_regenerate_id() на каждой странице может быть немного излишним, в зависимости от настроек. Эта функция используется для предотвращения захвата сеанса и должна использоваться всякий раз, когда пользователь повышает уровень привилегий (например, вход в систему). Обычно вы переключаетесь на https-соединение после входа пользователя в систему, а это означает, что вам нужно только вызвать session_regenerate_id() один раз, когда новый файл cookie будет транслироваться через безопасное соединение и не сможет быть подслушивается. Однако, если у вас нет сертификата SSL на вашем сервере, регенерация файла cookie сеанса на каждой странице может быть хорошим вариантом.

Когда вы вызываете session_regenerate_id(), вам не нужно копировать данные сеанса. Все это позаботится о вас с помощью PHP. В основном создается новый токен сеанса и cookie, данные сеанса копируются в хранилище сеансов, которые должны быть связаны с новым токеном, и если вы передадите true в качестве единственного аргумента функции, старый файл данных сеанса на диске будет удален.

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

<?php 
    if ($_SESSION['logged_in']){ 
     //User logged in 
    } else { 
     //User not logged in 
    } 
?> 

НТН.

Смежные вопросы