HeyTuts

när det gäller att skapa webbplatser för den verkliga världen är det viktigt att ha ett enkelt registreringsformulär för. Internet är praktiskt taget byggt på medlemswebbplatser. Så som en del av min php member system tutorial series, kommer vi att skapa en enkel registreringsformulär i php.

ganska snabbt och enkelt att skriva från början, det här enkla registerformuläret låter alla användare registrera sig med bara ett användarnamn, e-post och lösenord, men du kan enkelt lägga till ett e-postmeddelande om du vill.

för en mycket enkel översikt över källkoden för vår php registreringssida är detta:

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

hur man gör ett enkelt registreringsformulär i php

  1. skapa databasen för registreringsformuläret
  2. gör det enkla registreringsformuläret i HTML/CSS
  3. Anslut till MySQL-databasen med php
  4. bearbeta registreringsformuläret input
  5. Lägg till nya användarkonton i databasen

steg 1: Skapa databasen för registreringsformuläret

ofta är det första steget att skapa en webbplats att skapa databasen. Och Visst, du kommer sannolikt att behöva göra ändringar i din databas senare. Men att ställa in din databas först ger dig en bra utgångspunkt

vi skapar en enkel databas för att lagra all användarens kontoinformation, inklusive deras användarnamn och lösenord. Gå vidare och logga in på din phpMyAdmin kontrollpanel på din server. (om du är ny på phpMyAdmin, kolla in min intro till phpmyadmin artikel)

databasfält för vårt php-medlemssystem

varje Databas behöver ett namn, och eftersom jag gillar att hålla livet enkelt, låt oss kalla vår databas ”användare”.

OBS: Jag antar att du redan har åtminstone en grundläggande förståelse för hur man använder phpMyAdmin och hur MySQL-databaser fungerar. Om inte, då kan du läsa upp phpMyAdmin grunderna eller MySQL databas operation här på HeyTuts.com. (dessa länkar öppnas i nya flikar)

eftersom vi gör ett enkelt registreringsformulär behöver vi bara 7 fält i vår databas. På så sätt får vi tillräckligt med grundläggande funktionalitet direkt. Men kan fortfarande lägga till extra funktioner som ett lösenordsåterställningsformulär.

  1. id – detta kommer att vara en unik identifierare för varje användare. Vi måste se till att id-fältet är ett heltal och inställt på automatisk ökning med en primärnyckel. Detta är ett måste!!! När framsteg till mer komplexa medlemssystem, med hjälp av användarens konto-id gör det super enkelt att länka databasposter tillsammans.
  2. användarnamn-detta bör vara självförklarande. Jag satte min till en 50 tecken varchar. Mycket sällan vill användaren ha ett användarnamn längre än 10-15 tecken, så 50 bör ta hand om det. Men detta ger dig också möjlighet att ställa in önskad användarnamnlängd i din php-kod.
  3. e-post-användarens e-postadress. Ställ in det en 100 tecken varchar.
  4. lösenord – Vi kommer att använda vissa grundläggande kryptering för våra användares lösenord. Så en varchar med 50 tecken kommer att göra snyggt. Senare ser du oss använda md5 () – funktionen för att skapa en grundläggande lösenordshash för viss enkel säkerhet.
  5. date_created-detta lagrar ett tidsvärde () när användaren skapade sitt konto.
  6. last_login-vi kan spåra senaste gången användaren loggade in genom att uppdatera den här posten här. Återigen kommer att vara från tiden() funktionen.
  7. status-spåra kontoaktiveringsstatus. Vi kan kontrollera detta värde för att se om användaren har aktiverat sitt konto eller inte, och baserat på det låt dem logga in eller ge dem ett meddelande om att aktivera sitt konto.

steg 2: Gör det enkla registreringsformuläret i HTML/CSS

med databasinställningen kan vi skapa det faktiska registreringsformuläret som användaren kommer att använda för att skapa sitt konto. Liksom i stort sett alla webbformulär kommer vi att göra det med HTML och CSS.

skapa ett register.php-fil på din webbserver

jag ska ringa mitt registreringsformulär sida Registrera.php, så fortsätt och skapa den här filen på din webbserver. Jag rekommenderar att du gör hela medlemssystemet på din localhost-webbserver med XAMPP (extern länk).

skapa en grundläggande navigeringshuvud

rubriken för denna php-medlemssystemhandledning kommer också att vara enkel. Med några länkar bara för lite super grundläggande navigering. Nedan följer den grundläggande sidinställningen för 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>

skapa det faktiska registreringsformuläret

