Это правильно. Это обычно используется большинством веб-сайтов с использованием PHP.
$_SESSION
- это супер глобальная переменная, управляемая только вашим сервером.
Что происходит:
- Вы называете
session_start()
- Куки имени
PHPSESSID
(или что-нибудь, что вы называете его в php.ini
) с использованием криптографически безопасного значения будет сгенерирован.
- PHP объявляет переменную с именем
$_SESSION
, которая внутренне хранится с ассоциацией с генерируемым значением cookie.
Почему он не может быть изменен другими веб-сайтами:
- Значение
$_SESSION
сохраняется только внутри. Даже клиент не знает его ценности. Он содержит только cookie для идентификатора сеанса, но он даже не знает, что означает идентификатор сеанса, а также идентификатор сеанса других людей.
- Этот файл cookie ID сессии не может быть украден или изменен другими веб-сайтами. По умолчанию путь к файлу cookie установлен в ваш собственный домен, и клиент должен отправить его только вам. (Если клиент хочет отправить на другие веб-сайты, он не выполняет свои собственные учетные данные, и это не ваша ответственность, кроме ошибки браузера клиента)
Если вы не используете другие сайты на одном сервере, Это не проблема (при нормальных обстоятельствах).
В качестве примечания, напоминаем, что вы должны добавить return;
заявление после того, как с помощью header("Location: index.php");
. Это общий источник ошибок, и в этом контексте он может подвергнуть опасности ваш сервер, потому что, несмотря на то, что ваш браузер не отображает контент после получения заголовка «Местоположение», ваш сервер на самом деле по-прежнему отправляет данные, которые должны быть сгенерированный для пользователя, как если бы он вошел в систему.
TL; DR: если у вас есть сценарий, который не должен отправлять какие-либо данные, если клиент не вошел в систему, не добавляя оператор return;
после того, как header("Location: ...");
сделает сервер по-прежнему отправленным данные, но обычные браузеры не будут отображать его (потому что он перенаправляет), но если есть кто-то, кто пытается просмотреть отправленные данные (используя такие простые методы, как curl
без добавления опции -L
), их легко увидеть.
сеансы записываются в файл на веб-сервере, поэтому другой сайт может установить сеанс под названием 'user', но он будет установлен на другом сайте и действителен на другом сайте. – RamRaider