Gebruikerslidmaatschap met PHP

Een tutorial voor de allerbeste! Waar u ook naartoe gaat op het internet, er is een nietje dat u bijna overal vindt: gebruikersregistratie. Of u nu uw gebruikers nodig hebt om zich te registreren voor beveiliging of gewoon voor een toegevoegde functie, er is geen reden om het niet te doen met deze eenvoudige tutorial. In deze zelfstudie bespreken we de basisprincipes van gebruikersbeheer en eindigen met een eenvoudig lidgebied dat u op uw eigen website kunt implementeren..

Als je extra hulp nodig hebt of een snelkoppeling wilt, bekijk dan het aanbod van PHP-serviceproviders op Envato Studio. Deze ervaren ontwikkelaars kunnen u helpen met alles van een snelle bugfix tot het volledig opnieuw ontwikkelen van een hele app. Blader dus gewoon door de providers, lees de beoordelingen en beoordelingen en kies de juiste keuze voor u.

Invoering

In deze zelfstudie gaan we door elke stap van het maken van een gebruikersbeheersysteem, samen met een intergebruikerssysteem voor privéberichten. We gaan dit doen met behulp van PHP, met een MySQL-database voor het opslaan van alle gebruikersinformatie. Deze tutorial is bedoeld voor absolute beginners tot PHP, dus er is helemaal geen voorkennis vereist - je kunt zelfs een beetje verveeld raken als je een ervaren PHP-gebruiker bent!

Deze zelfstudie is bedoeld als een basisinleiding voor sessies en voor het gebruik van databases in PHP. Hoewel het eindresultaat van deze tutorial misschien niet meteen nuttig voor u lijkt, kunt u met de vaardigheden die u uit deze zelfstudie haalt, doorgaan met het produceren van een eigen lidmaatschapssysteem; aangepast aan uw eigen behoeften.

Voordat u aan deze zelfstudie begint, moet u de volgende informatie bij de hand hebben:

  • Database Hostnaam - dit is de server waarop uw database wordt gehost, in de meeste situaties zal dit gewoon 'localhost' zijn.
  • Databasenaam, database-gebruikersnaam, database-wachtwoord - Voordat u deze zelfstudie start, moet u een MySQL-database maken als u over de mogelijkheid beschikt of de informatie bij de hand hebt om verbinding te maken met een bestaande database. Deze informatie is tijdens de zelfstudie nodig.

Als u deze informatie niet hebt, moet uw hostingprovider u dit kunnen verstrekken.

Nu we de formaliteiten uit de weg hebben geruimd, gaan we aan de slag met de zelfstudie!

Stap 1 - Initiële configuratie

De database instellen

Zoals vermeld in de Introductie, heb je een database nodig om verder te gaan dan dit punt in de tutorial. Om te beginnen gaan we een tabel maken in deze database om onze gebruikersinformatie op te slaan.

De tabel die we nodig hebben zal onze gebruikersinformatie opslaan; voor onze doeleinden zullen we een eenvoudige tabel gebruiken, maar het zou gemakkelijk zijn om meer informatie op te slaan in extra kolommen als dat is wat je nodig hebt. In ons systeem hebben we de volgende vier kolommen nodig:

  • Gebruikersnaam (Hoofdsleutel)
  • Gebruikersnaam
  • Wachtwoord
  • E-mailadres

In termen van de database, a Hoofdsleutel is het veld dat de rij op unieke wijze identificeert. In dit geval, Gebruikersnaam zal onze primaire sleutel zijn. Omdat we willen dat dit elke keer dat een gebruiker registreert, wordt verhoogd, gebruiken we de speciale MySQL-optie - auto_increment.

De SQL-query voor het maken van onze tabel is hieronder opgenomen en wordt meestal uitgevoerd op het tabblad 'SQL' van phpMyAdmin.

MAAK TAFEL 'users' ('UserID' INT (25) NOT NULL AUTO_INCREMENT PRIMARY KEY, 'Gebruikersnaam' VARCHAR (65) NOT NULL, 'Wachtwoord' VARCHAR (32) NOT NULL, 'EmailAddress' VARCHAR (255) NOT NULL);

Een basisbestand maken

Om het creëren van ons project te vereenvoudigen, gaan we een basisbestand maken dat we kunnen opnemen in elk van de bestanden die we maken. Dit bestand bevat de databaseverbindingsinformatie, samen met bepaalde configuratievariabelen die ons onderweg zullen helpen.

Begin met het aanmaken van een nieuw bestand: base.php, en voer daarin de volgende code in:

