når det gjelder å lage nettsteder for den virkelige verden, er det viktig å ha et enkelt registreringsskjema for. Internett er praktisk talt bygge i medlemskap nettsteder. Så som en del av min php medlem system tutorial serien, vil vi lage et enkelt registreringsskjema i php.
Ganske raskt og enkelt å skrive fra bunnen av, dette enkle registreringsskjemaet lar alle brukere registrere seg med bare et brukernavn, e-post og passord, men du kan enkelt legge til en e-post hvis du vil.
for en veldig enkel oversikt over kildekoden for vår php registreringsside er dette:
<?php // connect to the database // check for a user being logged in // process the registration form data ?> <html> display a header display the error message (if there is one) display the registration form </html>
hvordan Lage Et Enkelt Registreringsskjema i php
- Opprett databasen for registreringsskjemaet
- Lag det enkle registreringsskjemaet I HTML/CSS
- Koble Til MySQL-databasen ved hjelp av php
- Behandle registreringsskjemaet
- Legg til nye brukerkontoer i databasen
trinn 1: Opprett Databasen for registreringsskjemaet
ofte er Det Første trinnet med å lage et nettsted å opprette databasen. Og sikker, vil du sannsynligvis trenger å gjøre endringer i databasen senere. Men å sette opp databasen først, vil gi deg et flott utgangspunkt
vi vil lage en enkel database for å lagre all brukerens kontoinformasjon, inkludert brukernavn og passord. Gå videre og logg inn på phpmyadmin kontrollpanel på serveren din. (hvis du er ny på phpMyAdmin, sjekk ut min intro til phpMyAdmin artikkel)
Databasefelt for vårt php-medlemskapssystem
Hver database trenger et navn, og siden Jeg liker å holde livet enkelt, la oss ringe vår database «brukere».
MERK: jeg antar at du allerede har minst en grunnleggende forståelse av hvordan du bruker phpMyAdmin og hvordan MySQL-databaser fungerer. Hvis ikke, kan du lese opp på phpMyAdmin basics eller MySQL database operation her på HeyTuts.com. (disse linkene åpnes i nye faner)
Siden vi lager et enkelt registreringsskjema, trenger vi bare 7 felt i vår database. På denne måten får vi nok grunnleggende funksjonalitet med en gang. Men fortsatt kan legge til ekstra funksjoner som et passord reset skjema.
- id-dette kommer til å være en unik identifikator for hver bruker. Vi må sørge for at id-feltet er et heltall og satt til automatisk økning med en primærnøkkel. Dette er et must!!! Når fremgang til mer komplekse medlemssystemer, bruker brukerens konto-id gjør det super enkelt å koble databaseposter sammen.
- brukernavn – dette bør være selvforklarende. Jeg satte min til en 50 tegn varchar. Svært sjelden vil brukerens ønsker et brukernavn lengre enn 10-15 tegn, så 50 bør ta vare på det. Men dette vil også gi deg muligheten til å angi ønsket brukernavn lengde i php-koden.
- e – post-brukerens e-postadresse. Sett det det en 100 tegn varchar.
- passord – vi vil bruke noen grunnleggende kryptering for brukernes passord. Så en varchar på 50 tegn vil gjøre pent. Senere ser du at vi bruker md5 () – funksjonen til å lage en grunnleggende passordhash for enkel sikkerhet.
- date_created-dette vil lagre en tid () verdi av når brukeren opprettet sin konto.
- last_login – vi kan spore siste gang brukeren logget inn ved å oppdatere denne posten her. Igjen vil være fra tid () – funksjonen.
- status-spor kontoaktiveringsstatusen. Vi kan sjekke denne verdien for å se om brukeren har aktivert kontoen sin eller ikke, og basert på det la dem logge inn eller gi dem et varsel om å aktivere kontoen sin.
Trinn 2: Lag det enkle registreringsskjemaet I HTML/CSS
med databaseoppsettet kan vi opprette det faktiske registreringsskjemaet som brukeren vil bruke til å opprette sin konto. Som stort sett alle nettstedskjemaer, vil vi gjøre DET MED HTML og CSS.
Opprett et register.php-fil på webserveren din
jeg skal ringe registreringsskjemaet mitt.php, så fortsett og opprett denne filen på webserveren din. Jeg anbefaler å gjøre dette hele medlemssystemet på din localhost webserver MED XAMPP (ekstern lenke).
Lag en grunnleggende navigasjon header
overskriften for denne php medlem system opplæringen vil være en enkel en også. Med noen linker bare for noen super grunnleggende navigasjon. Nedenfor er det grunnleggende sideoppsettet for vårt register.php-fil.
<html> <head> <title>php member system | registration form</title> </head> <body> <h1>member system tutorial - register</h1> <a href="./index.php">Home</a> | <a href="./register.php">Register</a> | <a href="./login.php">Login</a> <hr /> <!-- error message code here --> <!-- registration form html code here --> </body></html>
Opprett selve registreringsskjemaet
Nå kan vi lage skjemaet som brukeren skal se og samhandle med. Hvis du tenker tilbake til vårt databaseoppsett, har vi bare 3 felt som brukeren har muligheten til å skrive inn: brukernavn, passord og e-postadresse. Ikke glem å legge til litt tekst for å vise etiketter for hvilke felt som kreves.
Ut av god praksis, liker jeg å legge til et ekstra passordfelt for brukeren å bekrefte passordet sitt. Og sørg for å fortelle brukerne passordstyrken som kreves.
for å få et sikkert passord for brukerens konto, vil vi kreve minst 5 tegn lang. Med minst en spesiell karakter av en av disse:!#$.,:;(). Dette vil ikke gi bruken det sikreste passordet, men det vil gi deg en ide om hvordan du tvinger sterkere passord til senere.
<form action="./register.php" class="form" method="POST"><h1>create a new account</h1><div class=""><?php// check to see if the user successfully created an accountif (isset($success) && $success == true){echo '<p color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<p>';}// check to see if the error message is set, if so display itelse if (isset($error_msg))echo '<p color="red">'.$error_msg.'</p>';?></div><div class=""><input type="text" name="username" value="" placeholder="enter a username" autocomplete="off" required /></div><div class=""><input type="text" name="email" value="" placeholder="provide an email" autocomplete="off" required /></div><div class=""><input type="password" name="passwd" value="" placeholder="enter a password" autocomplete="off" required /></div><div class=""><p>password must be at least 5 characters and<br /> have a special character, e.g. !#$.,:;()</font></p></div><div class=""><input type="password" name="confirm_password" value="" placeholder="confirm your password" autocomplete="off" required /></div><div class=""><input class="" type="submit" name="registerBtn" value="create account" /></div><p class="center"><br />Already have an account? <a href="<?php echo SITE_ADDR ?>/login">Login here</a></p></form>
hvis du merker, legger jeg vårt registerskjema i et enkelt bord bare for å justere alt pent for brukeren. Det viktigste å merke seg her er skjemahandlingen( aka POST), navnene på tekstboksene og navnet på send-knappen.
Alle disse feltnavnene er avgjørende i back-end-skriptet for å hente dataene etter at brukeren sender skjemaet. Legg også merke til skjemametoden POST, som vil skjule skjemadataene fra brukeren i stedet for å sende den til url-adressen SOM GET will.
Vis en feilmelding, når det trengs
på register-siden vil du og din brukers finne det nyttig å faktisk vise en feilmelding. Når det trengs. Jeg vil sette den under navigasjonen og over registerskjemaet. Denne meldingen vil gi brukeren en ide om hva de gjorde galt og må korrigere før de kan opprette sin konto.
I Utgangspunktet er det jeg skal gjøre å lage to variabler, en som heter $success og $error_msg. Vi vil gjore en enkel sjekk for disse to variablene blir satt. Basert på om de er satt (aka opprettet og tildelt en verdi), viser vi den aktuelle feilmeldingen.
<?php // check to see if the user successfully created an account if (isset($success) && $success == true){ echo '<font color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<font>'; } // check to see if the error message is set, if so display it else if (isset($error_msg)) echo '<font color="red">'.$error_msg.'</font>'; else echo ''; // do nothing?>
tanken er at hvis det oppstår en feil under behandlingen av dataene, kan vi angi feilmeldingen i $error_msg-variabelen, og da vil den bli vist til brukeren, og vi vil strope behandle informasjonen. Hvis brukeren vellykket oppretter sin konto, vil vi sette $success til true og vise en suksessmelding i grønt (fordi grønt alltid er bra,har jeg rett? ?).
Trinn 3: Koble Til MySQL-databasen ved hjelp av php
Vi kan nå komme til noen av bakenden php-koden. Før Vi kan gjøre Noen MySQL databaseoperasjoner, må du koble til databasen. De fleste nettsteder kobler seg til databasen i et separat konfigurasjons-eller tilkoblingsskript. Så vi vil gjøre det samme.
Opprett et nytt php-skript med navnet connect.php og lagre det i samme katalog som registeret.php-fil.
<?php $conn = mysqli_connect("localhost", "root", "password", "code_projects");?>
Trinn 4: Behandle registreringsskjemaet
nå ned til kjøtt og poteter i dette enkle registreringsskjemaet. Php-koden for å behandle skjemaet etter innsending.
Siden Vi allerede har opprettet vår database connection script, vi kan bruke require_once () funksjon for å laste tilkoblingsskriptet.
<?php // include our connect script require_once("connect.php"); // check to see if there is a user already logged in, if so redirect them session_start(); if (isset($_SESSION) && isset($_SESSION)) header("Location: ./index.php"); // redirect the user to the home page?>
ved hjelp av php-økter sporer vi om brukere er logget inn eller ikke. For nå vil vi bare sjekke for å se om øktvariablene er satt. Vi vil komme inn på hvordan du angir øktvariablene i påloggingsskjemaet. Hvis brukeren er logget inn, vil vi omdirigere dem til hjemmesiden.
Få alle registreringsskjemaer
når vi er klare til å få alle skjemadata, sjekker vi først om send-knappen var klikk (aka skjemaet ble sendt inn). Hvis det var da lagrer vi alle skjemadata i variabler. Hvis skjemaet ikke ble sendt, gjør vi ingenting annet enn å vise skjemaet til brukeren.
Siden vi bruker en formtype INNLEGG, må VI få INNLEGGSDATAENE ved hjelp av vår php-kode. Alle» Postet » data fra skjemaet vil være i $ _POST array variabelen. Du kan deretter bruke navnet på skjemaelementet som matrisetastene. Tillater oss å få de spesifikke dataene du leter etter, slik som dette:
if (isset($_POST)){ // get all of the form data $username = $_POST; $email = $_POST; $passwd = $_POST; $passwd_again = $_POST; // next code block }
Utfør grunnleggende kontroller på skjemadata
Neste sjekker vi om brukeren har fylt ut registreringsskjemaet. Se etter e-postadresse, brukernavn og passord. Hvis vi sørger for at hver variabel ikke er en tom streng, betyr det at det er litt tekst der inne, ikke sant?
så kontrollerer vi at passordet og bekreft passordet er nøyaktig den samme teksten. Caps og alt. Ved å bruke tre like tegn på rad (det er ===) i vår if-setning, er strengene tilpasset.
I Utgangspunktet sammenligner vi » hei «med» Hei » ved å bruke to like tegn, så får du et sant resultat. Dette er fordi koden vår sier «ja hei og hei er det samme ordet». Men hvis vi sammenligner dem med tre like tegn, er koden vår som » NEI! Stopp der. Disse ordene stemmer ikke overens. Big ol ‘ false!»Fornuftig?
// verify all the required form data was enteredif ($username != "" && $passwd != "" && $passwd_again != ""){ // make sure the two passwords match if ($passwd === $passwd_again){ // make sure the password meets the min strength requirements if ( strlen($passwd) >= 5 && strpbrk($passwd, "!#$.,:;()") != false ){ // next code block } else $error_msg = 'Your password is not strong enough. Please use another.'; } else $error_msg = 'Your passwords did not match.';}else $error_msg = 'Please fill out all required fields.';
Neste kan vi sørge for at passordene oppfyller våre styrkekrav. Våre ohhh så imponerende kriterier for et sikkert passord. Minst 5 tegn lang og bruker minst ett spesialtegn.
Ved hjelp av strlen() sørger vi for at den er lang nok til å møte vårt minimum på 5 tegn. Enkel. Ved å bruke strpbrk () – funksjonen kan vi sjekke om noen av spesialtegnene i listen er til stede. Denne funksjonen vil returnere false hvis ingen av spesialtegnene er til stede. Det vil returnere en streng hvis noen er til stede.
du kan lese mer om funksjonen på php.net referanse. I utgangspunktet er det bare en super rask og enkel måte å se etter en liste over spesialtegn som finnes i en streng. Fordi annet enn eksisterende vi egentlig ikke bryr seg om dem.
Trinn 5: Legg til nye brukerkontoer i databasen
Nå som vi vet at alle våre skjemadata er gode og klare til bruk, kan vi begynne å gjøre noen databasekontroller. Først sjekker vi for å se om brukernavnet allerede er i databasen. Hvis det er null poster returnert, er brukernavnet ikke i databasen. Hvis noe annet returneres, blir brukernavnet tatt.
neste må vi lage noen ekstra variabler for å lagre noen av de andre tilfeldige dataene vi trenger å lagre i databaseposten for brukerkontoen vi skal opprette. Under denne kodeblokken er en forklaring på hver av variablene.
ANSVARSFRASKRIVELSE: JEG ønsker å påpeke at for formålet med denne opplæringen vi ikke bruker en svært kompleks passordkryptering. Jeg gjør det bare for å ikke lagre passordet i vanlig tekst (gjør det aldri, det er bare dårlig). Hvis du vil lære hvordan du gjør noe mer omfattende og sikkert, sjekk ut vår veiledning for passordsikkerhet. Jeg går i detalj på ulike metoder for å lage og lagre sikrere passord ved hjelp av php.
// query the database to see if the username is taken$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 0){ // create and format some variables for the database $id = ''; $passwd = md5($passwd); $date_created = time(); $last_login = 0; $status = 1; // next code block}else $error_msg = 'The username <i>'.$username.'</i> is already taken. Please use another.';
- $id – vi trenger en plassholder for auto incrementing id som databasen vil tildele.
- $passwd – vi legger til litt grunnleggende kryptering til brukerens passord ved hjelp av md5() hash
- $date_created-ved hjelp av time () – funksjonen kan vi få et tidsstempel på det nøyaktige øyeblikket brukeren oppretter sin konto. Vi kan bruke dette senere for å vise med dato()
- $ last_login-senere vil vi bruke dette til å spore når brukeren logger inn. Vi skal sette den til null fordi de ikke har logget inn ennå.
- $status-ved hjelp av dette feltet kan vi spore kontoer status, for eksempel aktivere via e-post eller deaktivere den for admin formål, eller egentlig hva som helst flyter båten din. Jeg skal sette til 1 (en) som standard, noe som betyr en aktiv konto og kan logge inn umiddelbart.
Nå kan vi endelig opprette databaseposten for brukerens konto. Ved HJELP AV EN INNSATS spørring, kan vi veldig nøye liste ut alle våre database post informasjon.
hvis du trenger hjelp med å forstå grunnleggende om hvordan spørringer fungerer. Eller til og med generelle databaseoperasjoner, sjekk min andre opplæring om MySQLi databaseoperasjoner.
Etter AT vi HAR SATT inn posten, som en god praksis, skal jeg sørge for at posten faktisk ble lagt til (fordi du aldri vet, det kunne ha vært en slags feil.) Siden før vi sørget for at brukernavnet ikke eksisterte, nå hvis vi sjekker for å se om det eksisterer, og vi finner en post med den tildelt, vet vi at vår nye konto ble opprettet i databasen. Til slutt satte vi bare vår $ suksessvariabel til true fordi brukeren fullførte registreringen og kontoen ble opprettet.
// insert the user into the databasemysqli_query($conn, "INSERT INTO users VALUES ( '{$id}', '{$username}', '{$email}', '{$passwd}', '{$date_created}', '{$last_login}', '{$status}')");// verify the user's account was created$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 1){ /* IF WE ARE HERE THEN THE ACCOUNT WAS CREATED! YAY! */ /* WE WILL SEND EMAIL ACTIVATION CODE HERE LATER */ $success = true;}else $error_msg = 'An error occurred and your account was not created.';
siste finpuss for vårt registreringsskjema
nå med hele vårt register.php kode skrevet, kan vi se det fra nettleseren. Du kan til og med teste det ut og lage din egen konto på din nye registerside!
med vårt enkle registreringsskjema opprettet, er neste del av et php-medlemssystem å opprette påloggingsskjemaet. fordi hva er poenget med å ha et registreringsskjema for å opprette en konto hvis brukerne ikke kan logge inn på kontoen sin?