Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pętla "while" i generowanie hasła
Szymon80
post
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował Szymon80 10.01.2010, 02:07:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
pgrzelka
post
Post #2





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


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. }



Go to the top of the page
+Quote Post
Mephistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Próbowałeś w pętli deklarować funkcję. Tak się nie robi chcąc ją tylko wywołać.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.12.2025 - 09:37