У меня есть таблица groups
с некоторыми полями, включая username
.
На моей странице формы я использовал вызов Ajax для проверки доступности имени пользователя. Оно работает. Но если два пользователя обрабатывают проверку одновременно, они оба увидят, что имя пользователя доступно. Как я могу этого избежать?
Реализовать доступность имени пользователя с помощью PHP, MySQL и Ajax, если два пользователя обрабатывают проверку одновременно.
comment
На самом деле имя пользователя доступно до тех пор, пока кто-то не обработает запрос на получение этого имени пользователя. Нет особого смысла сообщать только одному пользователю, что имя пользователя свободно, поскольку они могут не выбирать это имя пользователя. Я полагаю, вы могли бы просто установить его как «зарезервированное» имя пользователя на определенное время, используя таблицу в своей БД, но действительно ли оно того стоит?
- person Matt   schedule 07.01.2016
comment
перед вставкой проверьте имя пользователя. Если пользователь один помогает, то показывает сообщение второму пользователю, что он был использован, попробуйте другой
- person Muhammad Atif   schedule 07.01.2016
comment
@Matt, да… оно того стоит. Иначе он вернет ошибку ограничения целостности: повторяющаяся запись ключа. Я не могу перенаправить на какую-либо другую страницу, если произойдет эта ошибка. Так что требуется правильный поток данных.
- person fighter   schedule 07.01.2016
Ответы (1)
Вам нужно проверять имя пользователя при каждом нажатии клавиши. Поэтому, когда кто-то начинает вводить имя пользователя, при каждом нажатии клавиши вам нужно проверять доступность имени пользователя (используя ajax). Событие нажатия клавиши, которое вы можете получить с помощью jQuery .keypress().
Здесь может возникнуть одна проблема, если перед отправкой одной формы какой-то другой пользователь взял то же имя пользователя. Чтобы решить эту проблему, вам также необходимо перепроверить доступность имени пользователя при отправке формы, и если в это время имя пользователя недоступно, просто предоставьте сообщение о том, что имя пользователя уже выбрано, введите другое.
person
gagan mahatma
schedule
07.01.2016