Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja class generowanie hasla
Forum PHP.pl > Forum > Przedszkole
klasenton
Witam, zaczynam dopiero naukę w php. Rozpisuje sobie gotowe skrypt i staram sobie je tłumaczyć (zrozumieć). Mam problem z tym skryptem, który ma za zasadę generowanie hasła i wybierać losowe znaki.

  1. class haslo //nazywamy klasę "haslo"
  2. {
  3.  
  4. private $_haslo; //zmienna prywatna hasło
  5.  
  6.  
  7. function __construct($haslo) //konstruktor przypisuje wartość do właściwości hasło
  8. {
  9. $this->_haslo=$haslo; // Odwołujemy się do pola _haslo
  10. }
  11.  
  12. function pass() //funkcja tworzenia hasła
  13. {
  14. $password = trim($this->_haslo);
  15. if ( !preg_match('/^(?=[a-z0-9_#@%\*-]*?[A-Z])(?=[a-z0-9_#@%\*-]*?[a-z])(?=[a-z0-9_#@%\*-]*?[0-9])([a-z0-9_#@%\*-]{8,24})$/Diu', $password) )
  16. { // funkcja odpowiedzialna aby hasła zostały generowane // automatycznie i wybierano losowo znaki
  17. return false; // hasło nie zostało wygenerowane
  18. }
  19. else
  20. return true; // hasło zostało wygenerowane
  21. }


Proszę sprawdzić czy moje rozumowanie jest prawidłowe.? Zastanawia mnie również $/Diu? jakie ma zadanie w tym kodzie. Wasze 'CENNE' i "poprawki" uwagi przydadzą mi się do pojęcia podstaw.
vonski
Zaczynasz naukę PHP od programowania obiektowego i wyrażeń regularnych? smile.gif

Funkcja pass() nie generuje hasła. Przede wszystkim zauważ że funkcja zwraca tylo TRUE albo FALSE. Generalnie jej działanie opiera się na funkcji preg_match czyli funkcji sprawdzającej dany ciąg znaków pod kątem występowania pewnego wzorca. Wzorzec określony jest w jej pierwszym argumencie czyli: '/^(?=[a-z0-9_#@%\*-]*?[A-Z])...

Jeśli chcesz wygenerować losowy ciąg znaków, zainteresuj się bardziej takimi funkcjami jak sha1(), time() i rand() - poczytaj co każda z nich robi i zastanów się jak to można odnieść do generowania losowego ciągu znaków.

Cytat
Zastanawia mnie również $/Diu? jakie ma zadanie w tym kodzie.

Serio? Z całego tego ciągu: /^(?=[a-z0-9_#@%\*-]*?[A-Z])(?=[a-z0-9_#@%\*-]*?[a-z])(?=[a-z0-9_#@%\*-]*?[0-9])([a-z0-9_#@%\*-]{8,24})$/Diu - najbardziej Cie zastanawia co znaczy to $/Diu? Szacun smile.gif
Jeżeli faktycznie dopiero zaczynasz PHP to polecałbym jednak zacząć od podstaw. Wyrażenia regularne są ważne, ale raczej nie ma sensu od nich zaczynać "przygody" z PHP, bo szybko się może ona skończyć.
klasenton
dzięki;) zmienne i funkcje znam składnie. Czyli w funkcji pass gdy zwraca nam true zostaje nam przypisane hasło z określonego wzorca ,a jeśli false co nam zwróci funkcja?
vonski
Nie, nie. Tak jak mówiłem, funkcja pass() sprawdza tylko czy dane hasło pasuje do określonego wzorca i zwraca TRUE jeśli tak, FALSE jeśli nie. Nic poza tym. Nie ma tam nigdzie przypisania hasła. Przypisanie następuje w konstruktorze kilka linijek wyżej.
Wazniak96
Funkcja pass zwróci 0 (FALSE) w przypadku gdy hasło nie pasuje do wzorca, lub 1 (TRUE) gdy hasło pasuje do wzorca. I nic więcej Poczytaj o zmiennych logicznych wink.gif
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.