PHP E-Postbekreftelse

Sammendrag: I denne opplæringen lærer du hvordan du verifiserer den nye kontoens e-postadresse sikkert ved hjelp av en aktiveringslenke.

Introduksjon TIL PHP-e-postbekreftelse for nye kontoer

i tidligere opplæringsprogrammer lærte du hvordan du oppretter et registreringsskjema som lar brukerne registrere seg for kontoer. Og du lærte også hvordan du bygger et påloggingsskjema som gjør det mulig for brukere å bruke brukernavn og passord for å logge på.

når brukere registrerer seg for nye kontoer, skriver de inn e-postadressene sine. Brukere kan imidlertid angi en e-postadresse fordi systemet ikke bekrefter e-post.

hvis du vil bekrefte brukernes e-postadresser, kan du sende en bekreftelses-e-post til disse e-postadressene og be brukerne om å åpne e-postene sine og klikke på en aktiveringskobling.

for å gjøre det, følger du følgende trinn når brukere registrerer kontoer:

  • Generer en unik aktiveringskode og angi en utløpstid, f. eks. en dag.
  • Lagre brukeroppføringen i databasen og merk brukerens status som inaktiv. Lagre også hash av aktiveringskoden & utløpstid.
  • Send en e-post med aktiveringslenken til brukerens e-postadresse. Aktiveringslenken vil inneholde e-postadressen og aktiveringskoden, f. eks., https://app.com/activate.php?email=email&activation_code=abcd
  • Informer brukeren om å aktivere kontoen via e-post.

Hashing aktiveringskoden sikrer at bare brukeren som eier e-postadressen kan aktivere kontoen, ikke noen andre, selv admin, som kan få tilgang til databasen.

hvis brukere ikke har aktivert konto, vil de ikke kunne logge inn.

når brukere klikker på aktiveringslenken i e-posten, må du utføre følgende trinn:

  • Rense og validere e-post og aktiveringskode.
  • Finn den inaktive brukeren med e-postadressen. Hvis det ikke finnes noen brukeroppføring, omdirigerer du til registreringsskjemaet.
  • hvis det finnes en brukeroppføring og aktiveringskoden er utløpt, sletter du brukeroppføringen fra databasen og omdirigerer til registreringsskjemaet.
  • ellers samsvarer aktiveringskoden med hash av aktiveringskoden som er lagret i databasen. Hvis de samsvarer, merker du brukeroppføringen som aktiv og omdirigerer til påloggingssiden.

Opprette tabellen brukere

først slipper du tabellen users fra databasen auth :

Code language: SQL (Structured Query Language) (sql)

for det andre oppretter du users – tabellen med de nye kolonnene active, activation_code, activation_at, activation_expiry:

Code language: SQL (Structured Query Language) (sql)

følgende forklarer betydningen av de nye kolonnene.

verdien for kolonnen active er som standard 0. Dette betyr at brukere som registrerer seg for kontoer, men ikke har bekreftet e-postadressene, vil være inaktive som standard.

kolonnen activation_code lagrer hash for aktiveringskoden. Lengden skal være tilstrekkelig til å lagre strengen som returneres av password_hash() – funksjonen.

det er viktig å legge merke til at hash vil bli avkortet hvis kolonnen activation_code ikke har en lang nok størrelse. Det vil føre til at funksjonen password_verify() ikke samsvarer med aktiveringskoden med hash.

kolonnen activation_expiry lagrer utløpstiden for å bruke aktiveringskoden før utløpet. Utløpstiden sikrer at aktiveringskoden ikke kan brukes hvis e-postadressen er kompromittert etter utløpstiden.

kolonnen activated_at lagrer dato og klokkeslett når brukerne aktiverer kontoene sine.

Prosjektstruktur

la oss se gjennom gjeldende prosjektstruktur før du legger til e-postbekreftelsesfunksjonene:

Code language: PHP (php)

Endre funksjonene i auth.php-fil

følgende legger til aktiveringskoden og utløpsparameteren i register_user() – funksjonen. Utløpstiden er som standard en dag (1 * 24 * 60 * 60).

Code language: PHP (php)

funksjonen register_user() bruker funksjonen password_hash() til å hashe aktiveringskoden.

funksjonen find_user_by_username() inkluderer kolonnen active i resultatet:

Code language: PHP (php)

følgende definerer en ny funksjon is_user_active() som returnerer true hvis en bruker er aktiv:

Code language: PHP (php)

funksjonen login() skal bare tillate aktive brukere å logge på:

Code language: PHP (php)

Definer funksjoner som omhandler e-postbekreftelse

vi legger til funksjonene som omhandler e-postbekreftelse i auth.php – filen.

opprett først en ny fil app.php i mappen config og definer følgende konstanter:

Code language: PHP (php)

vi vil bruke disse konstantene for å sende aktiverings e-post til brukere. Hvis du vil bruke disse konstantene, må du inkludere filen app.php i filen bootstrap.php :

Code language: PHP (php)

for Det andre, definer en funksjon som genererer en unikt tilfeldig aktiveringskode:

Code language: PHP (php)

For Det tredje, definer en funksjon som sender en e-postbekreftelse med en aktiveringslenke.

Code language: PHP (php)

Anta at APPENS URL er http://localhost/auth, aktiveringsadressen vil se slik ut:

Code language: PHP (php)

funksjonen send_activation_email() bruker den innebygde mail() funksjonen for å sende e-post.

Fjerde, definer en funksjon som sletter en bruker etter id og status. Som standard sletter den en inaktiv bruker etter id.

Code language: PHP (php)

For Det Femte, definer en funksjon som finner en ubekreftet bruker med en e-post og aktiveringskode. Hvis aktiveringskoden er utløpt, sletter funksjonen også brukeroppføringen ved å ringe delete_user_by_id() – funksjonen.

Code language: PHP (php)

Sjette, definer en ny activate_user() funksjon som aktiverer en bruker med en id:

Code language: PHP (php)

Endre registeret.php-side

src/register.php må inkludere logikken for å håndtere e-postbekreftelseslogikken.

Code language: PHP (php)

Slik fungerer det.

generer først en aktiveringskode:

Code language: PHP (php)

for Det andre, registrer brukeren med aktiveringskoden:

Code language: PHP (php)

Tredje, send en e-post til brukerens e – postadresse ved å ringe send_activation_email() – funksjonen:

Code language: PHP (php)

til slutt omdirigerer brukeren til påloggingssiden og viser en flashmelding som ber brukeren om å aktivere kontoen via e-post:

Code language: PHP (php)

Opprett aktiveringen.php side

for å tillate brukere å aktivere sine kontoer etter registrering, kan du opprette en ny activate.php side i mappen public og bruke følgende side:

Code language: PHP (php)

hvordan aktivere.php fungerer.

først må du rense og validere e-posten og aktiveringskoden:

Code language: PHP (php)

For Det andre, finn den ubekreftede brukeren basert på e-post og bekreftelseskode hvis det ikke er noen valideringsfeil. find_unverified_user() vil også slette den ubekreftede brukeren hvis utløpstiden er utløpt.

Code language: PHP (php)

tredje, aktiver brukeren og omdirigere til påloggingen.php-side:

Code language: PHP (php)

til slutt, omdirigere til registration.php hvis det er en feil:

Code language: PHP (php)

I denne opplæringen har du lært hvordan du implementerer e-postbekreftelse for brukerkontoer I PHP.

Leave a Reply