Моя Рекомендуемая методология будет хранить type
в каждый пользователь в базе данных. Проблемы, которые возникли бы, если вы решили сохранить type
как переменная сессии будет (среди прочих):
После истечения сессии, эта информация будет потеряна. Обычно сеансы продолжаются 30 минут, хотя вы можете изменить это так долго, как хотите. Однако, если вы создаете сеанс, который длится 1 месяц, тогда любой, кто имеет доступ к этому компьютеру пользователя, будет занесен в учетную запись пользователя без необходимости использовать какой-либо пароль.
Вам не удастся использовать мощные и продвинутые запросы, предлагаемые базами данных (например, MySQL, который использует SQL). Если вы храните свою информацию в сеансах, вы можете найти способ поиска информации о пользователях 1 на 1, но зачем изобретать колесо? Нелегко создать структуру базы данных с нуля, поэтому я бы не рекомендовал ее делать.
Что касается ваших проблем на доступ к базе данных после того, как информация была обновлена, я не сказал бы эта информация, как в отношении, как вы могли бы поверить, что это будет. Представим следующий пример:
1)
Если пользователь, например, является менеджер в настоящее время и загружает веб-сайт, где он может делать мощные действия, и сразу после этого он разжалован будучи нормальный пользователь, то наличие этой информации в базе данных будет работать отлично. Если пользователь пытается использовать свои полномочия (которые больше не являются его), он нажимает кнопку, которая отправляет запрос в базу данных, чтобы подтвердить его . Запросы базы данных очень быстрые, поэтому скорость не является проблемой. Я был бы больше обеспокоен скоростью, которую вам требуется для получения информации из переменной сеанса, чем из базы данных.
2)
Если пользователь был на странице в то время как он был пользователем нормально, и в то время как на странице он стал менеджером, то он будет в состоянии осуществлять свои полномочия после того, как Обновление страницы. Я имею в виду, если вы использовали сеансы, и вы хотели, чтобы страница автоматически получала информацию с чем-то вроде AJAX, а затем обновляла его параметры на странице, которые потребляли бы гораздо больше мощности сервера, чем простое обновление.
Для простого простого использования SELECT * FROM myTable WHERE id = 4
может потребоваться всего 1 миллисекунда, который будет выполнен в базе данных. Базы данных были специально разработаны для их скорости, поэтому они предпочли
HOWEVER, возможно, у вас нет доступа к базе данных, и именно поэтому вы ищете альтернативу? Ну, тебе повезло! MySQLi - это база данных, в которой используется только файл для хранения информации. Он был специально разработан для пользователей, которые не имеют большого количества ресурсов, и обладает многими возможностями, как MySQL.
может быть полезен http://stackoverflow.com/questions/3426844/access-active-sessions-in-php –
php делает свою вещь, а затем исчезает, выплевывая HTML. Я буду запускать отмененное или выходное действие для каждого UPDATE запроса типа пользователя. – Mihai
Вам нужно добавить определенную авторизацию с помощью списков контроля доступа. Например, администратор может повысить роль любого пользователя при установке идентификатора группы и родительского идентификатора для этого пользователя в db. И подтвердите запрос каждой страницы, используя любые изменения в списках идентификаторов групп или acl. Возможно, я неправильно понял ваш вопрос. Обновление: объедините это со стороной js или js сервера, чтобы проверить идентификатор группы. Если по какой-либо причине js не может подключиться, уничтожьте все объекты данных. Или вы можете создать функцию/расширение php, которая ищет любые нарушения и действует соответствующим образом, оставляя пользователей работать свободно. – Nitin