Я хочу, чтобы несколько учетных записей с одним и тем же учетным именем регистрировались одновременно. Поэтому я сделал столбец login_status и установил его в 1, когда кто-то зашел в систему и изменил значение на 0 при выходе из системы, кроме того, что я установил сеанс после успешного входа в систему. Если пользователь не будет нажимать на выход (в случае закрытия вкладки пользователя или потому, что какой-либо сетевой проблемы), он не обновляет базу данных, а затем снова не может использовать эти учетные данные. Поэтому я использую вызов ajax для установки текущей отметки времени в базе данных с соответствующими учетными данными для входа в систему, и она обновляется каждые 2 минуты, если пользователь не перемещается с этой страницы. Затем, если кто-то попытается войти в систему с теми же учетными данными в журнале, он проверяет эти отметки времени, если столбец login_status равен 1, а затем, если отметка времени старше 3 минут, она позволяет войти в систему. Затем она решает эту проблему. Но новая проблема заключается в том, что пользователь закрывает окно вкладки или браузера, и через 3 минуты можно войти в систему с такими же учетными данными из-за чего-то, и если предыдущий пользователь автоматически откроет эту страницу, он войдет в систему, поскольку сеанс уже установлен. Как я могу это предотвратить.Ошибка входа в систему php
ответ
Я бы не предложить не сохранение сессий в базу данных, если это абсолютно необходимо. Вы будете больше напрягать базу данных, чем нужно.
Что я хотел бы предложить создать новую таблицу, такую как users_logged_in, и вставить идентификатор входа и временную метку пользователя, который регистрируется в приложении, но не перед тем, как сначала проверить таблицу, чтобы увидеть, существует ли пользователь.
Вы можете удалить любого истекшего пользователя из таблицы при каждом запросе страницы или запросе на страницу N, где N - количество запросов на страницу.
Ваш подход - это сложный и уязвимый для условий гонки. Я предлагаю вам хранить ваши сессии в базе данных. Таким образом, вы всегда можете проверить, был ли пользователь уже зарегистрирован и перезаписать его предыдущую сессию, если он дважды входит в систему. Таким образом, будет действовать только один сеанс.
Посмотрите http://php.net/manual/en/function.session-set-save-handler.php
- 1. Ошибка входа в систему PHP
- 2. Ошибка входа в систему PHP
- 3. Ошибка входа в систему php
- 4. Ошибка входа в систему PHP
- 5. Ошибка входа в систему PHP
- 6. Ошибка входа в систему php
- 7. Ошибка входа в систему PHP
- 8. Ошибка входа в систему
- 9. Ошибка входа в систему?
- 10. Ошибка входа в систему php строки
- 11. Ошибка входа в систему после скрытия Php
- 12. Ошибка входа в систему php скрипт
- 13. Ошибка входа в систему/индекс PHP
- 14. Ошибка аутентификации страницы входа в систему PHP
- 15. Ошибка входа в систему PHP, MySQL
- 16. Php Ошибка входа в систему - неудачный логин
- 17. Ошибка входа в систему PHP-код
- 18. Ошибка входа в систему
- 19. Ошибка входа в систему
- 20. Ошибка входа в систему
- 21. Ошибка входа в систему
- 22. Ошибка входа в систему
- 23. Ошибка «Ошибка входа в систему»
- 24. Ошибка входа в функцию входа в систему, PHP
- 25. Facebook Ошибка входа в систему
- 26. Ошибка входа в систему Magento2
- 27. MySQL Ошибка входа в систему
- 28. Ошибка входа в систему (перенаправление)
- 29. Ошибка системы входа в систему
- 30. ArrayList Ошибка входа в систему для входа в систему
Почему в мире вы задаете этот вопрос после того, как уже попросили http://stackoverflow.com/questions/2950355/set-session-in-database-in-php? – halfdan