Načrtovanje in razvoj spletnih aplikacij

17. vaja: Zamenjava gesla

Spoznali bomo
  • Kako s PHP-jem in MySQL-om izvedemo zamenjavo pozabljenega gesla

Sestavi spletni strani, ki jih prikazujeta spodnja okvirja in jih poimenuj:

  • 15-zamenjava-PWD.php
  • 15-zamenjava-PWD-obrazec.php

Strani naj bodo izdelane v HTML5 in s CSS.

Koda PHP in MySQL
  • v strani 15_zamenjavaPWD.php:
    • zaženi sejo in vključi datoteki za povezavo s podatkovno zbirko ter pomožne funkcije
    • iz povezave preberi podatke uid, t in id
    • preveri, ali so poslani podatki veljavni:
      • če podatki niso veljavni, izpiše sporočilo Neveljavna ali potekla povezava za zamenjavo gesla.
    • v podatkovni zbirki v tabeli password_reset_request poišče zahtevek za zamenjavo gesla glede na uporabnika, žeton in identifikator zahtevka
    • preveri, ali zahtevek obstaja in ali še ni potekel:
      • če zahtevek ne obstaja, izpiše sporočilo Neveljavna ali potekla povezava za zamenjavo gesla.
      • če je zahtevek potekel, izpiše sporočilo Povezava za zamenjavo gesla je potekla.
      • če je zahtevek veljaven, shrani potrebne podatke v sejo in uporabnika preusmeri na stran 15_zamenjavaPWD-obrazec.php
  • v strani 15_zamenjavaPWD-obrazec.php:
    • preveri, ali v seji obstajajo podatki o veljavnem zahtevku za zamenjavo gesla; če ne obstajajo, uporabnika preusmeri na prijavno stran 15_login.php
    • ob oddaji obrazca preveri veljavnost CSRF žetona:
      • če zahtevek ni veljaven, uporabnika preusmeri nazaj na stran 15_zamenjavaPWD-obrazec.php in izpiše sporočilo Zahtevek ni veljaven. Poskusi znova.
    • prebere novo geslo in ponovitev novega gesla
    • preveri pravilnost vnosa:
      • če eno od polj ni izpolnjeno, izpiše sporočilo Polji za zamenjavo gesla morata biti izpolnjeni.
      • če gesli nista enaki, izpiše sporočilo Vpisani gesli morata biti enaki.
      • če je novo geslo prekratko, izpiše sporočilo Novo geslo mora imeti vsaj 8 znakov.
    • ponovno preveri, ali zahtevek za zamenjavo gesla v tabeli password_reset_request še obstaja in ali še ni potekel
    • če je zahtevek veljaven:
      • novo geslo pretvori v varen hash s funkcijo password_hash()
      • v tabeli users posodobi uporabnikovo geslo
      • uporabljen zahtevek izbriše iz tabele password_reset_request
      • iz seje odstrani pomožne podatke za zamenjavo gesla
      • shrani obvestilo Vaše geslo je bilo uspešno spremenjeno.
      • uporabnika preusmeri na prijavno stran 15_login.php
    • če pride do napake pri delu s podatkovno zbirko, izpiše sporočilo Pri spremembi gesla je prišlo do napake.

Spletna aplikacija Knjige: stran 15_zamenjavaPWD-obrazec.php

15_zamenjavaPWD-obrazec.php

Spletna aplikacija Knjige: stran 15_zamenjavaPWD.php

15_zamenjavaPWD.php