Laten we een paar van die regels eens bekijken? Er zijn een paar functies die we hebben gebruikt en die nog niet zijn uitgelegd, dus laten we ze snel doornemen en begrijpen - als je de basisprincipes van PHP al begrijpt, wil je misschien deze uitleg overslaan.

session_start ();

Deze functie start een sessie voor de nieuwe gebruiker en later in deze zelfstudie zullen we informatie in deze sessie opslaan om ons in staat te stellen gebruikers te herkennen die al zijn ingelogd. Als er al een sessie is aangemaakt, herkent deze functie dat en draagt die sessie naar de volgende pagina.

mysql_connect ($ dbhost, $ dbuser, $ dbpass) of die ("MySQL Error:". mysql_error ()); mysql_select_db ($ dbname) of die ("MySQL Error:". mysql_error ());

Elk van deze functies voert een afzonderlijke, maar gekoppelde taak uit. De mysql_connect function verbindt ons script met de databaseserver met behulp van de informatie die we hierboven hebben gegeven, en de mysql_select_db functie kiest vervolgens welke database moet worden gebruikt met het script. Als een van de functies niet wordt voltooid, zorgt de dood gaan functie zal automatisch ingrijpen en het script stoppen met verwerken - waardoor gebruikers het bericht krijgen dat er een MySQL-fout was.

Stap 2 - Terug naar de frontend

Wat moeten we eerst doen?

Het belangrijkste item op onze pagina is de eerste regel van PHP; deze regel zal het bestand bevatten dat we hierboven hebben gemaakt (base.php), en ons in wezen toegang geven tot alles uit dat bestand in ons huidige bestand. We zullen dit doen met de volgende regel van de PHP-code. Maak een bestand met de naam index.php, en plaats deze code bovenaan.

Begin de HTML-pagina

Het eerste dat we gaan doen voor onze frontend is om een ​​pagina te maken waar gebruikers hun gegevens kunnen invoeren om in te loggen, of als ze al zijn ingelogd op een pagina waarop ze kunnen kiezen wat ze dan willen doen. In deze tutorial veronderstel ik dat gebruikers basiskennis hebben over hoe HTML / CSS werkt en daarom deze code niet in detail zullen toelichten; op het moment dat deze elementen un-styled zullen zijn, maar we zullen dit later kunnen veranderen wanneer we ons CSS-stylesheet maken.

Het bestand gebruiken dat we zojuist hebben gemaakt (index.php), voer de volgende HTML-code in onder de regel van PHP die we al hebben gemaakt.

    Gebruikersbeheersysteem (Tom Cameron voor NetTuts)    

Wat zullen we hen laten zien?

