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
Форумы портала PHP.SU :: Версия для печати :: Рандомная генерация пароля
Форумы портала PHP.SU » » Вопросы новичков » Рандомная генерация пароля

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

1. PATCH - 11 Августа, 2011 - 01:00:56 - перейти к сообщению
как сделать что бы пароль генерировался из букв английского языка и цифр, помимо этого что бы он генерировался рандомно к примеру от 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 случайных символа? т.е что бы из этой кучи допустим получилось слово 'дача' (не обязательно слово просто так получилось)
2. illy - 11 Августа, 2011 - 10:07:03 - перейти к сообщению
Лови код Ха-ха
В нём выводится минимум 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. ?>
3. OrmaJever - 11 Августа, 2011 - 11:53:10 - перейти к сообщению
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);
4. PATCH - 11 Августа, 2011 - 13:18:50 - перейти к сообщению
тут везде идут переборы паролей от 1 до max количества. а нету вариантов скажем генерация пароля сразу без переборов от 1 до мах .
5. EuGen - 11 Августа, 2011 - 14:02:24 - перейти к сообщению
Можно, например, так:
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)));
6. PATCH - 11 Августа, 2011 - 19:31:26 - перейти к сообщению
о то что нужно спс
7. DeepVarvar - 11 Августа, 2011 - 19:36:28 - перейти к сообщению
PATCH пишет:
о то что нужно спс

А какая разница то?
На доли секунды быстрее.
И то не факт...
8. PATCH - 11 Августа, 2011 - 19:41:25 - перейти к сообщению
DeepVarvar пишет:
А какая разница то?
На доли секунды быстрее.
И то не факт...

ну вообщет в его коде идет генерация одного кода (а не всех 16 если максимальная длина кода = 16) + там идет случайна генерация длины кода. то что нужно кароче))
9. DeepVarvar - 11 Августа, 2011 - 19:47:56 - перейти к сообщению
EuGen пишет:
array_slice($rgLetters, 0, mt_rand($minLength, $maxLength))
всегда с первого элемента?
(Добавление)
Ах, да.... перемешиваем Закатив глазки
10. PATCH - 11 Августа, 2011 - 20:46:51 - перейти к сообщению
еще вопросик, я решил расширить свою функцию сделал конфиг настроек и там указаны 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? пробовал

PHP:
скопировать код в буфер обмена


но если 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 массив;
11. PATCH - 11 Августа, 2011 - 23:28:30 - перейти к сообщению
все уже ненадо решил проблему))

 

Powered by ExBB FM 1.0 RC1