Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
регистрация пользователя (edart) 10/02/2006 - 11:42:08
      Re: регистрация пользователя (DNick) 10/02/2006 - 14:08:44
      Re: регистрация пользователя (edart) 10/02/2006 - 18:31:23
      Re: регистрация пользователя (edart) 10/02/2006 - 19:10:24
      Re: регистрация пользователя (DNick) 14/02/2006 - 19:04:45
      Re: регистрация пользователя (edart) 14/02/2006 - 19:35:47
      Re: регистрация пользователя (DNick) 14/02/2006 - 21:58:28
      Re: регистрация пользователя (edart) 17/02/2006 - 09:33:58
      Re: регистрация пользователя (DNick) 18/02/2006 - 11:35:23
      Re: регистрация пользователя (DNick) 18/02/2006 - 11:55:09
      Re: регистрация пользователя (edart) 20/02/2006 - 18:48:56

> Original message text:
> From: edart - 10/02/2006 - 11:42:08
> Subject:регистрация пользователя
> -----------------
> При регистрации пользователя через веб-форму посредством рнр-скрипта я делаю так:
> 1. получаю последний имеющий в таблице uid
> select max(uid) from users
> 2. Увеличиваю его на 1
> $new_uid = 'результат запроса' + 1
> 3. Регистрирую пользователя, т.е.
> insert into users set uid=$new_uid и блаблабла
>
> Разрабатывая скрипт на рнр для регистрации на фтп, понял, что вполне возможна ситуация одновременного получения одного и того же uid сразу несколькими пользователями. Что может привести к созданию одинакового uid'а. А это не есть хорошо.
>
> В приниципе сам uid уникален только внутри группы, т.е. uid+gid само по себе значение уникальное, хотя я не отслеживаю уникальность этой пары средствами сервера бд. Ключевое поле у меня userid фактически логин пользователя на доступ по фтп (использую proftpd with mysql на freebsd)
>
> Вероятно можно использовать auto_increment по полю uid. Но оно должно быть ключевое.
>
> Можно ли решить проблему без использования auto_increment. Например включением блокировки, однако не знаю как это правильно делать
>


From: edart - 14/02/2006 - 19:35:47
Subject:регистрация пользователя
-----------------
За алгоритм спасибо.
Довольно интересное решение с временной таблицей.
Правда я не понял, ты кажется используешь блокировки?
Тогда, что мешает анализировать блокировку без создания временной таблицы?
В смысле если второй пользователь (ах какая не удача :-)) нарвался на блокировку первого, ну и соотвественно сам пытается выставить блокировку, то вероятно произойдет некая ошибка, которую можно достать - как пока не знаю, но вероятно сервер возвращает какую-то определенную ошибку в этом случае. если второй пользователь натыкается на блокировку начать выполнение регистрации (вернее вставки в нужные таблицы) еще раз, до тех пор пока ошибка блокировки не будет снята?

Правда я решил задачу много проще. Дело в том, что мне требуется регистрировать только пользователей список, которых ранее внесен в БД, потому я просто решил назначать им uid. Таким образом снимаю проблему.
Другая возможная (правда сильно надуманная проблема) это если два пользователя ОДНОВРЕМЕННО ввели два одинаковых логина и пытаюся зарегистрироваться. Но здесь проще - поскольку логин поле уникальное - возникнит исключение вставки (поскольку все равно кто-то из них будет первее), а его уже можно обработать и вернув пользователя на форму регистрации с сообщением, что мол ник занят.

Но твое решение интересное - хотелось бы посмотреть на его реализацию - если ты пишешь не на рнр, то вероятно на каком-то другом языке, а этот язык вряд ли сильно отличается в принципе


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
26601



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |