Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Рандомная генерация пароля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
PATCH
Отправлено: 11 Августа, 2011 - 01:00:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




как сделать что бы пароль генерировался из букв английского языка и цифр, помимо этого что бы он генерировался рандомно к примеру от 4 до 15 длиной строки . т.е пароль может быть как и длиной строки 6 так и 9 в указаном диапозоне.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <form method="post">
  2. <input type="text" name="min_number" value=""> //минимальное значение генерации пароля
  3. <input type="text" name="max_number" value="">//максимальное значение генерации пароля
  4. <input type="submit" value="Генерировать">
  5. <form><br><br>
  6. <?php
  7.    $arr = array('a','b','c','d','e','f',
  8.                 'g','h','i','j','k','l',
  9.                 'm','n','o','p','r','s',
  10.                 't','u','v','x','y','z',
  11.                 'A','B','C','D','E','F',
  12.                 'G','H','I','J','K','L',
  13.                 'M','N','O','P','R','S',
  14.                 'T','U','V','X','Y','Z',
  15.                 '1','2','3','4','5','6',
  16.                 '7','8','9','0');
  17.  
  18.    $pass = "";
  19.    $index = mt_rand(вот как тут я хз написать);
  20.    $pass .= $arr[$index];
  21.    
  22.    echo $pass;
  23. ?>

ccылка на чтение данной функции не надо ибо она генерирует числа и там тока указывать 2 параметра (мин,мах) но как тогда сгенерировать случайный пароль со случайной длиной?


или

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form method="post">
  3. <input type="text" name="min" value="">
  4. <input type="text" name="max" value="">
  5. <input type="submit" value="Генерировать">
  6. <form><br><br>
  7.  
  8. <?php
  9. $min= $_POST['min'];
  10. $max= $_POST['max'];
  11.  
  12. $eng = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
  13. $number = "1234567890";
  14. $rus = "йцукенгшщзхъфывёапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ";
  15. $full_text = $eng.$number.$rus;
  16. $text = strlen($full_text);
  17. ?>




есть переменая $full_text которая в себе содержит все буквы и цифры английской и русской раскладки. как нам из этой строки выдернут 4 случайных символа? т.е что бы из этой кучи допустим получилось слово 'дача' (не обязательно слово просто так получилось)

(Отредактировано автором: 11 Августа, 2011 - 04:14:17)

 
 Top
illy
Отправлено: 11 Августа, 2011 - 10:07:03
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




Лови код Ха-ха
В нём выводится минимум 1 английская буква, 1 цифра, 1 русская буква.
PHP:
скопировать код в буфер обмена
  1.  
  2. <form method=post>
  3. min <select name=min>
  4. <option value=3>3</option>
  5. <option value=4>4</option>
  6. <option value=5>5</option>
  7. <option value=6>6</option>
  8. <option value=7>7</option>
  9. <option value=8>8</option>
  10. <option value=9>9</option>
  11. </select>
  12. max <select name=max>
  13. <option value=3>3</option>
  14. <option value=4>4</option>
  15. <option value=5>5</option>
  16. <option value=6>6</option>
  17. <option value=7>7</option>
  18. <option value=8>8</option>
  19. <option value=9>9</option>
  20. </select>
  21. <input type=submit value='Генерировать'>
  22. <form>
  23. <br>
  24. <br>
  25. <?PHP
  26. if(!isset($_POST['min']) or !isset($_POST['max'])){exit;}
  27. $min=$_POST['min'];
  28. $max=$_POST['max'];
  29. $am=mt_rand($min,$max);
  30. $ea=mt_rand(1,$am-$min);
  31. $na=mt_rand(1,$am-$ea-1);
  32. $ra=$am-$ea-$na;
  33. $eng='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
  34. $num='1234567890';
  35. $rus='йцукенгшщзхъфывёапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';
  36. $p=array();
  37. $ee=strlen($eng)-1;
  38. $en=strlen($num)-1;
  39. $er=strlen($rus)-1;
  40. echo $am;
  41. for($n=0;$n!=$ea;$n++){
  42. $m=substr($eng,mt_rand(0,$ee),1);
  43. $p[]=$m;
  44. }
  45. for($n=0;$n!=$na;$n++){
  46. $m=substr($num,mt_rand(0,$en),1);
  47. $p[]=$m;
  48. }
  49. for($n=0;$n!=$ra;$n++){
  50. $m=substr($rus,mt_rand(0,$er),1);
  51. $p[]=$m;
  52. }
  53. shuffle($p);
  54. $p=implode('',$p);
  55. echo $p;
  56. ?>
  57.  

