Создать сеанс PHP для всех пользователей или только тех, кто хочет войти? - PullRequest
4 голосов
/ 14 января 2011

На данный момент моя CMS создает сеанс PHP для каждого пользователя, который посещает сайт.Я имею в виду только создание сеанса для пользователей, которые хотят войти в систему. У меня проблема в том, что некоторые элементы пользовательского интерфейса для зарегистрированных пользователей находятся на всех страницах, поэтому при каждом запросе страницы система должна проверять, является ли пользовательвошел в систему, что означает, что у меня нет другого варианта, чтобы начать сеанс при каждом запросе страницы?Или я не прав?Является ли нормальной практикой создание сеанса для каждого пользователя, даже если он не хочет входить в систему?

Короче говоря, я хотел бы знать, есть ли у A. вариант в моем случае использования, чтобы создать сеанс PHP только для пользователей, которые хотят войти в систему, и B. если это считается плохой практикой создания сеансакаждый пользователь, независимо от того, хочет он войти или нет.Если это не так, я могу оставить все как есть ...

Ответы [ 5 ]

3 голосов
/ 14 января 2011

У вас нет (реального) выбора.Вы не можете знать, что пользователь вошел (или нет) без сеанса.

2 голосов
/ 14 января 2011

Быстрый ответ:

В вашем случае идеально подходит создать сеанс для каждого пользователя. Сеансы незначительны и не о чем беспокоиться, если речь идет о производительности (в вашем случае).

Метод, который вы используете, совсем не плохая практика. На самом деле, я бы сказал, что это почти лучшая практика.

Длинный ответ: За 6 с лишним лет опыта работы программистом на PHP в корпоративном мире совершенно нормально создавать сеансы для каждого пользователя, независимо от того, вошли они в систему или нет. Фактически сеансы могут использоваться для многих удобных функций для пользователя, даже если они не вошли в систему - таких как корзины покупок и т. д. Вы делаете все правильно. Если вы хотите вообще повысить производительность, воспользуйтесь такими инструментами, как Google PagesSed и Yahoo YSlow, - они дадут вам советы по оптимальной практике для веб-сайтов.

1 голос
/ 21 февраля 2014

Это можно избежать каждый раз при создании сессии.Так что, если файлы сессии маленькие?Зачем размножать их, когда это не нужно?

По сути, это то, что я делаю:

Проверьте наличие файла cookie сеанса во входящем запросе, и только session_start() выполняйте, если выВы получили один.

Вышедшие из системы пользователи, просматривающие сайт (обычно), не будут отправлять сеансовый файл cookie, и поэтому они не будут вызывать session_start().Просто.

Как только кто-то заходит на ваш сайт, и вы действительно хотите начать сеанс (сеанс как логически в вашем приложении, так и в смысле PHP), тогда используйте session_start() и т. Д., Который будет обрабатывать настройку cookie.

И как только кто-то выйдет из системы, убедитесь, что вы также уничтожаете cookie-файл сеанса, а не только сам сеанс PHP.

Очевидно, что пользователь может блокировать ваши операции cookie в конце и испортить все, ноони могли бы сделать это в любом случае.

1 голос
/ 14 января 2011

В большинстве случаев управление входами осуществляется через сеанс, поэтому вы должны создать сеанс в начале страницы, чтобы определить, вошли они в систему или нет.У вас нет выбора на самом деле ... Это не плохая практика, это обычная практика.

1 голос
/ 14 января 2011

Разве вы не можете просто найти пустое значение $ _SESSION, чтобы увидеть, вошли ли они в систему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...