amikor weboldalakat készít a Való Világ számára, elengedhetetlen egy egyszerű regisztrációs űrlap. Az internet gyakorlatilag a tagsági webhelyeken épül fel. Tehát a php tagrendszer bemutató sorozatom részeként létrehozunk egy egyszerű regisztrációs űrlapot a php – ben.
elég gyors és könnyen írható a semmiből, ez az egyszerű regisztrációs űrlap lehetővé teszi, hogy minden felhasználó regisztráljon csak egy felhasználónevet, e-mailt és jelszót, de könnyen hozzáadhat egy e-mailt, ha akart.
egy nagyon egyszerű áttekintést a forráskód a php regisztrációs oldal ez:
<?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>
Hogyan készítsünk egy egyszerű regisztrációs űrlapot php-ben
- hozzon létre egy adatbázist a regisztrációs űrlaphoz
- készítse el az egyszerű regisztrációs űrlapot HTML/CSS formátumban
- csatlakozzon a MySQL adatbázishoz php használatával
- feldolgozza a regisztrációs űrlapot bemenet
- új felhasználói fiókok hozzáadása az adatbázishoz
1.lépés: adatbázis létrehozása a regisztrációs űrlaphoz
gyakran előfordul, hogy a weboldal készítésének első lépése az adatbázis létrehozása. Természetesen valószínűleg később módosítania kell az adatbázisát. De beállítása az adatbázis első, kapsz egy nagy kiindulási pont
létrehozunk egy egyszerű adatbázis tárolja az összes felhasználói fiók adatait, beleértve a felhasználónevét és jelszavát. Menj előre, és jelentkezzen be a phpMyAdmin vezérlőpultjára a szerveren. (ha még nem ismeri a phpMyAdmin-t, nézze meg az intro to phpMyAdmin cikket)
adatbázis mezők a php tagsági rendszerünkhöz
minden adatbázisnak szüksége van egy névre, és mivel szeretem az életet egyszerűvé tenni, hívjuk adatbázisunkat “felhasználóknak”.
megjegyzés: feltételezem, hogy már legalább alapvető ismeretekkel rendelkezik a phpMyAdmin használatáról és a MySQL adatbázisok működéséről. Ha nem, akkor itt olvashatja el a phpMyAdmin alapjait vagy a MySQL adatbázis-műveletet HeyTuts.com. (ezek a linkek új lapokon nyílnak meg)
mivel egyszerű regisztrációs űrlapot készítünk, csak 7 mezőre lesz szükségünk az adatbázisunkban. Így azonnal elegendő alapvető funkcionalitást kapunk. De még mindig extra funkciókat adhat hozzá, mint például a jelszó-visszaállítási űrlap.
- id-ez minden felhasználó számára egyedi azonosító lesz. Meg kell győződnünk arról, hogy az id mező egész szám, és az elsődleges kulcs automatikus növekménye. Ez kötelező!!! Ha bonyolultabb tagrendszerek felé halad, a felhasználó fiókazonosítójának használata rendkívül egyszerűvé teszi az adatbázis-rekordok összekapcsolását.
- felhasználónév – ennek magától értetődőnek kell lennie. Én meg az enyém, hogy egy 50 karakter varchar. Nagyon ritkán a felhasználó 10-15 karakternél hosszabb felhasználónevet akar, ezért 50-nek kell gondoskodnia róla. De ez lehetőséget ad arra is, hogy beállítsa a kívánt felhasználónév hosszát a php-kódban.
- e – mail-a felhasználó e-mail címe. Állítsa be, hogy egy 100 karakter varchar.
- jelszó – néhány alapvető titkosítást fogunk használni a felhasználók jelszavaihoz. Tehát egy 50 karakterből álló varchar szépen megteszi. Később látni fogja, hogy az md5 () függvény segítségével létrehozunk egy alapvető jelszó-kivonatot az egyszerű biztonság érdekében.
- date_created – ez egy idő() értéket tárol, amikor a felhasználó létrehozta a fiókját.
- last_login – a rekord frissítésével nyomon követhetjük, hogy a felhasználó mikor jelentkezett be utoljára. Ismét lesz az idő () függvény.
- állapot – a fiók aktiválási állapotának nyomon követése. Ezt az értéket ellenőrizhetjük, hogy a felhasználó aktiválta-e a fiókját vagy sem, és ennek alapján engedélyezzük számukra a bejelentkezést, vagy értesítjük őket a fiók aktiválásáról.
2.lépés: készítse el az egyszerű regisztrációs űrlapot HTML/CSS formátumban
az adatbázis beállításával létrehozhatjuk a tényleges regisztrációs űrlapot, amelyet a felhasználó a fiók létrehozásához használ. Mint szinte minden weboldal űrlap, HTML-vel és CSS-vel is elkészítjük.
hozzon létre egy regisztert.php fájl a webkiszolgálón
felhívom a regisztrációs űrlap oldal regisztrációját.php, így megy előre, és hozza létre ezt a fájlt a web szerver. Azt javaslom, hogy ezt az egész tagrendszert hozza létre a localhost webszerverén XAMPP (külső link) segítségével.
hozzon létre egy alapvető navigációs fejlécet
ennek a php tagrendszer-oktatóanyagnak a fejléce is egyszerű lesz. Néhány linkkel csak néhány szuper alapvető navigációhoz. Az alábbiakban a regisztráció alapvető oldalbeállítása található.php fájl.
<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>
készítse el a tényleges regisztrációs űrlapot
most létrehozhatjuk azt az űrlapot, amelyet a felhasználó látni fog és kölcsönhatásba lép. Ha visszagondol az adatbázisunk beállítására, csak 3 mezőnk van, amelyeket a felhasználó megadhat: a felhasználónév, a jelszó és az e-mail cím. Ne felejtsen el hozzáadni néhány szöveget a címkék megjelenítéséhez, amelyekhez mezőkre van szükség.
a helyes gyakorlatból szeretnék hozzáadni egy további jelszómezőt a felhasználó számára a jelszó megerősítéséhez. Győződjön meg róla, hogy elmondja a felhasználóknak a szükséges jelszó erősségét.
ahhoz, hogy biztonságos jelszót kapjunk a felhasználói fiókhoz,legalább 5 karakter hosszú lesz. Ezek közül legalább egy különleges karakterrel:!#$.,:;(). Ez nem adja meg a legbiztonságosabb jelszó használatát, de ötletet ad arról, hogyan kényszerítheti az erősebb jelszavakat később.
<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>
ha észreveszed, a regisztrációs űrlapunkat egy egyszerű táblázatba helyezem, hogy mindent szépen összehangoljak a felhasználó számára. Itt fontos megjegyezni az űrlapműveletet (más néven POST), a szövegmezők nevét és a Küldés gomb nevét.
mindezek a mezőnevek döntő fontosságúak a háttér-parancsfájlban az adatok lekéréséhez, miután a felhasználó benyújtotta az űrlapot. Vegye figyelembe az űrlapmódszert, a POST-ot is, amely elrejti az űrlap adatait a felhasználótól, ahelyett, hogy elküldené azokat az url-re, mint például a GET will.
hibaüzenet megjelenítése, ha szükséges
a regisztrációs oldalon Ön és felhasználója hasznosnak találja a hibaüzenet tényleges megjelenítését. Amikor szükséges. A navigáció alá és a regisztrációs űrlap fölé helyezem. Ez az üzenet képet ad a felhasználónak arról, hogy mit tett rosszul, és ki kell javítania, mielőtt létrehozhatja fiókját.
alapvetően két változót fogok létrehozni, egyet $success és $error_msg néven. Egyszerű ellenőrzést fogunk végezni e két változó beállítására. Annak alapján, hogy be vannak-e állítva (más néven létrehozva és hozzárendelve egy értéket), megjelenítjük az alkalmazandó hibaüzenetet.
<?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?>
az ötlet az, hogy ha hiba lép fel az adatok feldolgozása közben, beállíthatjuk a hibaüzenetet a $error_msg változóban, majd megjelenik a felhasználó számára, és stropoljuk az információk feldolgozását. Ha a Felhasználó sikeresen létrehozza a fiókját, akkor a $success értéket true értékre állítjuk, és a sikerüzenetet zöld színnel jelenítjük meg (mert a zöld mindig jó, igazam van??).
3. lépés: Csatlakozás a MySQL adatbázis segítségével php
most már kap néhány hátsó php kódot. Mielőtt bármilyen MySQL adatbázis-műveletet elvégeznénk, csatlakoznia kell az adatbázishoz. A legtöbb webhely külön konfigurációban vagy Kapcsolati szkriptben csatlakozik az adatbázishoz. Tehát ugyanezt fogjuk tenni.
hozzon létre egy új php script nevű connect.a php-t ugyanabba a könyvtárba kell menteni, mint a regisztert.php fájl.
<?php $conn = mysqli_connect("localhost", "root", "password", "code_projects");?>
4.lépés: dolgozza fel a regisztrációs űrlapot input
most le a hús és a burgonya ezen egyszerű regisztrációs űrlapot. A php kód az űrlap feldolgozásához a benyújtás után.
mivel már létrehoztuk az adatbázis-kapcsolat szkriptünket, a require_once() függvény segítségével tölthetjük be a kapcsolati szkriptet.
<?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?>
ezután a php munkamenetek segítségével nyomon követjük, hogy a felhasználók be vannak-e jelentkezve vagy sem. Egyelőre csak ellenőrizni fogjuk, hogy a munkamenet változók be vannak-e állítva. A bejelentkezési űrlap bemutatójában megismerjük a munkamenet változóinak beállítását. Ha a felhasználó be van jelentkezve, akkor átirányítjuk őket a kezdőlapra.
Szerezd meg az összes regisztrációs űrlap adatait
miután készen állunk az összes űrlapadatra, először ellenőrizzük, hogy a Küldés gombra kattintottunk-e (más néven az űrlapot elküldték). Ha ez volt, akkor az összes űrlapadatot változókban tároljuk. Ha az űrlapot nem nyújtották be, akkor nem teszünk semmit, csak megjelenítjük az űrlapot a felhasználónak.
mivel űrlap típusú bejegyzést használunk, a POST adatokat a php kódunkkal kell megkapnunk. Az űrlap összes “közzétett” adata a $_POST tömb változóban lesz. Ezután az űrlap elem nevét használhatja tömbkulcsként. Lehetővé teszi számunkra, hogy megkapjuk a keresett konkrét adatokat, mint ez:
if (isset($_POST)){ // get all of the form data $username = $_POST; $email = $_POST; $passwd = $_POST; $passwd_again = $_POST; // next code block }
végezze el az űrlapadatok alapvető ellenőrzését
ezután ellenőrizzük, hogy a felhasználó kitöltötte-e a regisztrációs űrlapot. Az e-mail cím, a felhasználónév és a jelszavak ellenőrzése. Ha megbizonyosodunk arról, hogy minden változó nem üres karakterlánc, akkor ez azt jelenti, hogy van benne valamilyen szöveg, igaz?
ezután ellenőrizzük, hogy a jelszó és a Jelszó megerősítése pontosan ugyanaz a szöveg. Sapkák meg minden. Ha egymás után három egyenlőségjelet használunk (ez===) az if utasításunkban, a karakterláncok esetegyezésűek.
alapvetően, ha összehasonlítjuk a” hello “- t a” HeLLo ” – val két egyenlő jel használatával, akkor valódi eredményt kapunk. Ez azért van, mert a kód azt mondja: “igen hello és hello ugyanaz a szó”. De ha három egyenlő jel segítségével hasonlítjuk össze őket, a kódunk olyan, mint “nem! Állj meg ott. Ezek a szavak nem egyeznek. Nagy hamis!”Van értelme?
// 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.';
ezután megbizonyosodhatunk arról, hogy a jelszavak megfelelnek-e szilárdsági követelményeinknek. Ohhh olyan lenyűgöző kritériumaink a biztonságos jelszóhoz. Legalább 5 karakter hosszú, és legalább egy speciális karaktert használ.
a strlen() használatával biztosítjuk, hogy elég hosszú legyen ahhoz, hogy megfeleljen az 5 karakter minimumnak. Nyugi. Ezután a strpbrk () függvény segítségével ellenőrizhetjük, hogy vannak-e a listában szereplő speciális karakterek. Ez a függvény false értéket ad vissza, ha a speciális karakterek egyike sem található. Visszaad egy karakterláncot, ha vannak ilyenek.
többet olvashat a funkcióról a php.net hivatkozás. Alapvetően ez csak egy szuper gyors és egyszerű módja annak, hogy ellenőrizze a karakterláncban létező speciális karakterek listáját. Mert a létezőn kívül nem igazán törődünk velük.
5. lépés: új felhasználói fiókok hozzáadása az adatbázishoz
most, hogy tudjuk, hogy minden űrlapadatunk jó és használatra kész, elkezdhetjük az adatbázis-ellenőrzéseket. Először ellenőrizzük, hogy a felhasználónév már szerepel-e az adatbázisban. Ha nulla rekord van visszaadva, akkor a felhasználónév nincs az adatbázisban. Ha bármi mást visszaad, akkor a felhasználónevet veszik.
ezután létre kell hoznunk néhány extra változót a többi véletlenszerű adat tárolásához, amelyeket a létrehozni kívánt felhasználói fiók adatbázis-rekordjában kell tárolnunk. A kódblokk alatt az egyes változók magyarázata található.
jogi nyilatkozat: szeretném kiemelni, hogy ennek a bemutatónak a céljára nem használunk nagyon összetett jelszó titkosítást. Egyszerűen azért csinálom, hogy ne tároljam a jelszót egyszerű szövegben (soha ne csináld ezt, ez csak rossz). Ha azt szeretnénk, hogy megtanulják, hogyan kell csinálni valami jelentős és biztonságos, nézd meg a jelszó biztonsági bemutató. Részletesen ismertetem a biztonságosabb jelszavak létrehozásának és tárolásának különböző módszereit a php használatával.
// 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 – szükségünk van egy helytartóra az automatikus növelő azonosítóhoz, amelyet az adatbázis hozzárendel.
- $passwd – néhány alapvető titkosítást adunk a felhasználó jelszavához az md5() hash használatával
- $date_created – a time() függvény segítségével időbélyegzőt kaphatunk abban a pillanatban, amikor a felhasználó létrehozza a fiókját. Ezt később felhasználhatjuk a date()
- $last_login használatával történő megjelenítéshez – később ezt fogjuk használni a felhasználó bejelentkezésének nyomon követésére. Nullára állítjuk, mert még nem jelentkeztek be.
- $status – ezzel a mezővel nyomon követhetjük a fiókok állapotát, például aktiválhatjuk e-mailben vagy letilthatjuk adminisztrátori célokra, vagy valóban mi lebeg a hajón. Alapértelmezés szerint 1 (egy) értékre állítom, ami aktív fiókot jelent, és azonnal bejelentkezhet.
most végre létrehozhatjuk a felhasználói fiók adatbázisrekordját. Beszúrási lekérdezés segítségével nagyon gondosan felsorolhatjuk az összes adatbázis-rekord információt.
ha segítségre van szüksége a lekérdezések működésének alapjainak megértésében. Vagy akár általános adatbázis-műveletek, ellenőrizze a mysqli adatbázis-műveletekről szóló másik bemutatómat.
miután beillesztettük a rekordot, jó gyakorlatként meg fogom győződni arról, hogy a rekordot valóban hozzáadták-e (mert soha nem lehet tudni, hogy valamilyen hiba történt.) Mivel korábban megbizonyosodtunk arról, hogy a felhasználónév nem létezik, most, ha ellenőrizzük, hogy létezik-e, és találunk-e hozzá rendelt rekordot, tudjuk, hogy új fiókunkat létrehoztuk az adatbázisban. Végül csak a $ success változót állítottuk true-ra, mert a felhasználó befejezte a regisztrációt és létrehozta a fiókját.
// 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.';
utolsó simítások a regisztrációs űrlapot
most a teljes nyilvántartást.php kód írva, megnézhetjük a webböngészőből. Akkor is kipróbálni, és hozzon létre saját fiókot az új regisztrációs oldalon!
az egyszerű regisztrációs űrlap létrehozásával a php tagrendszer következő része a bejelentkezési űrlap létrehozása. mert mi értelme van egy regisztrációs űrlapnak a fiók létrehozásához, ha a felhasználók nem tudnak bejelentkezni a fiókjukba?