Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla "while" i generowanie hasła
Forum PHP.pl > Forum > PHP
Szymon80
Witam.

Mam problem z pęta while i funkcją generującą losowe hasło. Funkcja generuje hasło a pętla ma zapisać do bd określoną ilość haseł.
Jak zrobić aby każde losowane i zapisywane hasło do bazy danych było inne ?


Funkcja wygląda tak :
  1. function generuj_haslo()
  2. {
  3. global $haslo;
  4.  
  5. $ile_liter = 8; // Ile liter ma mieć losowany ciąg
  6. $litery = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ23456789'; // Zestaw liter z jakich ma być zbudowany ciąg
  7.  
  8. $haslo = ''; // Ustawienie początkowe hasła
  9. $liter = strlen($litery); // thx to Wiktor
  10. for ($i=0;$i<$ile_liter;$i++)
  11. { $haslo .= substr($litery,(rand()%($liter)),1); };
  12. };
  13.  
  14. generuj_haslo();


Pętla while
  1. $i = 1;
  2. while ($i <= 5) {
  3. $dodkod = "insert into ".$prefix."kodypre (`kodpre`, `pobr`) values('$haslo', '0')";
  4. mysql_query($dodkod);
  5.  
  6.  
  7. $i++;
  8. }



Próbowałem władować funkcję do pętli ale wyskakiwał błąd.

Fatal error: Cannot redeclare generuj_haslo() (previously declared in /.../kody.php:46) in /.../kody.php on line 44

gdzie:
linia 46 = global $haslo;
linia 44 = function generuj_haslo()

  1. $i = 1;
  2. while ($i <= 5) {
  3.  
  4. function generuj_haslo()
  5. {
  6. global $haslo;
  7.  
  8. $ile_liter = 8; // Ile liter ma mieć losowany ciąg
  9. $litery = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ23456789'; // Zestaw liter z jakich ma być zbudowany ciąg
  10.  
  11. $haslo = ''; // Ustawienie początkowe hasła
  12. $liter = strlen($litery); // thx to Wiktor
  13. for ($i=0;$i<$ile_liter;$i++)
  14. { $haslo .= substr($litery,(rand()%($liter)),1); };
  15. };
  16.  
  17. generuj_haslo();
  18.  
  19. $dodkod = "insert into ".$prefix."kodypre (`kodpre`, `pobr`) values('$haslo', '0')";
  20. mysql_query($dodkod);
  21.  
  22.  
  23. $i++;
  24. }
pgrzelka
nie testowałem ale chyba zadziała

  1. function generuj_haslo()
  2. {
  3. global $haslo;
  4.  
  5. $ile_liter = 8; // Ile liter ma mieć losowany ciąg
  6. $litery = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ23456789'; // Zestaw liter z jakich ma być zbudowany ciąg
  7.  
  8. $haslo = ''; // Ustawienie początkowe hasła
  9. $liter = strlen($litery); // thx to Wiktor
  10. for ($i=0;$i<$ile_liter;$i++)
  11. { $haslo .= substr($litery,(rand()%($liter)),1); };
  12. return $haslo;
  13. };
  14.  
  15. $i = 1;
  16. while ($i <= 5) {
  17.  
  18. $haslo = generuj_haslo();
  19.  
  20. $dodkod = "insert into ".$prefix."kodypre (`kodpre`, `pobr`) values('$haslo', '0')";
  21. mysql_query($dodkod);
  22.  
  23.  
  24. $i++;
  25. }



Mephistofeles
Próbowałeś w pętli deklarować funkcję. Tak się nie robi chcąc ją tylko wywołać.
Fifi209
Pole z hasłem w bazie ustaw na unique potem sprawdzaj czy mysql_query z insertem zwróci true, jeżeli nie to od $x odejmij 1 i generuj jeszcze raz.
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.