session_id()
возвращает идентификатор сеанса для текущего сеанса или пустую строку (""), если текущий сеанс отсутствует (идентификатор текущего сеанса не существует).
http://de.php.net/manual/en/function.session-id.php
но это просто говорит вам, активен ли сеанс или нет.
Большую часть времени я просто вызываю session_start();
в начале каждого сценария (даже если пользователь не вошел в систему). при входе в систему я устанавливаю $_SESSION['user']
с идентификатором пользователя или объектом пользователя. на выходе, я просто unset($_SESSION['user']);
. проверяя empty($_SESSION['user'])
, я могу проверить, вошел ли кто-то в систему или нет. не делайте этого, если вы храните зависимую от пользователя информацию в другом месте вашего сеанса, иначе следующий входящий в систему парень может получить информацию, которую он не должен видеть (в этом случае используйте session_destroy();
).
но безопасность? просто отключите распространение идентификатора сеанса с помощью переписывания URL-адресов GET / POST (только файлы cookie), чтобы они не заканчивались URL-адресами, которые можно кэшировать или передавать другим (в этом случае возможен перехват сеанса). Вы можете сделать это, установив session.use_only_cookies
в php.ini.
могут возникнуть дополнительные проблемы безопасности, если вы размещаете на ненадежном и / или неправильно настроенном общем сервере - это может привести к тому, что другие люди на том же компьютере будут читать ваши данные сеанса. в этом случае вы можете сохранить данные сеанса в базе данных, переписав обработчик сеанса. просто поищите session handler mysql
в трубках, я уверен, что есть достаточно готовых решений. и не храните конфиденциальную информацию, такую как пароли, в сеансе, лучше делайте запрос каждый раз, когда вам нужно сравнить его.
кроме этого ... используйте ssl / https для входа в систему и управления пользователями, поэтому пароли в виде открытого текста не передаются. хранить в базе только pw-хэши с солью. не позволяйте никому видеть пароли (то есть: никогда не печатайте их в HTML или по электронной почте). не используйте значения auto_increment для идентификаторов, которые пользователь может видеть (и, следовательно, догадываться). хорошо, это уже выходит за рамки вопросов.