HeyTuts

når det kommer til at lave hjemmesider til den virkelige verden, er det vigtigt at have en simpel registreringsformular til. Internettet er praktisk taget bygget i medlemskab hjemmesider. Så som en del af min php-medlemssystem-tutorial-serie opretter vi en simpel registreringsformular i php.

temmelig hurtig og nem at skrive fra bunden, denne enkle registerformular giver enhver bruger mulighed for at registrere sig med bare et brugernavn, e-mail og adgangskode, men du kan nemt tilføje en e-mail, hvis du ville.

for en meget enkel oversigt over kildekoden til vores 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>

Sådan laver du en simpel registreringsformular i php

  1. Opret databasen til registreringsformularen
  2. lav den enkle registreringsformular i HTML/CSS
  3. Opret forbindelse til Myskl-databasen ved hjælp af php
  4. behandle registreringsformularindgangen
  5. Tilføj nye brugerkonti til databasen

Trin 1: Opret databasen til registreringsformularen

ofte er det første trin med at oprette en hjemmeside at oprette databasen. Og sikker på, vil du sandsynligvis nødt til at foretage ændringer i din database senere. Men opsætning af din database først, vil give dig et godt udgangspunkt

vi vil oprette en simpel database til at gemme alle brugerens kontooplysninger, herunder deres brugernavn og adgangskode. Gå videre og log ind på dit phpMyAdmin kontrolpanel på din server. (hvis du er ny til phpMyAdmin, tjek min intro til phpMyAdmin artikel)

Database felter til vores php medlemskab system

hver database har brug for et navn, og da jeg gerne holde livet simpelt, lad os kalde vores database “brugere”.

Bemærk: Jeg antager, at du allerede har mindst en grundlæggende forståelse af, hvordan du bruger phpMyAdmin, og hvordan Myskl-databaser fungerer. Hvis ikke, så kan du læse om PHPMyAdmin basics eller Myskl database operation lige her på HeyTuts.com. (disse links åbnes i nye faner)

da vi laver en simpel registreringsformular, har vi kun brug for 7 felter i vores database. På denne måde får vi nok grundlæggende funktionalitet med det samme. Men kan stadig tilføje ekstra funktioner som en formular til nulstilling af adgangskode.

  1. id – dette vil være en unik identifikator for hver bruger. Vi skal sørge for, at id-feltet er et heltal og indstillet til automatisk forøgelse med en primær nøgle. Dette er et must!!! Når fremskridt til mere komplekse medlemssystemer, ved hjælp af brugerens konto-id gør det super nemt at linke databaseposter sammen.
  2. brugernavn – dette bør være selvforklarende. Jeg satte min til en 50 karakter varchar. Meget sjældent vil brugerens ønsker et brugernavn længere end 10-15 tegn, så 50 bør tage sig af det. Men dette giver dig også muligheden for at indstille din ønskede brugernavnlængde i din php-kode.
  3. e – mail-brugerens e-mail-adresse. Sæt det det en 100 tegn varchar.
  4. adgangskode – vi vil bruge nogle grundlæggende kryptering til vores brugeres adgangskoder. Så en varchar på 50 tegn vil gøre pænt. Senere vil du se os bruge MD5 () – funktionen til at oprette en grundlæggende adgangskode hash for nogle enkle sikkerhed.
  5. date_created – dette vil gemme en tid() værdi af, når brugeren oprettede deres konto.
  6. last_login – vi kan spore sidste gang brugeren loggede ind ved at opdatere denne post her. Igen vil være fra den tid() funktion.
  7. status – spor kontoaktiveringsstatus. Vi kan kontrollere denne værdi for at se, om brugeren har aktiveret deres konto eller ej, og baseret på det, lad dem logge ind eller give dem en meddelelse om at aktivere deres konto.

Trin 2: Lav den enkle registreringsformular i HTML/CSS

med databaseopsætningen kan vi oprette den faktiske registreringsformular, som brugeren vil bruge til at oprette deres konto. Ligesom stort set alle hjemmeside formularer, vi vil gøre det med HTML og CSS.

Opret et register.php fil på din internetserver

jeg vil ringe til min registreringsformular side register.php, så gå videre og opret denne fil på din internetserver. Jeg anbefaler at gøre hele dette medlemssystem på din localhost – server med (eksternt link).

Opret en grundlæggende navigationsoverskrift

overskriften til denne php-medlemssystem-tutorial vil også være enkel. Med et par links bare for nogle super grundlæggende navigation. Nedenfor er den grundlæggende Sideopsætning til vores 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>

Opret den faktiske registreringsformular

nu kan vi oprette den formular, som brugeren skal se og interagere med. Hvis du tænker tilbage på vores databaseopsætning, har vi kun 3 felter, som brugeren har mulighed for at indtaste: brugernavn, adgangskode og e-mail-adresse. Glem ikke at tilføje noget tekst for at få vist etiketter, for hvilke felter der kræves.