(Добавление)
А этот код делает пароль из твоей кучи Ха-ха
PHP:
скопировать код в буфер обмена
  1. <form method=post>
  2. min <select name=min>
  3. <option value=3>3</option>
  4. <option value=4>4</option>
  5. <option value=5>5</option>
  6. <option value=6>6</option>
  7. <option value=7>7</option>
  8. <option value=8>8</option>
  9. <option value=9>9</option>
  10. </select>
  11. max <select name=max>
  12. <option value=3>3</option>
  13. <option value=4>4</option>
  14. <option value=5>5</option>
  15. <option value=6>6</option>
  16. <option value=7>7</option>
  17. <option value=8>8</option>
  18. <option value=9>9</option>
  19. </select>
  20. <input type=submit value=Генерировать>
  21. <form>
  22. <br>
  23. <br>
  24. <?PHP
  25. if(!isset($_POST['min']) or !isset($_POST['max'])){exit;}
  26. $min=$_POST['min'];
  27. $max=$_POST['max'];
  28. $am=mt_rand($min,$max);
  29. $eng='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
  30. $num='1234567890';
  31. $rus='йцукенгшщзхъфывёапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';
  32. $full_text=$eng.$num.$rus;
  33. $e=strlen($full_text)-1;
  34. $p='';
  35. for($n=0;$n!=$am;$n++){
  36. $p.=substr($full_text,mt_rand(0,$e),1);
  37. }
  38. echo $p;
  39. ?>

(Отредактировано автором: 11 Августа, 2011 - 10:54:40)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
OrmaJever Модератор
Отправлено: 11 Августа, 2011 - 11:53:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. function pass($number) {
  2.    $arr = array('a','b','c','d','e','f',
  3.                  'g','h','i','j','k','l',
  4.                  'm','n','o','p','r','s',
  5.                  't','u','v','x','y','z',
  6.                  'A','B','C','D','E','F',
  7.                  'G','H','I','J','K','L',
  8.                  'M','N','O','P','R','S',
  9.                  'T','U','V','X','Y','Z',
  10.                  '1','2','3','4','5','6',
  11.                  '7','8','9','0');
  12.     $pass = "";
  13.     for($i = 0; $i < $number; $i++)
  14.     {
  15.       $index = mt_rand(0, sizeof($arr) - 1);
  16.       $pass .= $arr[$index];
  17.     };
  18.     return $pass;
  19.   }
  20.  
  21. echo pass(8);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
PATCH
Отправлено: 11 Августа, 2011 - 13:18:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




тут везде идут переборы паролей от 1 до max количества. а нету вариантов скажем генерация пароля сразу без переборов от 1 до мах .
 
 Top
EuGen Администратор
Отправлено: 11 Августа, 2011 - 14:02:24
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Можно, например, так:
PHP:
скопировать код в буфер обмена
  1. $minLength=6;
  2. $maxLength=15;
  3. $rgLetters = array('a','b','c','d','e','f',
  4.                 'g','h','i','j','k','l',
  5.                 'm','n','o','p','r','s',
  6.                 't','u','v','x','y','z',
  7.                 'A','B','C','D','E','F',
  8.                 'G','H','I','J','K','L',
  9.                 'M','N','O','P','R','S',
  10.                 'T','U','V','X','Y','Z',
  11.                 '1','2','3','4','5','6',
  12.                 '7','8','9','0');
  13. shuffle($rgLetters);
  14.  
  15. $password = join('',array_slice($rgLetters, 0, mt_rand($minLength, $maxLength)));


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
PATCH
Отправлено: 11 Августа, 2011 - 19:31:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




о то что нужно спс
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Августа, 2011 - 19:36:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PATCH пишет:
о то что нужно спс

А какая разница то?
На доли секунды быстрее.
И то не факт...
 
 Top
PATCH
Отправлено: 11 Августа, 2011 - 19:41:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




DeepVarvar пишет:
А какая разница то?
На доли секунды быстрее.
И то не факт...

ну вообщет в его коде идет генерация одного кода (а не всех 16 если максимальная длина кода = 16) + там идет случайна генерация длины кода. то что нужно кароче))
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Августа, 2011 - 19:47:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




EuGen пишет:
array_slice($rgLetters, 0, mt_rand($minLength, $maxLength))
всегда с первого элемента?
(Добавление)
Ах, да.... перемешиваем Закатив глазки
 
 Top
PATCH
Отправлено: 11 Августа, 2011 - 20:46:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




еще вопросик, я решил расширить свою функцию сделал конфиг настроек и там указаны 5 переменых с значение 0,1

и в сценарии идет логическое выражение if мол
PHP:
скопировать код в буфер обмена
  1.  
  2. if($number==1)
  3. {
  4.         $rgNumber = array('1','2','3','4','5','6','7','8','9','0');
  5. }


и так еще 4

как объединить эти 5 массивов в 1? пробовал



но если 1 массива нету то он выдает ошибку как вот их объединить

вот собствено код
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgNumber = '';
  3. $rgEng_lower='';
  4. $rgEng_high ='';
  5. $rgRus_lower='';
  6. $rgRus_high='';
  7.  
  8. if($number==1)
  9. {
  10.         $rgNumber = array('1','2','3','4','5','6','7','8','9','0');
  11. }
  12. if($eng_lower == 1)
  13. {
  14.         $rgEng_lower = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m');
  15. }
  16. if($eng_high == 1)
  17. {
  18.         $rgEng_high = array('Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M');
  19. }
  20. if($rus_lower ==1)
  21. {
  22. $rgRus_lower = array('ё','й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю');
  23. }
  24. if($rus_high ==1)
  25. {
  26. $rgRus_high = array('Ё','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
  27. }                      
  28. $rgLetters = тут надо объединитьв  1 массив;
 
 Top
PATCH
Отправлено: 11 Августа, 2011 - 23:28:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




все уже ненадо решил проблему))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB