Генерация уникального пароля в таблице MySQL

Vlad_R

Новичок
Генерация уникального пароля в таблице MySQL

Добрый день!

Прошу вас подсказать решение в следующей задаче.
В таблице MySQL имеется столбец с уникальным параметром "пароль". Данный пароль состоит из 5 знаков (латинские буквы и цифры, например: uyd93, 8973h и т.п.). Пароль генерируется рандомом для каждой новой записи в таблице.

Прошу вас посоветовать, каким образом лучше генерировать данный пароль (разумеется, чтобы он был уникальным в таблице)?
Самый простой вариант видится: генерируем рандомом и перед его добавление в таблицу проверяем уникальный ли он, уникален - добавляем, неуникален - генерируем новый, проверяем его и т.д. Но может существует более эффективное решение?
 

Фанат

oncle terrible
Команда форума
а логин ты на уникальность не проверяешь?
а при каждом заходе пользователя на сайт, пароль не проверяется?
или эти операции на 80 тыщах записей проходят незаметно, а проверить пароль один (ну два) раза при регистрации - уложит тебе нафиг всю базу?
 

Vlad_R

Новичок
Автор оригинала: *****
а логин ты на уникальность не проверяешь?
а при каждом заходе пользователя на сайт, пароль не проверяется?
или эти операции на 80 тыщах записей проходят незаметно, а проверить пароль один (ну два) раза при регистрации - уложит тебе нафиг всю базу?
Этот пароль используется не для идентификации пользователя. Ладно, спасибо, понял. Просто думал, может есть какая-нибудь подобная функция для работы с MySQL...

Да, а подскажи пожалуйста по самому коду генерации пароля. Сейчас используется:
PHP:
$letters=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9","0");
$length = 5;
for($i=1; $i<=$length; $i++)
{
  $pass.=$letters[rand(0,35)];
}
echo $pass;
Может сгенерировать случайный пароль из латинских букв и цифр можно проще?
 

Армян

Новичок
Для генерации пароля, substr(md5($login), 0, 5) - даст строку из 5 символов состоящую из латинских букв и цифр.
 

tashkentchi

Новичок
Нельзя пароль делать уникальным

-~{}~ 14.05.09 21:45:

И идентифицировать по нему юзеров
 

Фанат

oncle terrible
Команда форума
букв, правда, будет маловато - всего 6.
Может сгенерировать случайный пароль из латинских букв и цифр можно проще?
слушай, ну куда тебе еще проще? наверное, можно. но сам-то код настолько простой, что это будут украшения, но ничего принципиального.
Да, можно код вылизывать. Но почему именно этот? Любую строчку кода можно сделать оптимальнее. Но не нужно этом заниматься без реальной надобности.
Просто думал, может есть какая-нибудь подобная функция для работы с MySQL...
какая еще функция? как ты ее себе представляешь? функция есть, SELECT password FROM table WHERE password='password'
какую ты можешь придумать функцию, которая не сведется к этой? чтобы мускуль выдавал сам, по предсказуемому алгоритму? и потом называть это паролем?
Если у тебя пароль СЛУЧАЙНЫЙ, то как его еще проверить на уникальность, кроме сверки с существующими? Даже если была бы в мускуле встроенная функция, то что она делала бы вместо того же селекта?
 

Vlad_R

Новичок
Автор оригинала: tashkentchi
Нельзя пароль делать уникальным

-~{}~ 14.05.09 21:45:

И идентифицировать по нему юзеров
Автор оригинала: Vlad_R
Этот пароль используется не для идентификации пользователя.
Автор оригинала: *****
букв, правда, будет маловато - всего 6.

слушай, ну куда тебе еще проще? наверное, можно. но сам-то код настолько простой, что это будут украшения, но ничего принципиального.
Да, можно код вылизывать. Но почему именно этот? Любую строчку кода можно сделать оптимальнее. Но не нужно этом заниматься без реальной надобности.

какая еще функция? как ты ее себе представляешь? функция есть, SELECT password FROM table WHERE password='password'
какую ты можешь придумать функцию, которая не сведется к этой? чтобы мускуль выдавал сам, по предсказуемому алгоритму? и потом называть это паролем?
Если у тебя пароль СЛУЧАЙНЫЙ, то как его еще проверить на уникальность, кроме сверки с существующими? Даже если была бы в мускуле встроенная функция, то что она делала бы вместо того же селекта?
Мы друг друга поняли. :)

Еще раз всем спасибо за предложения. Значит будет делаться так как и первоначально задумал.
 

weregod

unserializer
> substr(md5($login), 0, 5)
зачёт

ТС, можно список логинов в студию и ссылочку на ресурс?
 

tashkentchi

Новичок
Вообще нельзя делать пароль уникальным. Уникальный пароль - ослабление безопасности. Тем более нельзя пользовать пароль, который вычисляется как функция от логина.
 

Vlad_R

Новичок
:)
Устал повторять, это не для идентификации пользователей на сайте!

Фактически это даже не пароль (как я выразился в начале), а просто уникальный идентификатор для каждой записи в таблице.
 

Фанат

oncle terrible
Команда форума
про индефекатор тема была буквально два дни назад. с решением.
 

Vlad_R

Новичок
Автор оригинала: *****
про индефекатор тема была буквально два дни назад. с решением.
Пролистал форум, что-то не нашел. Укажи пожалуйста ссылку на топик.
 
Сверху