PHP Email Verification
Summary: in this tutorial, you ‘ll learn how to verification the new account’ s email address securely using an activating link.
Johdatus PHP: n sähköpostivahvistukseen uusille tileille
aiemmissa tutoriaaleissa opittiin luomaan rekisteröintilomake, jonka avulla käyttäjät voivat rekisteröityä tileille. Opit myös rakentamaan kirjautumislomakkeen, jonka avulla käyttäjät voivat käyttää käyttäjätunnusta ja salasanaa kirjautumiseen.
kun käyttäjät rekisteröityvät uusille tileille, he syöttävät sähköpostiosoitteensa. Käyttäjät voivat kuitenkin syöttää minkä tahansa sähköpostiosoitteen, koska järjestelmä ei vahvista sähköpostia.
voit tarkistaa käyttäjien sähköpostiosoitteet lähettämällä vahvistussähköpostin näihin sähköpostiosoitteisiin ja pyytämällä käyttäjiä avaamaan sähköpostinsa ja napsauttamalla aktivointilinkkiä.
voit tehdä sen noudattamalla seuraavia ohjeita, kun käyttäjät rekisteröivät tilejä:
- luo yksilöllinen aktivointikoodi ja aseta vanhenemisaika, esim. yksi päivä.
- tallenna käyttäjän tietue tietokantaan ja merkitse käyttäjän tila passiiviseksi. Tallenna myös aktivointikoodin hash & vanhenemisaika.
- lähetä aktivointilinkin sisältävä sähköposti käyttäjän sähköpostiosoitteeseen. Aktivointilinkki sisältää sähköpostiosoitteen ja aktivointikoodin, esim.,
https://app.com/activate.php?email=email&activation_code=abcd
- Ilmoita käyttäjälle tilin aktivoimisesta sähköpostitse.
aktivointikoodin tiivistäminen varmistaa, että tilin voi aktivoida vain käyttäjä, joka omistaa sähköpostiosoitteen, ei kukaan muu, edes ylläpitäjä, joka pääsee tietokantaan.
jos käyttäjät eivät ole aktivoineet tiliä, he eivät voi kirjautua sisään.
kun käyttäjät klikkaavat sähköpostissa olevaa aktivointilinkkiä, sinun on suoritettava seuraavat vaiheet:
- Puhdista ja vahvista sähköposti ja aktivointikoodi.
- Etsi epäaktiivinen käyttäjä sähköpostiosoitteella. Jos käyttäjätietoa ei ole, ohjaa Rekisteröitymislomakkeeseen.
- jos käyttäjätietoja on olemassa ja aktivointikoodi on vanhentunut, poista käyttäjätiedot tietokannasta ja ohjaa uudelleen rekisteröintilomakkeeseen.
- muussa tapauksessa täsmää aktivointikoodi tietokantaan tallennetun aktivointikoodin hash-koodiin. Jos ne täsmäävät, merkitse käyttäjätiedot aktiivisiksi ja ohjaa kirjautumissivulle.
luo käyttäjätaulukko
ensin, pudota users
taulukko auth
tietokannasta:
Code language: SQL (Structured Query Language) (sql)
toiseksi, luo users
– taulukko uusilla sarakkeilla active
, activation_code
, activation_at
, activation_expiry
:
Code language: SQL (Structured Query Language) (sql)
seuraavassa selitetään uusien sarakkeiden merkitys.
active
sarakkeen oletusarvo on 0. Tämä tarkoittaa, että käyttäjät, jotka rekisteröityvät tileille, mutta eivät ole vahvistaneet sähköpostiosoitteitaan, eivät ole oletusarvoisesti aktiivisia.
activation_code
– sarakkeeseen tallennetaan aktivointikoodin hash. Sen pituuden tulisi riittää password_hash()
funktion palauttaman merkkijonon tallentamiseen.
on tärkeää huomata, että hash typistyy, jos activation_code
– palstalla ei ole tarpeeksi pitkää kokoa. Se aiheuttaa sen, että password_verify()
– funktio ei vastaa aktivointikoodia hash: iin.
activation_expiry
sarake tallentaa viimeisen käyttöajan aktivointikoodin käyttämiseksi ennen voimassaolon päättymistä. Vanhenemisaika varmistaa, että aktivointikoodia ei voi käyttää, jos sähköpostiosoite vaarantuu vanhenemisajan jälkeen.
activated_at
sarakkeeseen merkitään päivämäärä ja kellonaika, jolloin käyttäjät aktivoivat tilinsä.
projektirakenne
tarkistetaan nykyinen projektirakenne ennen sähköpostin vahvistustoimintojen lisäämistä:
Code language: PHP (php)
muokkaa toimintoja auth.php-tiedosto
seuraava Lisää aktivointikoodin ja päättymisparametrin register_user()
– funktioon. Oletuksena vanhenemisaika on yksi päivä (1 * 24 * 60 * 60
).
Code language: PHP (php)
register_user()
funktio käyttää password_hash()
– funktiota aktivointikoodin hajauttamiseen.
find_user_by_username()
funktio sisältää active
sarakkeen tuloksessa:
Code language: PHP (php)
seuraavassa määritellään Uusi funktio is_user_active()
, joka palauttaa true jos käyttäjä on aktiivinen:
Code language: PHP (php)
login()
– toiminnon avulla vain aktiiviset käyttäjät voivat kirjautua sisään:
Code language: PHP (php)
määritä toiminnot, jotka käsittelevät sähköpostin vahvistusta
lisäämme sähköpostin vahvistusta käsittelevät toiminnot auth.php
– tiedostoon.
luo ensin uusi tiedosto app.php
config
– kansioon ja määrittele seuraavat vakiot:
Code language: PHP (php)
käytämme näitä vakioita aktivointisähköpostien lähettämiseen käyttäjille. Jotta voit käyttää näitä vakioita, sinun on sisällytettävä app.php
– tiedosto bootstrap.php
– tiedostoon:
Code language: PHP (php)
toiseksi, määrittele funktio, joka luo ainutlaatuisen satunnaisen aktivointikoodin:
Code language: PHP (php)
kolmanneksi määrittele toiminto, joka lähettää sähköpostin vahvistuksen aktivointilinkin kanssa.
Code language: PHP (php)
Oletetaan, että sovelluksen URL on http://localhost/auth
, aktivoiva URL näyttää tältä:
Code language: PHP (php)
send_activation_email()
funktio käyttää sisäänrakennettua mail()
– funktiota sähköpostien lähettämiseen.
neljäs, määrittele funktio, joka poistaa käyttäjän id: N ja statuksen perusteella. Oletusarvoisesti se poistaa passiivisen käyttäjän id: llä.
Code language: PHP (php)
viides, määrittele funktio, joka löytää vahvistamattoman käyttäjän sähköpostin ja aktivointikoodin avulla. Jos aktivointikoodi on vanhentunut, toiminto poistaa myös käyttäjätietueen kutsumalla delete_user_by_id()
funktiota.
Code language: PHP (php)
kuudes, Määritä uusi activate_user()
funktio, joka aktivoi käyttäjän id: llä:
Code language: PHP (php)
muokkaa rekisteriä.php-sivu
src/register.php
tarvitsee logiikan sähköpostin vahvistuslogiikan käsittelyyn.
Code language: PHP (php)
miten se toimii.
luo ensin aktivointikoodi:
Code language: PHP (php)
toiseksi rekisteröi käyttäjä aktivointikoodilla:
Code language: PHP (php)
kolmanneksi lähetä sähköpostia käyttäjän sähköpostiosoitteeseen soittamalla funktioon send_activation_email()
:
Code language: PHP (php)
lopuksi ohjaa käyttäjä kirjautumissivulle ja näytä flash-viesti, joka pyytää käyttäjää aktivoimaan tilin sähköpostitse:
Code language: PHP (php)
luo aktivointi.php-sivu
jotta käyttäjät voivat aktivoida tilinsä rekisteröitymisen jälkeen, voit luoda uuden activate.php
sivun public
kansioon ja käyttää seuraavaa sivua:
Code language: PHP (php)
miten aktivoit.php toimii.
puhdista ja vahvista ensin sähköposti ja aktivointikoodi:
Code language: PHP (php)
toiseksi, etsi vahvistamaton käyttäjä sähköpostin ja vahvistuskoodin perusteella, jos vahvistusvirheitä ei ole. find_unverified_user()
poistaa myös vahvistamattoman käyttäjän, jos vanhenemisaika on päättynyt.
Code language: PHP (php)
kolmas, aktivoi käyttäjä ja ohjaa kirjautumiseen.php sivu:
Code language: PHP (php)
ohjaa lopuksi registration.php
jos on virhe:
Code language: PHP (php)
tässä opetusohjelmassa, olet oppinut toteuttamaan sähköpostin todentaminen käyttäjätilien PHP.
Leave a Reply