Voordat we de rest van de pagina uitvoeren, hebben we een paar vragen om ons af te vragen:

  1. Is de gebruiker al ingelogd?
  • Ja - we moeten ze een pagina laten zien met opties waaruit ze kunnen kiezen.
  • Nee - we gaan verder met de volgende vraag.
  • Heeft de gebruiker al zijn inloggegevens ingediend??
    • Ja - we moeten hun gegevens controleren, en als het goed is, loggen we ze in op de site.
    • Nee - we gaan verder met de volgende vraag.
  • Als beide bovenstaande werden beantwoord Nee, we kunnen er nu van uitgaan dat we een loginformulier voor de gebruiker moeten tonen.
  • Deze vragen zijn in feite dezelfde vragen die we gaan implementeren in onze PHP-code. We gaan dit doen in de vorm van als verklaringen. Zonder iets in een van je nieuwe bestanden in te voeren, laten we eens kijken naar de logica die we het eerst gaan gebruiken.

    Ziet er verwarrend uit, toch? Laten we het opsplitsen in kleinere secties en er één voor één overheen gaan.

    if (! empty ($ _ SESSION ['LoggedIn')) &&! empty ($ _ SESSION ['Username'])) // laat de gebruiker de hoofdpagina openen

    Wanneer een gebruiker zich aanmeldt op onze website, gaan we hun informatie opslaan in een sessie - op elk gewenst moment hebben we toegang tot die informatie in een speciale wereldwijde PHP-array - $ _SESSION. We gebruiken de leeg functie om te controleren of de variabele leeg is, met de operator ! voor. Daarom zeggen we:

    Als de variabele $ _SESSION ['LoggedIn'] niet leeg is en $ _SESSION ['Gebruikersnaam'] niet leeg is, voer dan dit stuk code uit.

    De volgende regel werkt op dezelfde manier, alleen deze keer met de $ _POST globale reeks. Deze array bevat alle gegevens die zijn verzonden vanaf het aanmeldingsformulier dat we later in deze zelfstudie zullen maken. De laatste regel wordt alleen uitgevoerd als geen van de eerdere instructies wordt gehaald; in dit geval zullen we aan de gebruiker een inlogformulier tonen.

    Dus, nu we de logica begrijpen, laten we wat inhoud tussen die secties zoeken. In uw index.php bestand, voert u hieronder het volgende in wat u al hebt.

     

    Lid gebied

    en je e-mailadres is .

    Succes"; echo"

    We begeleiden u nu naar het ledengedeelte.

    "; echo""; else echo"

    Fout

    "; echo"

    Sorry, je account kon niet gevonden worden Klik hier om het opnieuw te proberen.

    "; else ?>

    Inloggen voor Leden

    Bedankt voor het bezoeken! Meld u hieronder aan of klik hier om u te registreren.



    Hopelijk zullen de eerste en laatste codeblokken je niet teveel verwarren. Wat we nu echt nodig hebben om vast te houden, is waar jullie allemaal naartoe zijn gekomen voor deze tutorial voor - de PHP-code. We gaan nu door het tweede gedeelte, regel voor regel, en ik zal uitleggen waar elk stukje code voor bedoeld is.

     $ username = mysql_real_escape_string ($ _ POST ['gebruikersnaam']); $ wachtwoord = md5 (mysql_real_escape_string ($ _ POST ['wachtwoord']));

    Er zijn twee functies waarvoor uitleg nodig is. ten eerste, mysql_real_escape_string - een zeer nuttige functie om database-invoer te wissen. Het is geen onfeilbare maatregel, maar dit voorkomt de meerderheid van de kwaadwillende hackers door ongewenste delen te ontdoen van wat er in ons inlogformulier is gestopt. ten tweede, md5. Het zou onmogelijk zijn om hier in detail in te gaan, maar deze functie versleutelt eenvoudig wat er aan wordt doorgegeven - in dit geval het wachtwoord van de gebruiker - om te voorkomen dat nieuwsgierige ogen het lezen.

     $ checklogin = mysql_query ("SELECT * FROM gebruikers WHERE Username = '". $ username. "' AND Password = '". $ password. "'"); if (mysql_num_rows ($ checklogin) == 1) $ row = mysql_fetch_array ($ checklogin); $ email = $ row ['EmailAddress']; $ _SESSION ['Gebruikersnaam'] = $ gebruikersnaam; $ _SESSION ['EmailAddress'] = $ e-mail; $ _SESSION ['LoggedIn'] = 1;

    Hier hebben we de kern van onze inlogcode; ten eerste voeren we een query uit op onze database. In deze query zijn we op zoek naar alles met betrekking tot een lid, waarvan de gebruikersnaam en het wachtwoord overeenkomen met de waarden van onze $ username en $ password die de gebruiker heeft verstrekt. Op de volgende regel hebben we een if-statement, waarin we controleren hoeveel resultaten we hebben ontvangen - als er geen resultaten zijn, wordt deze sectie niet verwerkt. Maar als er een resultaat is, weten we dat de gebruiker bestaat en dus gaan we ze in loggen.

    De volgende twee regels moeten het e-mailadres van de gebruiker verkrijgen. We hebben deze informatie al van de query die we al hebben uitgevoerd, zodat we gemakkelijk toegang hebben tot deze informatie. Eerst krijgen we een array met de gegevens die uit de database zijn opgehaald - in dit geval gebruiken we de PHP-functie mysql_fetch_array. Ik heb toen de waarde van de E-mailadres veld naar een variabele die we later kunnen gebruiken.

    Nu stellen we de sessie in. We slaan de gebruikersnaam en het e-mailadres van de gebruiker op in de sessie, samen met een speciale waarde voor ons om te weten dat ze zijn ingelogd met dit formulier. Nadat dit alles gezegd en gedaan is, zullen ze dan omgeleid worden naar de Member Area met behulp van de META REFRESH in de code.

    Hoe ziet ons project er op dit moment uit voor een gebruiker??

    Super goed! Het is tijd om verder te gaan en ervoor te zorgen dat mensen daadwerkelijk op uw site kunnen komen.

    Laat het volk zich aanmelden

    Het is allemaal goed en wel met een inlogformulier op uw site, maar nu moeten gebruikers het kunnen gebruiken. We moeten een inlogformulier maken. Maak een bestand met de naam register.php en plaats de volgende code erin.

        Gebruikersbeheersysteem (Tom Cameron voor NetTuts)    
    Fout"; echo"

    Sorry die gebruikersnaam is al in gebruik. Ga alsjeblieft terug en probeer het opnieuw.

    "; else $ registerquery = mysql_query (" INSERT INTO gebruikers (gebruikersnaam, wachtwoord, e-mailadres) WAARDEN ('". $ gebruikersnaam."', '". $ wachtwoord."', '". $ email."') "); if ($ registerquery) echo"

    Succes

    "; echo"

    Uw account is succesvol aangemaakt. Klik hier om in te loggen.

    "; else echo"

    Fout

    "; echo"

    Sorry, je registratie is mislukt. Ga alsjeblieft terug en probeer het opnieuw.

    "; else ?>

    Registreren

    Voer hieronder uw gegevens in om u te registreren.




    Er is dus niet veel nieuwe PHP die we in die sectie nog niet hebben geleerd. Laten we deze SQL-query echter snel bekijken en kijken of we kunnen achterhalen wat het doet.

    $ registerquery = mysql_query ("INSERT INTO gebruikers (gebruikersnaam, wachtwoord, e-mailadres) WAARDEN ('". $ gebruikersnaam. "', '". $ wachtwoord. "', '". $ email. "')");

    Dus hier voegen we de gebruiker toe aan onze database. Deze keer voegen we het in plaats van het ophalen van gegevens toe; dus we specificeren eerst in welke kolommen we gegevens invoeren (vergeet niet dat onze gebruikers-ID automatisch omhoog gaat). In de VALUES () gebied, we vertellen het wat we in elke kolom moeten zetten; in dit geval onze variabelen die afkomstig waren van de invoer van de gebruiker. Laten we het eens proberen; Zodra u een account hebt gemaakt op uw gloednieuwe registratieformulier, ziet u hier wat u te zien krijgt voor de Ledenzone.

    Zorg ervoor dat ze kunnen afmelden

    We zijn bijna aan het einde van dit gedeelte, maar er is nog een ding dat we nodig hebben voordat we hier klaar zijn - een manier voor gebruikers om uit te loggen van hun accounts. Dit is heel gemakkelijk om te doen (gelukkig voor ons); maak een nieuw gearchiveerde naam aan logout.php en vul hier het volgende in.

     

    Hierin zijn we eerst onze globale opnieuw in te stellen $ _SESSION array, en dan vernietigen we de sessie volledig.

    En dat is het einde van die sectie en het einde van de PHP-code. Laten we nu naar onze laatste sectie gaan.

    Stap 3 - Stijlvol worden

    Ik ga niet veel uitleggen in dit gedeelte - als je HTML / CSS niet begrijpt, raad ik je ten zeerste aan om van de vele uitstekende tutorials op deze website te beginnen om mee te beginnen. Maak een nieuw bestand met de naam style.css en vul het volgende in; dit zal alle pagina's stylen die we tot nu toe hebben gemaakt.

    * marge: 0; opvulling: 0;  body font-family: Trebuchet MS;  a color: # 000;  a: hover, a: active, a: visited text-decoration: none;  #main width: 780px; marge: 0 auto; margin-top: 50px; opvulling: 10px; rand: 1px vast #CCC; achtergrondkleur: #EEE;  vormveldset border: 0;  form fieldset p br clear: left;  label margin-top: 5px; weergave: blok; breedte: 100 px; opvulling: 0; zweven: links;  invoer font-family: Trebuchet MS; rand: 1px vast #CCC; margin-bottom: 5px; achtergrondkleur: #FFF; opvulling: 2px;  input: hover border: 1px solid # 222; achtergrondkleur: #EEE; 

    Laten we nu een paar screenshots bekijken van hoe ons uiteindelijke project eruit zou moeten zien:

    Het login-formulier.

    Het ledengedeelte.

    Het registratieformulier.

    En tenslotte…

    En dat is het! U hebt nu een ledengedeelte dat u op uw site kunt gebruiken. Ik zie veel mensen hun hoofd schudden en schreeuwen naar hun beeldschermen dat dat geen nut voor hen heeft - je hebt gelijk. Maar wat ik hoop dat elke beginneling tot PHP heeft geleerd, is de basis voor het gebruik van een database en het gebruik van sessies om informatie op te slaan. De essentiële vaardigheden om een ​​webtoepassing te maken.

    • Abonneer u op de NETTUTS RSS-feed voor meer dagelijkse webontwikkelingen, tuts en artikelen.