Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 12:55   #1
pruf
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 27
По умолчанию Генератор паролей

Есть функция для генерации паролей

вот она

PHP код:
function gen($length 7){
$s 'abcdefghijklmnopqrstuwvxyz0123456789';
for(
$i=0$i<$length$i++)
        {       
$j rand(0strlen($s)-1);
                
$log .= $s{$j};
        }        
return 
$log;

Нужно что бы генирировались пароли которые содержат как буквы так и цифры.

Проблема: Иногда цифры отсутствуют.


Цитата:
Цитата:
dqtjhob
a8sguct
va6qnp4
chlr3du
g9adan0
1rybyp1
9w8200t
tkgkdf0
f80d8v3
kxi4mh2
pruf вне форума Ответить с цитированием
Старый 12.02.2012, 12:59   #2
pruf
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 27
По умолчанию

7 символов один из 10 неправильно сгенерирован
4 символа 2 из 10 без цифры
pruf вне форума Ответить с цитированием
Старый 12.02.2012, 13:20   #3
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

генерируем, проверяем регуляром есть ли цифры, если нет - генерируем заново
frommars вне форума Ответить с цитированием
Старый 12.02.2012, 13:32   #4
pruf
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 27
По умолчанию

а сразу нельзя генерировать как надо?

без проверки

может у кого есть умный генератор?
pruf вне форума Ответить с цитированием
Старый 12.02.2012, 13:42   #5
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Цитата:
Сообщение от pruf Посмотреть сообщение
а сразу нельзя генерировать как надо?

без проверки

может у кого есть умный генератор?
по моему мнению - без проверки ни как
а почему такая неприязнь к проверке? это же всего лишь одна функция...
frommars вне форума Ответить с цитированием
Старый 12.02.2012, 14:21   #6
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

хм, например так:
Код:
function passwordGen($pass_length){
	$pass="";
	for($i=0;$i<$pass_length;$i++){
		if(rand(0,1)==1){
			$pass.=chr(rand(97,122));
		}else{
			$pass.=chr(rand(48,57));
		}
	}
	if(preg_match_all("/[0-9]{".$pass_length."}/",$pass,$matches)){
		passwordGen($pass_length);
	}
	if(preg_match_all("/[a-z]{".$pass_length."}/",$pass,$matches)){
		passwordGen($pass_length);
	}
	return $pass;
}
echo passwordGen(7);
CodeNOT вне форума Ответить с цитированием
Старый 12.02.2012, 14:45   #7
pruf
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 27
По умолчанию

CodeNOT

Зачет!

Генерирует без брака, даже короткие в 4 символа. БЕЗ проверки регуляркой.

Что значат эти строки
Цитата:
$pass.=chr(rand(97,122));
?

Последний раз редактировалось pruf; 12.02.2012 в 14:47.
pruf вне форума Ответить с цитированием
Старый 12.02.2012, 15:20   #8
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

функция chr перевод код символа в символ, в диапазоне от 97 до 122 находятся латинские символы в нижнем регистре, а с rand думаю, что понятно
CodeNOT вне форума Ответить с цитированием
Старый 12.02.2012, 16:30   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pruf Посмотреть сообщение
Генерирует без брака, даже короткие в 4 символа. БЕЗ проверки регуляркой.
Ага - именно без проверки регуляркой....
Цитата:
if(preg_match_all("/[0-9]{".$pass_length."}/",$pass,$matches)){
passwordGen($pass_length);
}
if(preg_match_all("/[a-z]{".$pass_length."}/",$pass,$matches)){
passwordGen($pass_length);
}
Регулярки - не, не используем...
Andkorol вне форума Ответить с цитированием
Старый 14.02.2012, 15:43   #10
pruf
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 27
По умолчанию

Andkorol, Я эти строки вырезал из скрипта

Код:
if(preg_match_all("/[0-9]{".$pass_length."}/",$pass,$matches)){
passwordGen($pass_length);
}
if(preg_match_all("/[a-z]{".$pass_length."}/",$pass,$matches)){
passwordGen($pass_length);
}
Без регулярки значит БЕЗ!
Смайлы оставь себе, не втему.
pruf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
генератор паролей VAN32 C++ Builder 2 11.03.2010 19:36
Генератор паролей Eclipse09 Общие вопросы C/C++ 2 09.11.2009 13:59
Генератор паролей pali4ev Общие вопросы Delphi 6 24.12.2008 18:54