Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Losowanie hasła
Forum PHP.pl > Forum > PHP
sebekzosw
Mam 2 funkcje:

  1. function Randword($dlugosc)
  2. {
  3. $zestaw_znakow = 'qwertyuiopasdfghjklzxcvbnm0123456789';
  4. $haslo = '';
  5. $dlugosc_zestawu = strlen($zestaw_znakow)-1;
  6.  
  7. for ( $i = 0; $i <= $dlugosc-1; $i++ )
  8. {
  9. $losowy = rand(0, $dlugosc_zestawu);
  10. $haslo .= $zestaw_znakow{$losowy};
  11. }
  12. return $haslo;
  13. }
  14.  
  15. echo Randword(15);


i

  1. function Randword($dlugosc)
  2. {
  3. $zestaw_znakow = 'qwertyuiopasdfghjklzxcvbnm1234567890';
  4.  
  5. return substr(str_shuffle($zestaw_znakow), 0, $dlugosc);
  6. }
  7.  
  8. echo Randword(15);


chciałbym poznać wasze zdanie, które rozwiązanie jest lepsze? Funkcje mają za zadanie losować litery służące do hasła. Chyba, że znacie lepsze rozwiązanie smile.gif Proszę podać zalety i wady tych sposobów smile.gif
Agape
Drugie jest krótsze i moim zdaniem prostrze. Pierwsze byc moze sie szybciej wykonuje ale to musial bys wykonac jakies testy porownawcze. Wiecej o tym raczej sie nie da powiedziec.
Skorzystaj z 2 sposobu, jest bardziej przejrzysty. Latwiej bedzie pozniej go przerabiac i zrozumiec
Fifi209
Wiesz wszystko zależy od potrzeb, od programisty, od jego toku myślenia.
Ja na poczekaniu napisałem coś takiego:
  1. <?php
  2.  
  3. function Randchar() {
  4. $y = false;
  5. $x = 0;
  6. while ($y == false) {
  7. $x = rand(48,122);
  8. if (($x >= 48 && $x <= 57) || ($x >= 65 && $x <= 90) || ($x >= 97 && $x <= 122)) {
  9. $y = true;
  10. }
  11. }
  12. return chr($x);
  13. }
  14.  
  15. function Randword($length) {
  16. $permutation = 61;
  17.  
  18. $pass = '';
  19.  
  20. if ($length > 61) {
  21. for ($i=0; $i < $length; $i++) {
  22. $pass .= Randchar();
  23. }
  24. }else{
  25. $temp = array();
  26. while (count($temp) < $length) {
  27. $x = Randchar();
  28. if (!in_array($x, $temp)) {
  29. $temp[] = $x;
  30. }
  31. }
  32. $pass = implode('', $temp);
  33. }
  34.  
  35. return $pass;
  36. }
  37.  
  38. echo Randword(60).'<br/>';
  39. echo Randword(80);
  40.  
  41.  
  42.  
  43. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.