ud af god praksis vil jeg gerne tilføje et ekstra adgangskodefelt for brugeren at bekræfte deres adgangskode. Og sørg for at fortælle brugerne den krævede adgangskodestyrke.

jeg hader, når hjemmesiden kræver visse adgangskodekrav, men fortæl dig ikke disse krav! Idiotisk.

for at få en sikker adgangskode til brugerens konto kræver vi mindst 5 tegn. Med mindst en særlig karakter af en af disse: !#$.,:;(). Dette vil ikke give brugen den mest sikre adgangskode, men det vil give dig en ide om, hvordan du tvinger stærkere adgangskoder til din 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 bemærker det, lægger jeg vores registerformular i en simpel tabel bare for at justere alt pænt for brugeren. Den vigtige ting at bemærke her er formularhandlingen (aka POST), navnene på tekstfelterne og navnet på knappen Send.

php medlemssystem - 2 php registreringsformular brugerregistreringsformular

alle disse feltnavne er afgørende i back-end-scriptet for at hente dataene, efter at brugeren har indsendt formularen. Bemærk også formularmetoden, POST, som skjuler formulardataene for brugeren i stedet for at sende dem til url ‘ en som GET vil.

Vis en fejlmeddelelse, når det er nødvendigt

på registersiden finder du og din bruger det nyttigt at faktisk vise en fejlmeddelelse. Når det er nødvendigt. Jeg vil sætte det under navigationen og over registerformularen. Denne meddelelse giver brugeren en ide om, hvad de gjorde forkert og skal rette, før de kan oprette deres konto.

grundlæggende hvad jeg skal gøre er at oprette to variabler, en navngivet $success og $error_msg. Vi vil gøre en simpel kontrol for disse to variabler, der indstilles. Baseret på hvis de er indstillet (aka oprettet og tildelt en værdi), viser vi den relevante fejlmeddelelse.

<?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?>

ideen er, at hvis der er en fejl under behandlingen af dataene, kan vi indstille fejlmeddelelsen i $error_msg-variablen, og så vises den til brugeren, og vi vil strop behandle info. Hvis brugeren med succes opretter deres konto, indstiller vi $success til true og viser en succesmeddelelse i grønt (fordi grønt altid er godt, har jeg ret??).

Trin 3: Ved hjælp af php

kan vi nu komme til nogle af back-end php-koden. Før vi kan udføre nogen databaseoperationer, skal du oprette forbindelse til databasen. De fleste hjemmesider forbinder til databasen i en separat konfiguration eller forbindelse script. Så vi vil gøre det samme.

Opret et nyt php-script med navnet connect.php og gem det i samme mappe som registret.php-fil.

<?php $conn = mysqli_connect("localhost", "root", "password", "code_projects");?>

Trin 4: behandle registreringsformularindgangen

nu ned til kød og kartofler i denne enkle registreringsformular. Php-koden til at behandle formularen efter indsendelse.

da vi allerede har oprettet vores databaseforbindelsesscript, kan vi bruge funktionen kræv_once() til at indlæse forbindelsesscriptet.

<?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?>

derefter bruger vi php-sessioner, vi sporer, om brugere er logget ind eller ej. For nu vil vi bare kontrollere, om sessionvariablerne er indstillet. Vi vil komme ind på, hvordan du indstiller sessionvariablerne i login-formularen tutorial. Hvis brugeren er logget ind, omdirigerer vi dem til startsiden.

Hent alle registreringsformulardata

når vi er klar til at få alle formulardataene, kontrollerer vi først, om knappen Send var Klik (aka formularen blev indsendt). Hvis det var så gemmer vi alle formulardata i variabler. Hvis formularen ikke blev indsendt, gør vi intet andet end at vise formularen til brugeren.

da vi bruger en formulartype af indlæg, skal vi hente postdataene ved hjælp af vores php-kode. Alle de” bogførte ” data fra formularen vil være i $_POST array variablen. Du kan derefter bruge navnet på formularelementet som array-tasterne. Tillader os at få de specifikke data, du leder efter, sådan her:

if (isset($_POST)){ // get all of the form data $username = $_POST; $email = $_POST; $passwd = $_POST; $passwd_again = $_POST; // next code block }

Udfør grundlæggende kontrol af formulardataene

næste kontrollerer vi, om brugeren har udfyldt registreringsformularen. Kontrol af e-mail-adresse, brugernavn og adgangskoder. Hvis vi sørger for, at hver variabel ikke er en tom streng, betyder det, at der er noget tekst derinde, ikke?

så kontrollerer vi for at sikre, at adgangskoden og bekræft adgangskoden er nøjagtig den samme tekst. Caps og det hele. Ved at bruge tre lige tegn i træk (det er ===) i vores if-sætning, er strengene case matchede.

dybest set sammenligner vi “Hej” med “Hej” ved hjælp af to lige tegn, så får du et sandt resultat. Dette skyldes, at vores kode siger”ja hej og hej er det samme ord”. Men hvis vi sammenligner dem ved hjælp af tre lige tegn, vores kode er som “nej! Stop lige der. Disse ord stemmer ikke overens. Stor ol ‘ falsk!”Giver mening?

// 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.';

dernæst kan vi sikre os, at adgangskoderne opfylder vores styrkekrav. Vores ohhh så imponerende kriterier for en sikker adgangskode. Mindst 5 tegn lange og bruger mindst et specialtegn.

ved hjælp af strlen() sørger vi for, at den er lang nok til at opfylde vores 5 tegn minimum. Let. Derefter kan vi ved hjælp af strpbrk () – funktionen kontrollere, om nogen af specialtegnene på listen er til stede. Denne funktion returnerer false, hvis ingen af specialtegnene er til stede. Det vil returnere en streng, hvis nogen er til stede.

du kan læse mere om funktionen på php.net reference. Dybest set er det bare en super hurtig og nem måde at kontrollere for en liste over specialtegn, der findes i en streng. Fordi andre end eksisterende vi ikke rigtig bekymrer sig om dem.

Trin 5: Tilføj nye brugerkonti til databasen

nu hvor vi ved, at alle vores formulardata er gode og klar til brug, kan vi begynde at lave nogle databasekontrol. Først kontrollerer vi, om brugernavnet allerede er i databasen. Hvis der returneres nul poster, er brugernavnet ikke i databasen. Hvis der returneres noget andet, tages brugernavnet.

Dernæst skal vi oprette nogle ekstra variabler for at gemme nogle af de andre tilfældige data, vi skal gemme i databaseposten for den brugerkonto, vi skal oprette. Under denne kodeblok er en forklaring på hver af variablerne.

ansvarsfraskrivelse: Jeg vil gerne påpege, at vi med henblik på denne tutorial ikke bruger en meget kompleks adgangskodekryptering. Jeg gør det simpelthen for effekten af ikke at gemme adgangskoden i almindelig tekst (gør det aldrig, det er bare dårligt). Hvis du vil lære at gøre noget mere omfattende og sikkert, skal du tjekke vores vejledning til adgangskodesikkerhed. Jeg går i detaljer om forskellige metoder til at oprette og gemme mere sikre adgangskoder ved hjælp af 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 har brug for en pladsholder til det automatiske forøgelses-id, som databasen vil tildele.
  • $adgangskode – vi tilføjer nogle grundlæggende kryptering til brugerens adgangskode ved hjælp af MD5() hash
  • $date_created – ved hjælp af funktionen time() kan vi få et tidsstempel på det nøjagtige tidspunkt, hvor brugeren opretter deres konto. Vi kan bruge dette senere til at vise ved hjælp af dato ()
  • $last_login – senere bruger vi dette til at spore, når brugeren logger ind. Vi sætter det til nul, fordi de ikke har logget ind endnu.
  • $status – ved hjælp af dette felt kan vi spore kontostatus, såsom aktivering via e-mail eller deaktivering af den til adminformål, eller virkelig hvad der nogensinde flyder din båd. Jeg vil som standard indstille til 1 (En), hvilket betyder en aktiv konto og kan logge ind med det samme.

når vi har tilføjet e-mail-aktiveringsfunktionen til vores medlemssystem, så kommer kontostatus virkelig i spil.

nu kan vi endelig oprette databaseposten til brugerens konto. Ved hjælp af en indsæt forespørgsel kan vi meget omhyggeligt liste alle vores databasepostoplysninger.

hvis du har brug for hjælp til at forstå det grundlæggende i, hvordan forespørgsler fungerer. Eller endda generelle databaseoperationer, tjek min anden tutorial om myskli databaseoperationer.

når vi har indsat posten som en god praksis, vil jeg sørge for, at posten faktisk blev tilføjet (fordi du aldrig ved, kunne der have været en slags fejl.) Siden før vi sørgede for, at brugernavnet ikke eksisterede, nu hvis vi kontrollerer for at se, om det findes, og vi finder en post med den tildelt, ved vi, at vores nye konto blev oprettet i databasen. Til sidst indstiller vi bare vores $succesvariabel til sand, fordi brugeren afsluttede deres registrering, og deres konto blev oprettet.

// 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.';

sidste hånd til vores registreringsformular

nu med hele vores register.php kode skrevet, kan vi se det fra internettet. Du kan endda teste det og oprette din egen konto på din nye registerside!

med vores enkle registreringsformular oprettet, er den næste del af et php-medlemssystem at oprette login-formularen. fordi hvad er meningen med at have en registreringsformular til at oprette en konto, hvis brugere ikke kan logge ind på deres konto?

Ligesom Indlæsning…

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.