nu kan vi skapa det formulär som användaren ska se och interagera med. Om du tänker tillbaka på vår databasinställning har vi bara 3 fält som användaren har möjlighet att ange: användarnamnet, lösenordet och e-postadressen. Glöm inte att lägga till lite text för att visa etiketter för vilka fält som krävs.

av god praxis vill jag lägga till ett ytterligare lösenordsfält för användaren för att bekräfta sitt lösenord. Och var noga med att berätta för användarna vilken lösenordsstyrka som krävs.

jag hatar när webbplatsens kräver vissa lösenordskrav, men berätta inte för dig dessa krav! Idiotisk.

för att få ett säkert lösenord för användarens konto behöver vi minst 5 tecken långa. Med minst en speciell karaktär av en av dessa:!#$.,:;(). Detta kommer inte att ge användningen det säkraste lösenordet, men det kommer att ge dig en uppfattning om hur man tvingar starkare lösenord till ditt senare.

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

om du märker, lägger jag vårt registerformulär i ett enkelt bord bara för att anpassa allt snyggt för användaren. Det viktiga att notera här är formuläråtgärden (aka POST), namnen på textrutorna och namnet på Skicka-knappen.

php medlemssystem-2 php registreringsformulär användarregistreringsformulär

alla dessa fältnamn är avgörande i back-end-skriptet för att hämta data efter att användaren har skickat formuläret. Observera också formulärmetoden, POST, som döljer formulärdata från användaren istället för att skicka den till webbadressen som GET will.

visa ett felmeddelande, när det behövs

på registersidan kommer du och dina användare att hitta det bra att faktiskt visa ett felmeddelande. När det behövs. Jag kommer att lägga den under navigeringen och ovanför registerformuläret. Detta meddelande ger användaren en uppfattning om vad de gjorde fel och måste korrigera innan de kan skapa sitt konto.

i grund och botten vad jag ska göra är att skapa två variabler, en som heter $success och $error_msg. Vi kommer att göra en enkel kontroll för dessa två variabler som ställs in. Baserat på om de är inställda (aka skapade och tilldelade ett värde) visar vi det tillämpliga felmeddelandet.

<?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 är att om det finns ett fel vid bearbetning av data, kan vi ställa in felmeddelandet i variabeln $error_msg, och då kommer det att visas för användaren och vi kommer att stropa bearbeta informationen. Om användaren framgångsrikt skapar sitt konto kommer vi att ställa in $ success till true och visa ett framgångsmeddelande i grönt (eftersom grönt alltid är bra, har jag rätt??).

steg 3: Anslut till MySQL-databasen med php

vi kan nu komma till en del av php-koden. Innan vi kan göra några MySQL-databasoperationer måste du ansluta till databasen. De flesta webbplatser ansluter till databasen i ett separat konfigurations-eller anslutningsskript. Så vi kommer att göra detsamma.

skapa ett nytt php-skript som heter connect.php och spara den i samma katalog som registret.php-fil.

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

steg 4: bearbeta registreringsformuläret input

nu ner till kött och potatis i denna enkla registreringsformuläret. Php-koden för att bearbeta formuläret efter inlämning.

eftersom vi redan har skapat vårt databasanslutningsskript kan vi använda funktionen require_once() för att ladda anslutningsskriptet.

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

sedan använder vi php-sessioner, vi spårar om användare är inloggade eller inte. För tillfället kommer vi bara att kontrollera om sessionsvariablerna är inställda. Vi kommer att få in hur man ställer in sessionsvariablerna i inloggningsformuläret handledning. Om användaren är inloggad kommer vi att omdirigera dem till hemsidan.

få alla registreringsformulärdata

när vi är redo att få alla formulärdata kontrollerar vi först om knappen Skicka var klick (aka formuläret skickades in). Om det var så lagrar vi alla formulärdata i variabler. Om formuläret inte skickades in gör vi ingenting förutom att visa formuläret för användaren.

eftersom vi använder en formulärtyp av inlägg måste vi hämta postdata med vår php-kod. Alla” postade ” data från formuläret kommer att finnas i $_POST-arrayvariabeln. Du kan sedan använda namnet på formulärelementet som matrisnycklar. Tillåter oss att få de specifika uppgifter du letar efter, så här:

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

utför grundläggande kontroller på formulärdata

nästa kontrollerar vi om användaren har fyllt i registreringsformuläret. Söker efter e-postadress, användarnamn och lösenord. Om vi ser till att varje variabel inte är en tom sträng betyder det att det finns lite text där, eller hur?

då kontrollerar vi att lösenordet och bekräfta lösenordet är exakt samma text. Caps och allt. Genom att använda tre likhetstecken i rad (det är ===) i vårt if-uttalande, är strängarna matchade.

i grund och botten jämför vi ”hej” med ”Hej” med två lika tecken så får du ett sant resultat. Detta beror på att vår kod säger”ja hej och hej är samma ord”. Men om vi jämför dem med tre lika tecken, vår kod är som ” nej! Stanna där. Dessa ord matchar inte. Stor ol ’ falsk!”Vettigt?

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

nästa kan vi se till att lösenorden uppfyller våra styrka krav. Våra ohhh så imponerande kriterier för ett säkert lösenord. Minst 5 tecken långa och med minst ett specialtecken.

med strlen() ser vi till att den är tillräckligt lång för att uppfylla vårt 5 tecken minimum. Lätt. Sedan kan vi använda strpbrk () – funktionen för att se om något av specialtecknen i listan finns. Den här funktionen returnerar false om inget av specialtecknen finns. Det kommer att returnera en sträng om någon är närvarande.

du kan läsa mer om funktionen på php.net referens. I grund och botten är det bara ett supersnabbt och enkelt sätt att söka efter en lista med specialtecken som finns i en sträng. För andra än befintliga bryr vi oss inte riktigt om dem.

Steg 5: Lägg till nya användarkonton i databasen

nu när vi vet att alla våra formulärdata är bra och redo att användas kan vi börja göra några databaskontroller. Först kontrollerar vi om användarnamnet redan finns i databasen. Om nollposter returneras finns inte användarnamnet i databasen. Om något annat returneras, tas användarnamnet.

nästa måste vi skapa några extra variabler för att lagra några av de andra slumpmässiga data vi behöver lagra i databasposten för användarkontot vi ska skapa. Under detta kodblock finns en förklaring av var och en av variablerna.

ansvarsfriskrivning: jag vill påpeka att vi inte använder en mycket komplex lösenordskryptering för syftet med denna handledning. Jag gör det helt enkelt för att inte lagra lösenordet i vanlig text (gör aldrig det, det är bara dåligt). Om du vill lära dig att göra något mer väsentligt och säkert, kolla in vår handledning för lösenordssäkerhet. Jag går in i detalj på olika metoder för att skapa och lagra säkrare lösenord med 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 behöver en platshållare för automatisk inkrementering id som databasen kommer att tilldela.
  • $passwd-vi lägger till lite grundläggande kryptering till användarens lösenord med md5() hash
  • $date_created – med hjälp av time () – funktionen kan vi få en tidsstämpel i det exakta ögonblicket som användaren skapar sitt konto. Vi kan använda detta senare för att visa med datum ()
  • $last_login-senare kommer vi att använda detta för att spåra när användaren loggar in. Vi kommer att ställa in det till noll eftersom de inte har loggat in ännu.
  • $status-med det här fältet kan vi spåra kontostatusen, till exempel att aktivera via e-post eller inaktivera den för administratörsändamål, eller verkligen vad som någonsin flyter din båt. Jag kommer att ställa in till 1 (en) som standard, vilket betyder ett aktivt konto och kan logga in omedelbart.

när vi lägger till e-postaktiveringsfunktionen i vårt medlemssystem kommer kontostatusen verkligen att spela in.

nu kan vi äntligen skapa databasposten för användarens konto. Med hjälp av en INSERT-fråga kan vi mycket noggrant lista ut all vår databaspostinformation.

om du behöver hjälp med att förstå grunderna i hur frågor fungerar. Eller till och med allmänna databasoperationer, kolla min andra handledning om mysqli-databasoperationer.

efter att vi har satt in posten, som en bra praxis, kommer jag att se till att posten faktiskt lagts till (för att du aldrig vet, det kunde ha varit något slags fel.) Sedan innan vi såg till att användarnamnet inte fanns, nu om vi kontrollerar om det existerar och vi hittar en post med den tilldelad vet vi att vårt nya konto skapades i databasen. Slutligen ställer vi bara in vår $success-variabel till true eftersom användaren slutförde sin registrering och deras konto skapades.

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

sista handen för vårt registreringsformulär

nu med hela vårt register.php-kod skriven, vi kan se den från webbläsaren. Du kan till och med testa det och skapa ditt eget konto på din nya registersida!

med vårt enkla registreringsformulär skapat är nästa del av ett php-medlemssystem att skapa inloggningsformuläret. för vad är poängen med att ha ett registreringsformulär för att skapa ett konto om användare inte kan logga in på sitt konto?

Liknande Lastning…

Lämna ett svar

Lämna ett svar

Din e-postadress kommer inte publiceras.