Szenvedélytelen index php regisztrációs űrlap nézet. Egyszerű felhasználói regisztrációs rendszer készítése PHP és MySQL nyelven. Így fog működni a szuperegyszerű rendszerünk

A webhelyek nagy része rendelkezik regisztrációs űrlappal, amellyel a felhasználók regisztrálhatnak, és így valamilyen kiváltságban részesülhetnek a webhelyen belül. Ebben a cikkben látni fogjuk, hogyan hozhat létre regisztrációs űrlapot PHP-ben és MySQL-ben.

Egyszerű címkéket és táblázatos címkéket fogunk használni a Sign-Up.html weboldal kialakításához. Kezdjük:

1. lista: signup.html

Regisztrációs űrlap

Név
Email
felhasználónév
Jelszó
Jelszó megerősítése


1.ábra:

A sing-in.html weboldal leírása:

Amint az 1. ábrán látható, van egy regisztrációs űrlap, és kevés adatot kér a felhasználóról. Ezek azok a gyakori adatok, amelyeket bármely webhely kér a felhasználóitól vagy látogatóitól, hogy hozzanak létre azonosítót és jelszót. Táblázat címkét használtunk, mert a weboldal űrlapmezőit az 1. ábrán látható módon rendezett formában szeretnénk megjeleníteni. Ez annyira egyszerűnek tűnik, mert még nem használtunk rajta CSS-stílust, most használjunk CSS-stílusokat, és kapcsoljuk össze a CSS stílusú fájl sing-up.html weboldallal.

2. lista: style.css

/*CSS-fájl a regisztrációs weboldalhoz*/ #body-color( background-color:#6699CC; ) #Sign-Up( background-image:url("sign-up.png"); background-size:500px 500px ; háttér-ismétlés: nincs ismétlés; háttér-csatolás: rögzített; háttér-pozíció: középen; margó-felső: 150 képpont; margó-alsó: 150 képpont; margó-alsó: 150 képpont; jobb margó: 150 képpont; bal margó: 450 képpont; kitöltés: 9 képpont 35 képpont; ) #button(szegélysugár:10px; szélesség:100px; magasság:40px; háttér:#FF00FF; font-weight:bold; font-size:20px; )

3. lista: Kapcsolja össze a style.css fájlt a sign-up.html weboldallal



2. ábra:

A style.css fájl leírása:

A külső CSS-fájlban néhány stílust használtunk, amelyek újnak tűnhetnek az Ön számára. Mivel egy képet használtunk a háttérben, és beállítottuk a weboldal közepére. Amely könnyen használhatóvá vált a html div tag segítségével. Mivel három div tag azonosítót használtunk. #button, #sing-up és #body-color, és minden CSS-stílust alkalmaztunk rajtuk, és most láthatod a 2. ábrát, hogy mennyire szép és vonzó. Sok más CSS-stílust is használhat, például 2D és 3D CSS-stílusokat. Szebben fog kinézni, mint most.

Mindezen egyszerű munkák után most létrehozunk egy adatbázist és egy táblát az összes adat tárolására az új felhasználók adatbázisában. Mielőtt létrehoznánk egy táblázatot, tudnunk kell, mit kérünk a felhasználótól. Az űrlap kialakítása során elkészítjük a regisztrációs űrlapnak megfelelő táblázatot, amelyet az 1. és 2. ábrán láthat.

3. lista: Tábla lekérdezése a MySQL-ben

TÁBLÁZAT LÉTREHOZÁSA Webhelyfelhasználók (felhasználói azonosító int(9) NOT NULL auto_increment, teljes név VARCHAR(50) NOT NULL, felhasználónév VARCHAR(40) NOT NULL, email VARCHAR(40) NOT NULL, VARCHAR(40) NOT NULL(us PRIMARY) átadás );

A 3. lista leírása:

Egy dolgot tudnod kell, hogy ha nem rendelkezik MySQL lehetőséggel a lekérdezés használatához, akkor kövesse a korábbi cikkemet a . erről a linkről megértheti a telepítést és a követelményeket. És hogyan használhatjuk.

A lista 3 lekérdezésében mindazokat a dolgokat használtuk, amelyeket mi szükség valamire a regisztrációs űrlapot. Mivel létezik e-mail, teljes név, jelszó és felhasználónév változók. Ezek a változók tárolják a felhasználó adatait, amelyeket a 2. ábrán látható regisztrációs űrlapon ad meg a regisztrációhoz.

Mindezek után a PHP programozással fogunk dolgozni, ami egy szerver oldali programozási nyelv. Ezért kell kapcsolatot létesíteni az adatbázissal.

4. lista: Adatbázis kapcsolat

A 4. lista leírása:

Kapcsolatot hoztunk létre az adatbázis és a weboldalaink között. De ha nem tudod, hogy működik-e vagy sem, akkor használj még egy dolgot az utolsó 5. ellenőrzőlistában.

5. lista: az adatbázis-kapcsolat kapcsolatának ellenőrzése

5. leírási lista:

Az 5. listában csak azt próbáltam megmutatni, hogy ellenőrizheti és megerősítheti az adatbázis és a PHP közötti kapcsolatot. És még egy dolog, hogy nem fogjuk használni a Listing 5 kódot a regisztrációs weboldalunkon. Mert ez csak azért van, hogy megértse, hogyan ellenőrizheti a MySQL-kapcsolatot.

Most egy PHP programozó alkalmazást fogunk írni, amely először ellenőrzi a felhasználó elérhetőségét, majd eltárolja a felhasználót, ha új felhasználó a weboldalon.

6. lista: connectivity-sign-up.php

A connectivity-sign-up.php leírása

Ebben a PHP alkalmazásban a legegyszerűbb módszert használtam a weboldalak regisztrációs alkalmazásának létrehozására. Amint láthatja, először létrehozunk egy kapcsolatot, például a 4-es listát. Ezután két függvényt használtunk, az első a SignUP() függvény, amelyet az if utasítás hív meg az utolsó alkalmazásból, ahol először megerősíti a regisztráció megnyomását. gomb. Ha megnyomja, akkor meghívja a SingUp függvényt, és ez a függvény a SELECT lekérdezésével lekéri az adatokat, és összehasonlítja azokat a felhasználó által jelenleg bevitt felhasználónévvel és e-mail-címmel. Ha a felhasználónév és az e-mail cím már szerepel az adatbázisban, akkor azt fogja mondani, hogy elnézést, már regisztrált

Ha a felhasználó új, mivel a jelenlegi felhasználóneve és e-mail azonosítója nem szerepel az adatbázisban, akkor az If utasítás meghívja a NewUser()-t, ahol az új felhasználó összes információját tárolja. A felhasználó pedig a weboldal részévé válik.



3. ábra

A 3. ábrán a felhasználó adatokat ad meg a regisztrációhoz, ha a felhasználó az adatbázis rekordjai szerint régi felhasználója ennek a weboldalnak. Tehát a weboldalon megjelenik egy üzenet, hogy a felhasználó már regisztrált, ha a felhasználó új, így a weboldalon megjelenik egy üzenet, hogy a felhasználó regisztrációja befejeződött.



4. ábra:

Mivel a regisztrációs űrlapon adatokat vittünk be (4. ábra), az adatbázis szerint, hogy melyik felhasználónevet és email címet adtuk meg a regisztrációs űrlapon, az már benne van az adatbázisban. Tehát meg kell próbálnunk egy új felhasználónevet és e-mail címet, hogy új azonosítóval és jelszóval regisztrálhassunk.



5. ábra

Az 5. ábrán látható, hogy megerősít bennünket, hogy melyik felhasználónevet és e-mail-azonosítót adta meg. Mindkettő nincs jelen az adatbázis rekordjaiban. Így most egy új azonosító és jelszó jön létre, és a felhasználó használhatja új azonosítóját és jelszavát, hogy legközelebb bejelentkezzen.

Következtetés:

Ebben a cikkben megtanultuk a regisztrációs weboldal létrehozásának legegyszerűbb módját. Azt is megtudtuk, hogyan kezeli az adatbázist, ha PHP-t és MySQL-t használunk. Igyekeztem alapvető ismereteket adni a weboldal regisztrációs funkcióiról. Hogyan működik a hátoldalon, és hogyan változtathatjuk meg a megjelenését az előlapon. Bármilyen kérdés esetén ne habozzon és kommentálja.

Ebből a cikkből megtudhatja, hogyan hozhat létre regisztrációs és engedélyezési űrlapot HTML, JavaScript, PHP és MySql használatával. Az ilyen űrlapokat szinte minden webhelyen használják, függetlenül annak típusától. A fórumhoz, az online áruházhoz és a közösségi hálózatok(például Facebook, Twiter, Odnoklassniki) és sok más típusú webhelyen.

Ha van webhelye a helyi számítógépén, akkor remélem, már van . Semmi sem fog működni nélküle.

Táblázat létrehozása az adatbázisban

A felhasználói regisztráció megvalósításához először egy adatbázisra van szükségünk. Ha már megvan, akkor nagyszerű, ellenkező esetben létre kell hozni. A cikkben részletesen elmagyarázom, hogyan kell ezt megtenni.

Tehát van egy adatbázisunk (rövidítve DB), most létre kell hoznunk egy táblát felhasználókat melybe felvesszük regisztrált felhasználóinkat.

Azt is elmagyaráztam a cikkben, hogyan lehet táblázatot létrehozni az adatbázisban. A táblázat létrehozása előtt meg kell határoznunk, hogy milyen mezőket tartalmazzon. Ezek a mezők megegyeznek a regisztrációs űrlap mezőivel.

Szóval, gondoltuk, elképzeltük, milyen mezők lesznek az űrlapunkon, és létrehoztunk egy táblázatot felhasználókat ezekkel a mezőkkel:

  • id- Azonosító. Terület id az adatbázis minden táblájában szerepelnie kell.
  • keresztnév- Hogy mentse a nevet.
  • vezetéknév- A vezetéknév mentéséhez.
  • email- A postacím mentéséhez. Bejelentkezésként az e-mailt fogjuk használni, ezért ennek a mezőnek egyedinek kell lennie, azaz EGYEDI indexszel kell rendelkeznie.
  • email_status- Egy mező, amely jelzi, hogy a levél megerősítve van-e vagy sem. Ha a levél visszaigazolásra kerül, akkor annak értéke 1 lesz, ellenkező esetben 0. Alapértelmezés szerint ennek a mezőnek az értéke 0.
  • Jelszó- A jelszó mentéséhez.

Minden "VARCHAR" típusú mezőnek alapértelmezés szerint NULL-nak kell lennie.


Ha azt szeretné, hogy a regisztrációs űrlapon több mező legyen, itt is felveheti azokat.

Ez az, a mi asztalunk felhasználókat kész. Térjünk át a következő lépésre.

Adatbázis kapcsolat

Elkészítettük az adatbázist, most csatlakoznunk kell hozzá. A MySQLi PHP kiterjesztéssel fogunk csatlakozni.

Webhelyünk mappájában hozzon létre egy fájlt a névvel dbconnect.php, és beleírjuk a következő szkriptet:

Ez a fájl dbconnect.phpössze kell kapcsolni az űrlapkezelőkkel.

Ügyeljen a változóra $cím_webhely, itt feltüntettem a tesztoldalam nevét, amin dolgozni fogok. Ennek megfelelően adja meg webhelye nevét.

A webhely szerkezete

Most pedig vessünk egy pillantást oldalunk HTML szerkezetére.

Helyezze át a webhely fejlécét és láblécét külön fájlokhoz, header.phpÉs lábléc.php. Minden oldalon összekapcsoljuk őket. Mégpedig a fő (fájl index.php), a regisztrációs űrlapot tartalmazó oldalra (fájl form_register.php) és az engedélyezési űrlapot tartalmazó oldalon (fájl form_auth.php).

Blokkolás linkjeinkkel, bejegyzésÉs felhatalmazást, adja hozzá a webhely fejlécéhez, hogy azok minden oldalon megjelenjenek. Egy link fog belépni a regisztrációs űrlapot tartalmazó oldalra (fájl form_register.php), a másikat pedig az engedélyezési űrlapot tartalmazó oldalra (fájl form_auth.php).

A header.php fájl tartalma:

Oldalunk neve

Ennek eredményeként a főoldalunk így néz ki:


Természetesen lehet, hogy az Ön webhelye teljesen más szerkezetű, de ez most nem fontos számunkra. A lényeg az, hogy vannak linkek (gombok) a regisztrációhoz és az engedélyezéshez.

Most pedig térjünk át a regisztrációs űrlapra. Amint azt már megértette, a fájl tartalmazza form_register.php.

Megyünk az adatbázisba (a phpMyAdminban), megnyitjuk a táblaszerkezetet felhasználókatés nézzük meg, milyen mezőkre van szükségünk. Tehát szükségünk van egy mezőre a vezeték- és utónév megadásához, egy mezőre a postai cím megadására (Email) és egy mezőre a jelszó megadására. És biztonsági okokból egy captcha beviteli mezőt adunk hozzá.

A szerveren a regisztrációs űrlap feldolgozása következtében különböző hibák léphetnek fel, amelyek miatt a felhasználó nem tud regisztrálni. Ezért annak érdekében, hogy a felhasználó megértse, miért sikertelen a regisztráció, üzeneteket kell megjelenítenie számára ezekről a hibákról.

Az űrlap megjelenítése előtt hozzáadunk egy blokkot a munkamenet hibaüzeneteinek megjelenítéséhez.

És még egy pillanat, ha a felhasználó már jogosult, és az érdeklődés kedvéért közvetlenül belép a regisztrációs oldalra úgy, hogy ír a böngésző címsorába website_url/form_register.php, akkor ebben az esetben a regisztrációs űrlap helyett azt a címet jelenítjük meg, hogy már regisztrálva van.

Általában a fájl kódja form_register.phpígy kaptuk:

Már regisztráltál

A böngészőben a regisztrációs oldal így néz ki:


A kötelező attribútummal minden mezőt kötelezővé tettünk.

Ügyeljen a regisztrációs űrlap kódjára, ahol a captcha megjelenik:


A kép src attribútumának értékében megadtuk a fájl elérési útját captcha.php, amely ezt a captcha-t generálja.

Nézzük meg a fájl kódját captcha.php:

A kód jól meg van írva, ezért csak egy pontra koncentrálok.

Egy függvény belsejében imageTtfText(), a betűtípus elérési útja meg van adva verdana.ttf. Tehát ahhoz, hogy a captcha megfelelően működjön, létre kell hoznunk egy mappát betűtípusok, és helyezze oda a fontfájlt verdana.ttf. Megtalálhatja és letöltheti az internetről, vagy átveheti az archívumból a cikk anyagaival együtt.

Elkészültünk a HTML szerkezettel, ideje továbblépni.

E-mail ellenőrzése a jQuery segítségével

Bármely űrlapon érvényesíteni kell a bevitt adatokat, mind a kliens oldalon (JavaScript, jQuery használatával), mind a szerver oldalon.

Különös figyelmet kell fordítanunk az E-mail mezőre. Nagyon fontos, hogy a megadott email cím érvényes legyen.

Ehhez a beviteli mezőhöz az email (type="email") típust állítjuk be, ez egy kicsit figyelmeztet minket a helytelen formátumok ellen. Ez azonban nem elég, mert a böngésző által rendelkezésünkre bocsátott kódellenőr segítségével könnyedén megváltoztathatja az attribútum értékét. típus Val vel email tovább szöveg, és ennyi, a csekkünk a továbbiakban nem lesz érvényes.


És ebben az esetben megbízhatóbb ellenőrzést kell végeznünk. Ehhez a JavaScript jQuery könyvtárát fogjuk használni.

A jQuery könyvtár csatlakoztatásához a fájlban header.php címkék között , a záró címke előtt , add hozzá ezt a sort:

Közvetlenül e sor után adja hozzá az e-mail-ellenőrző kódot. Itt hozzáadjuk a beírt jelszó hosszának ellenőrzésére szolgáló kódot. Legalább 6 karakter hosszúságúnak kell lennie.

A szkript segítségével ellenőrizzük a megadott e-mail cím érvényességét. Ha a felhasználó rossz e-mailt írt be, akkor erről hibát jelenítünk meg, és kikapcsoljuk az űrlap elküldés gombját. Ha minden rendben van, akkor eltávolítjuk a hibát és aktiváljuk az űrlap elküldés gombját.

És így, az ügyféloldali űrlapellenőrzéssel készen is vagyunk. Most már elküldhetjük a szerverre, ahol szintén elvégzünk pár ellenőrzést és adatokat adunk az adatbázishoz.

Felhasználó regisztráció

Az űrlapot feldolgozásra a fájlba küldjük register.php, a POST módszerrel. Ennek a kezelőfájlnak az attribútumértékben megadott neve akció. A küldési mód pedig az attribútumértékben van megadva módszer.

Nyissa meg ezt a fájlt register.phpés az első dolgunk, hogy írjunk egy munkamenet-indító függvényt, és belefoglaljuk a korábban létrehozott fájlt dbconnect.php(Ebben a fájlban hoztunk létre kapcsolatot az adatbázissal). És mégis, azonnal deklarálja a sejteket error_messagesÉs siker_üzenetek a munkamenet globális tömbjében. BAN BEN hibaüzenetek minden hibaüzenetet rögzítünk, ami az űrlap feldolgozása során, illetve az in siker_üzenetekÍrjunk boldog üzeneteket.

Mielőtt folytatnánk, ellenőriznünk kell, hogy az űrlapot beküldtük-e egyáltalán. A támadó megnézheti egy attribútum értékét akció az űrlapról, és megtudja, melyik fájl dolgozza fel ezt az űrlapot. És felmerülhet az ötlet, hogy közvetlenül ehhez a fájlhoz lépjen a következő cím beírásával a böngésző címsorába: http://site_site/register.php

Tehát ellenőriznünk kell, hogy van-e olyan cella a globális POST tömbben, amelynek neve megegyezik az űrlapon található "Regisztráció" gombunk nevével. Így ellenőrizzük, hogy megnyomták-e a „Regisztráció” gombot vagy sem.

Ha egy támadó megpróbál közvetlenül erre a fájlra lépni, hibaüzenetet kap. Emlékeztetlek arra, hogy a $address_site változó tartalmazza a webhely nevét, és ez deklarálva lett a fájlban dbconnect.php.

A munkamenet captcha értéke a generálás során került hozzáadásra a fájlban captcha.php. Emlékeztetőül még egyszer megmutatom ezt a kódrészletet a fájlból captcha.php, ahol a captcha értéke hozzáadódik a munkamenethez:

Most pedig térjünk rá magára a tesztre. Fájlban register.php, az if blokkon belül, ahol ellenőrizzük, hogy megnyomták-e a "Regisztráció" gombot, vagy inkább, ahol a " // (1) A következő kódrészlet helye"mi írunk:

//A kapott captcha ellenőrzése //Szóközök levágása a karakterlánc elejétől és végétől $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Hasonlítsa össze a kapott értéket a munkamenet értékével. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Ha a captcha nem megfelelő, akkor térjen vissza a felhasználót a regisztrációs oldalra, és ott egy hibaüzenet jelenik meg, hogy rossz captcha-t írt be. $error_message = "

Hiba! Rossz captcha-t adott meg

"; // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] = $error_message; // A felhasználó visszaadása a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Permanently Moved"); header("Hely: " .$address_site ."/form_register.php"); //Stop the script exit(); ) // (2) Hely a következő kódrészlethez )else( //Ha a captcha nem került átadásra, vagy üres, lépjen ki ("

Hiba! Nincs ellenőrző kód, vagyis a captcha kód. Mehet a főoldalra.

"); }

Ezután a POST tömbből kapott adatokat kell feldolgoznunk. Először is ellenőriznünk kell a globális POST tömb tartalmát, vagyis hogy vannak-e ott olyan cellák, amelyek neve megegyezik az űrlapunk beviteli mezőinek nevével.

Ha a cella létezik, akkor ebből a cellából vágjuk le a szóközöket a karakterlánc elejétől és végétől, ellenkező esetben a felhasználót visszairányítjuk a regisztrációs űrlapot tartalmazó oldalra.

Továbbá a szóközök levágása után egy karakterláncot adunk a változóhoz, és ellenőrizzük, hogy ez a változó üres-e, ha nem üres, akkor lépjünk tovább, ellenkező esetben a regisztrációs űrlappal visszairányítjuk a felhasználót az oldalra.

Illessze be ezt a kódot a megadott helyre // (2) A következő kódrészlet helye".

/* Ellenőrizze, hogy a $_POST globális tömb tartalmaz-e az űrlapból beküldött adatokat, és a beküldött adatokat reguláris változókba foglalja.*/ if(isset($_POST["first_name"]))( // Szóközök levágása az elejétől és végétől a string $first_name = trim($_POST["first_name"]); //Ellenőrizze, hogy a változó üres-e if(!empty($first_name))( // A biztonság kedvéért konvertálja át a speciális karaktereket HTML entitásokká $first_name = htmlspecialchars( $first_name, ENT_QUOTES) ; )else( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Adja meg nevét

Hiányzó névmező

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["last_name"]))( // Szóközök levágása a string elejétől és végétől $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // A biztonság kedvéért konvertálja a speciális karaktereket HTML entitásokká $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Írja be vezetéknevét

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Hiányzó névmező

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["email"]))( // Szóközök levágása a karakterlánc elejétől és végétől $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) A kód helye az e-mail cím formátumának és egyediségének ellenőrzéséhez )else( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["hibaüzenetek" ] .= "

Írd be az email címed

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["jelszó"]))( // Szóközök levágása a karakterlánc elejétől és végétől $password = trim($_POST["jelszó"]); if(!empty($jelszó)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //A jelszó titkosítása $password = md5($password."top_secret"); )else( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Írd be a jelszavad

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) // (4) A felhasználó adatbázishoz való hozzáadásához szükséges kód helye

A terület kiemelten fontos. email. Ellenőriznünk kell a kapott levelezési cím formátumát és egyediségét az adatbázisban. Vagyis, hogy regisztrálva van-e már egy felhasználó ugyanazzal az e-mail címmel.

a megadott helyen" // (3) Kód helye a postai cím formátumának és egyediségének ellenőrzésére" add hozzá a következő kódot:

//Ellenőrizze a kapott e-mail cím formátumát a $reg_email = "/^**@(+(*+)*\.)++/i" reguláris kifejezéssel; //Ha a kapott e-mail cím formátuma nem egyezik a reguláris kifejezéssel if(!preg_match($reg_email, $email))( // Mentse el a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Érvénytelen e-mail-címet adott meg

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); ) // Ellenőrizze, hogy van-e már ilyen cím az adatbázisban $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); Ha van pontosan egy sor, akkor az ezzel az e-mail címmel rendelkező felhasználó már regisztrálva van if($result_query->num_rows == 1)( //Ha az eredmény nem false if(($row = $result_query->fetch_assoc()) ! = false) ( // Mentse a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Az ezzel az e-mail címmel rendelkező felhasználó már regisztrált

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301, véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); )else( //Mentsd el a hibaüzenetet a munkamenethez .$_SESSION["error_messages"] .= "

Hiba az adatbázis lekérdezésében

"; //A felhasználó visszaadása a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); ) /* a kijelölés bezárása */ $ result_query-> close(); //A szkript leállítása exit(); ) /* a kijelölés bezárása */ $result_query->close();

És készen vagyunk az összes ellenőrzéssel, ideje hozzáadni a felhasználót az adatbázishoz. a megadott helyen" // (4) A felhasználó adatbázishoz adásához szükséges kód helye" add hozzá a következő kódot:

//Lekérdezés egy felhasználó hozzáadásához az adatbázishoz $result_query_insert = $mysqli->query("INSERT INTO `users` (keresztnév, vezetéknév, email, jelszó) VALUES ("".$first_name."", "".$last_name ." ", "".$email."", "".$password."")"); if(!$result_query_insert)( // Mentse a hibaüzenetet a munkamenetbe. $_SESSION["error_messages"] .= "

Hibakérés egy felhasználó hozzáadásához az adatbázishoz

"; //A felhasználó visszaküldése a regisztrációs oldal fejlécéhez("HTTP/1.1 301 Véglegesen áthelyezve"); header("Hely: ".$address_site."/form_register.php"); //Stop the script exit(); )else( $_SESSION["siker_üzenetek"] = "

A regisztráció sikeresen lezárult!!!
Most már bejelentkezhet felhasználónevével és jelszavával.

"; //Küldje el a felhasználót a bejelentkezési oldal fejlécére("HTTP/1.1 301 Permanently Moved Permanently"); header("Hely: ".$address_site."/form_auth.php"); ) /* Végezze el a kérést */ $ result_query_insert-> close(); //Az adatbázis-kapcsolat bezárása $mysqli->close();

Ha hiba történik a felhasználó adatbázishoz való felvételére vonatkozó kérésben, a hibáról üzenetet adunk a munkamenethez, és visszaküldjük a felhasználót a regisztrációs oldalra.

Egyébként ha minden jól ment, akkor üzenetet is adunk a munkamenethez, de az már kellemesebb, mégpedig azt mondjuk a felhasználónak, hogy sikeres volt a regisztráció. És átirányítjuk az engedélyezési űrlapot tartalmazó oldalra.

Az e-mail cím formátumának és a jelszó hosszának ellenőrzésére szolgáló szkript a fájlban található header.php, így ez az űrlap mezőit is érinti.

A munkamenet is elindul a fájlban header.php, tehát a fájlban form_auth.php a munkamenetet nem kell elindítani, mert hibát kapunk.


Mint mondtam, itt is működik az e-mail cím formátumát és a jelszó hosszát ellenőrző szkript. Ezért ha a felhasználó rossz email címet vagy rövid jelszót ír be, azonnal hibaüzenetet kap. Egy gomb bejönni inaktívvá válik.

A hibák kijavítása után a gombot bejönni aktívvá válik, és a felhasználó elküldheti az űrlapot a szervernek, ahol azt feldolgozzák.

Felhasználói jogosultság

Érték tulajdonításához akció az engedélyezési űrlapon van egy fájl auth.php, ami azt jelenti, hogy az űrlap ebben a fájlban kerül feldolgozásra.

Tehát nyissuk meg a fájlt auth.phpés írja be a kódot az engedélyezési űrlap feldolgozásához. Az első dolog, hogy elindítja a munkamenetet, és belefoglalja a fájlt dbconnect.php az adatbázishoz való csatlakozáshoz.

Ha rákattint a kilépés linkre az oldalról, belépünk a fájlba logout.php, ahol egyszerűen megsemmisítjük a munkamenetből származó e-mail címet és jelszót tartalmazó cellákat. Ezt követően visszaküldjük a felhasználót arra az oldalra, amelyen a linkre kattintott kijárat.

Fájlkód logout.php:

Ez minden. Most már tudja, hogyan helyezze el és dolgozza fel a felhasználói regisztrációs és engedélyezési űrlapokat webhelyén. Ezek az űrlapok szinte minden webhelyen megtalálhatók, így minden programozónak tudnia kell, hogyan hozhatja létre őket.

Megtanultuk a bemeneti adatok érvényesítését is, mind kliens oldalon (böngészőben, JavaScript, jQuery használatával), mind szerver oldalon (PHP nyelv használatával). Azt is megtanultuk, hogyan kell végrehajtani a kilépési eljárást az oldalról.

Minden szkript tesztelve van és működik. Erről a linkről letöltheti a kis oldal fájljait tartalmazó archívumot.

A jövőben írok egy cikket, ahol leírom. És tervezek egy cikket is írni, ahol elmagyarázom (az oldal újratöltése nélkül). Tehát, hogy értesüljön az új cikkek megjelenéséről, feliratkozhat az oldalamra.

Ha kérdése van, forduljon bizalommal, ha hibát észlel a cikkben, kérem jelezze felém.

Óraterv (5. rész):

  • HTML-struktúra létrehozása az engedélyezési űrlaphoz
  • A kapott adatokat feldolgozzuk
  • Az oldal fejlécében megjelenítjük a felhasználó üdvözlését
  • Tetszett a cikk?

    Reg.ru: domainek és tárhely

    A legnagyobb regisztrátor és tárhelyszolgáltató Oroszországban.

    Több mint 2 millió domain név működik.

    Promóció, levelezés domainhez, megoldások üzleti célokra.

    Világszerte több mint 700 ezer ügyfél választotta már.

    *Vigye az egeret a görgetés szüneteltetéséhez.

    Vissza előre

    Egyszerű felhasználói regisztrációs rendszer készítése PHP és MySQL nyelven

    A regisztrációs rendszer létrehozása sok munka. Kódot kell írnia, amely ellenőrzi az e-mail címeket, küld egy regisztrációt megerősítő e-mailt, érvényesíti az űrlap többi mezőjét és még sok mást.

    És még azután is, hogy mindezt megírtad, a felhasználók nem szívesen regisztrálnak, mert. ez némi erőfeszítést igényel részükről.

    Ebben az oktatóanyagban egy nagyon egyszerű bejelentkezési rendszert hozunk létre, amelyhez egyáltalán nincs szükség jelszavak tárolására! Az eredmény könnyen módosítható és hozzáadható egy már meglévő PHP webhelyhez. Szeretné tudni, hogyan működik? Olvassa el lent.



    A szuperegyszerű rendszerünk így működne:

    Összevonjuk az engedélyezési űrlapot és a regisztrációt. Ezen az űrlapon lesz egy mező az e-mail cím megadására és egy regisztrációs gomb;
    - A mező email címmel történő kitöltésekor a Regisztráció gombra kattintva új felhasználóról rekord készül, de csak abban az esetben, ha a megadott email cím nem található az adatbázisban.

    Ezt követően egy bizonyos véletlenszerű egyedi karakterkészlet (token) jön létre, amelyet a felhasználó által megadott e-mailre küldenek egy hivatkozás formájában, amely 10 percig releváns lesz;
    - A linkre kattintva a felhasználó a weboldalunkra lép. A rendszer meghatározza a token jelenlétét és engedélyezi a felhasználót;

    Ennek a megközelítésnek az előnyei:

    Nincs szükség jelszavak tárolására és mezők érvényesítésére;
    - Nincs szükség jelszó-helyreállításra, titkos kérdésekre stb.;
    - Attól a pillanattól kezdve, hogy egy felhasználó regisztrál/bejelentkezett, mindig biztos lehet benne, hogy ez a felhasználó az Ön hozzáférési zónájában lesz (az e-mail cím igaz);
    - Hihetetlenül egyszerű regisztrációs folyamat;

    Hibák:

    Felhasználói fiók biztonsága. Ha valaki hozzáfér a felhasználó leveleihez, be tud jelentkezni.
    - Az e-mail nem biztonságos, és lehallgatható. Ne feledje, hogy ez a kérdés akkor is releváns, ha a jelszót elfelejtették és vissza kell állítani, vagy bármely olyan jogosultsági rendszerben, amely nem használ HTTPS-t az adatátvitelhez (bejelentkezés / jelszó);
    - Amíg szükség szerint beállítja a levelezőszervert, fennáll annak a lehetősége, hogy az engedélyezési hivatkozásokat tartalmazó üzenetek spambe kerülnek;

    Rendszerünk előnyeit és hátrányait összevetve elmondható, hogy a rendszer jól használható (maximális kényelem a végfelhasználó számára), ugyanakkor alacsony biztonsági mutatója van.

    Javasoljuk tehát, hogy olyan fórumokon és szolgáltatásokon való regisztrációhoz használják, amelyek nem működnek fontos információkkal.

    Hogyan kell használni ezt a rendszert

    Abban az esetben, ha csak a rendszer segítségével kell engedélyeznie a felhasználókat a webhelyén, és nem akarja szétszedni ezt a leckét, a következőket kell tennie:

    Le kell töltenie a leckéhez csatolt forrásfájlokat
    - Keresse meg az archívumban a tables.sql fájlt, és importálja az adatbázisába a phpMyAdmin importálási opciójával. Alternatív módszer: nyissa meg ezt a fájlt egy szövegszerkesztővel, másolja ki az SQL lekérdezést és futtassa;
    - Nyissa meg az include/main.php-t és töltse ki az adatbázisához való csatlakozás beállításait (adja meg az adatbázishoz való csatlakozáshoz szükséges felhasználót és jelszót, valamint az adatbázis gazdagépét és nevét). Ugyanebben a fájlban meg kell adni egy e-mail címet is, amely a rendszer által küldött üzenetek eredeti címe lesz. Egyes gazdagépek mindaddig blokkolják a kimenő e-maileket, amíg az űrlapon egy valódi e-mail cím nem jelenik meg, amelyet a gazdagép vezérlőpultjáról hoztak létre, ezért adja meg a valódi címet;
    - Töltse fel az összes index.php , protected.php fájlt és eszközt, valamint a mappákat FTP-n keresztül a gazdagépére;
    - Adja hozzá az alábbi kódot minden PHP-oldalhoz, ahol meg kívánja jeleníteni az engedélyezési űrlapot;

    Require_once "includes/main.php"; $user = new User(); if(!$user->loggedIn())( redirect("index.php"); )
    - Kész!

    Akit érdekel, hogyan működik mindez, olvassa el lent!

    Az első lépés a HTM-kód írása az engedélyezési űrlaphoz. Ez a kód az index.php fájlban található. Ez a fájl tartalmazza az űrlapadatokat és az engedélyezési rendszer egyéb hasznos funkcióit kezelő PHP kódot is. Erről többet megtudhat az alábbi PHP-kód áttekintése részben.

    index.php

    Oktatóanyag: Szuper egyszerű regisztrációs rendszer PHP-vel és MySQL-lel Bejelentkezés vagy regisztráció

    Adja meg e-mail címét fent és küldjük
    bejelentkezési link.

    Bejelentkezés/Regisztrálás

    A fejrészben (a és a címkék között) felvettem a főbb stílusokat (ezek nem kerülnek elemzésre ebben az oktatóanyagban, így Ön is megnézheti őket.eszközök/css/style.css mappa). A záró tag előtt beillesztettem a jQuery könyvtárat és a script.js fájlt, amit alább írunk és elemezünk.


    JavaScript

    A jQuery egy funkcióval nyomon követi a "Regisztráció/Bejelentkezés" gomb állapotát e.preventDefault()és AJAX kéréseket küld. A szerver válaszától függően egy adott üzenetet jelenít meg, és meghatározza a további műveleteket /

    eszközök/js/script.js

    $(function()( var form = $("#login-register"); form.on("submit", function(e)( if(form.is(".betöltés, .loggedIn"))( return false ; ) var email = form.find("input").val(), messageHolder = form.find("span"); e.preventDefault(); $.post(this.action, (e-mail: email), function (m)( if(m.error)( form.addClass("hiba"); messageHolder.text(m.message); ) else( form.removeClass("hiba").addClass("bejelentkezett"); messageHolder. text(m.message); ) )); )); $(dokumentum).ajaxStart(function()( form.addClass("betöltés"); )); $(dokumentum).ajaxComplete(function()( form. removeClass("betöltés"); )); ));

    hozzáadva az űrlaphoz, hogy megjelenítse az AJAX kérés aktuális állapotát (ez a metódusoknak köszönhető ajaxStart()) És ajaxComplete(), amelyet a fájl vége felé találhat).

    Ez az osztály egy pörgő animált gif fájlt mutat (mintha arra utalna nekünk, hogy a kérés feldolgozás alatt áll), és jelzőként is működik, amely megakadályozza az űrlap újbóli elküldését (ha már egyszer rákattintott a regisztráció gombra). A .loggedIn osztály egy másik jelző – az e-mail küldésekor beállítva. Ez a jelző azonnal blokkol minden további műveletet az űrlapon.

    Adatbázis séma

    Hihetetlenül egyszerű naplózó rendszerünk 2 MySQL táblát használ (az SQL kód a tables.sql fájlban található). Az első a felhasználói fiókokról tárol adatokat. A második a bejelentkezési kísérletek számáról tárol információkat.


    Felhasználói tábla séma.

    A rendszer nem használ jelszavakat, ez az ábrán látható. Ezen is látható a token oszlop a token_validity oszlop mellett a tokenekkel. A token be van állítva, amint a felhasználó csatlakozik a rendszerhez, beállítja az e-mailjét, hogy üzenetet küldjön (erről egy kicsit bővebben a következő blokkban). A token_validity oszlop 10 perccel későbbre állítja be az időt, amely után a token már nem érvényes.


    Táblázatséma, amely számolja az engedélyezési kísérletek számát.

    Mindkét táblázatban az IP-cím feldolgozott formában, az ip2long függvény használatával, egy egész mezőben van tárolva.

    Most írhatunk egy PHP kódot. A rendszer fő funkciói a User.class.php osztályhoz vannak rendelve, amelyet alább láthat.

    Ez az osztály aktívan használja az idorm-ot (docs), ezek a könyvtárak minimálisak szükséges eszközöket, adatbázisokkal való munkához. Kezeli az adatbázis-hozzáférést, a token generálást és az érvényesítést. Ez egy egyszerű felület, amely megkönnyíti a regisztrációs rendszer csatlakoztatását webhelyéhez, ha az PHP-t használ.

    user.class.php

    Class User( // Privát ORM case . Ezt keresi a tokent * @return User. Visszaadja a User függvény értékét */ public static function findByToken($token)( // keresse meg a tokent az adatbázisban, és ellenőrizze, hogy a helyes időbélyeg van-e beállítva $ result = ORM::for_table("reg_users") ->where ("token", $token) ->where_raw("token_validity > NOW()") ->find_one(); if(!$eredmény)( return false; ) return new User($result); ) /** * Felhasználó engedélyezése vagy regisztrálása * @param string $email.Felhasználó e-mail címe * @return User */ public static function loginOrRegister($email)( // Ha egy ilyen felhasználó már létezik, adja vissza a User függvény értékét az adatbázisban tárolt megadott e-mail címről if(User::exists($email))( return new User($email); ) // Ellenkező esetben hozzon létre egy új felhasználót a adatbázis és visszaadja a User::create függvény értékét a megadott e-mailből return User::create($email ); ) /** * Új felhasználó létrehozása és mentése az adatbázisba * @param string $email. Felhasználó e-mail címe * @return User */ private static function create($email)( // Regisztráljon egy új felhasználót, és adja vissza a User függvény eredményét ezekből az értékekből>$result = ORM::for_table("reg_users")- >create(); $result->email = $email; $eredmény->save(); return new User($result); ) /** * Ellenőrizze, hogy létezik-e ilyen felhasználó az adatbázisban, és adja vissza a logikai értékét változó * @param string $email. Felhasználó email címe * @return logikai érték */ nyilvános statikus függvény létezik($email)( // Létezik a felhasználó az adatbázisban? $result = ORM::for_table("reg_users") ->where("email", $email ) ->count(); return $result == 1; ) /** * Új felhasználói objektum létrehozása * @param példány $param ORM , id, email vagy 0 * @return User */ public function __construct($param = null) ( if($param instanceof ORM)( // ORM ellenőrzés sikeres $this->orm = $param; ) else if(is_string($param))( // E-mail ellenőrzés sikeres $this->orm = ORM:: for_table ("reg_users") ->where("email", $param) ->find_one(); ) else( $id = 0; if(is_numeric($param))( // a felhasználói azonosító átadva a $ értékét param változó $id = $param; ) else if(isset($_SESSION["loginid"]))( // Egyébként lásd a session $id = $_SESSION["loginid"]; ) $this->orm = ORM:: for_table( "reg_users") ->where("id", $id) ->find_one(); ) ) /** * Hozzon létre egy új SHA1 jogosultsági tokent, írja be az adatbázisba, és adja vissza az értékét * @return string * / public function generateToken( )( // Tokent generál egy jogosult felhasználónak és mentse el az adatbázisba $token = sha1($this->email.time().rand(0, 1000000)); // Tárolja a tokent az adatbázisban // És jelölje meg érvényesnek csak a következő 10 percre $this->orm->set("token", $token); $this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")"); $this->orm->save(); return $token; ) /** * A felhasználó engedélyezése * @return void */ public function login()( // A felhasználó megjelölése bejelentkezettként $_SESSION["loginid"] = $this->orm->id; // Frissítse az értéket a last_login adatbázis mező $this->orm->set_expr("utolsó_bejelentkezés", "NOW()"); $this->orm->save(); ) /** * A munkamenet megsemmisítése és a felhasználó kijelentkezése * @return void */ public function kijelentkezés ()( $_SESSION = array(); unset($_SESSION); ) /** * Ellenőrizze, hogy a felhasználó bejelentkezett-e * @return logikai érték */ public function loggedIn()( return isset($ this->orm->id) && $_SESSION["loginid"] == $this->orm->id; ) /** * Ellenőrizze, hogy a felhasználó rendszergazda-e * @return logikai érték */ public function isAdmin() ( return $this->rank() = = "adminisztrátor"; ) /** * Felhasználói típus keresése, lehet rendszergazda vagy normál * @return string */ public function rank()( if($this->orm- >rank == 1)( return "administrator "; ) return "regular"; ) /** * Egy módszer, amely lehetővé teszi a felhasználó személyes információinak megszerzését *a User objektum tulajdonságaiként * @param string $key A neve a hozzáférést kapó tulajdonság * @return vegyes */ public function __get($key)( if(isset($this->orm->$key))( return $this->orm->$key; ) return null; ) )

    A tokeneket az SHA1 algoritmus segítségével állítják elő és tárolják az adatbázisban. A MySQL időfüggvényeit használom egy 10 perces token lejárati korlát beállítására.

    Amikor a token átmegy az érvényesítési eljáráson, közvetlenül közöljük a kezelővel, hogy csak azokat a tokeneket vesszük figyelembe, amelyek még nem jártak le, a token_validity oszlopban tárolva.

    Kérjük, vegye figyelembe, hogy a varázslatos módszert használom __kap docs könyvtárat a fájl végén, hogy elfogja a hozzáférést a User objektum tulajdonságaihoz.

    Ez lehetővé teszi az adatbázisban tárolt információk elérését a $user->email, $user->token és egyéb tulajdonságok segítségével.A következő kódrészletben megnézzük, hogyan használhatjuk ezeket az osztályokat példaként.


    Védett oldal

    Egy másik fájl, amely hasznos és szükséges funkciókat tárol, a functions.php fájl. Számos úgynevezett helper található itt - helper funkciók, amelyek lehetővé teszik, hogy tisztább és olvashatóbb kódokat hozzon létre más fájlokban.

    függvények.php

    függvény send_email($feladó, $címzett, $tárgy, $üzenet)( // Segítő, amely e-mailt küld $headers = "MIME-verzió: 1.0" . "\r\n"; $headers .= "Tartalom típusa: szöveg /plain; charset=utf-8" . "\r\n"; $headers .= "Feladó: ".$feladó . "\r\n"; levél visszaküldése ($címzett, $tárgy, $üzenet, $fejlécek ); ) függvény get_page_url()( // PHP fájl URL lekérése $url = "http".(empty($_SERVER["HTTPS"])?"":"s")."://".$_SERVER [ "SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")( $url.= $_SERVER["REQUEST_URI"]; ) else( $url. = $_SERVER["PATH_INFO"]; ) return $url; ) function rate_limit($ip, $limit_hour = 20, $limit_10_min = 10)( // Bejelentkezési kísérletek száma az elmúlt órában ezen az IP-címen $count_hour = ORM: :for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"1:00")") ->count(); // Bejelentkezési kísérletek száma az elmúlt 10 percben ezen az IP-címen $count_10_min = ORM::for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long( $ ip))) ->hol_raw("ts > SUBTIME(NOW(),"0:10")") ->count(); if($count_hour > $limit_hour || $count_10_min > $limit_10_min)( throw new Exception("Túl sok bejelentkezési kísérlet!"); ) ) function rate_limit_tick($ip, $email)( // Új bejegyzés létrehozása a táblázatban bejelentkezési kísérletek számlálása $login_attempt = ORM::for_table("reg_login_attempt")->create(); $login_attempt->email = $email; $login_attempt->ip = sprintf("%u", ip2long($ip) ); $login_attempt->save(); ) function redirect($url)( header("Hely: $url"); exit; )

    Funkciók rate_limitÉs rate_limit_tick figyeli az engedélyezési kísérletek számát az első próbálkozás óta eltelt időre vonatkozóan. A bejelentkezési kísérlet az adatbázisban a reg_login_attempt oszlopban kerül rögzítésre. Ezeket a függvényeket az űrlapadatok feldolgozása és elküldése során hívják meg, amint az a következő kódrészletből látható.

    Az alábbi kód az index.php fájlból származik, és az űrlap beküldését kezeli. JSON-választ ad vissza, amelyet viszont a jQuery dolgoz fel a már tárgyalt property/js/script.js fájlban.

    index.php

    Tri (!isset($_POST["e-mail"]) || !filter_var($_POST["e-mail"], FILTER_VALIDATE_EMAIL))( throw new Exception("Adjon meg egy érvényes e-mailt."); ) // Ellenőrizze. a felhasználó bejelentkezhet, túllépte a megengedett kapcsolatok számát? (további információért a functions.php fájl) rate_limit($_SERVER["REMOTE_ADDR"]); // Rögzítse ezt a bejelentkezési kísérletet rate_limit_tick($_SERVER["REMOTE_ADDR"] , $ _POST["email"]); // E-mail küldése a felhasználónak $message = ""; $email = $_POST["email"]; $subject = "Az Ön bejelentkezési hivatkozása"; if(!User:: létezik($email) )( $subject = "Köszönjük a regisztrációt!"; $message = "Köszönjük, hogy regisztrált oldalunkra!\n\n"; ) // Felhasználó engedélyezésének vagy regisztrálásának kísérlete $user = Felhasználó ::loginOrRegister($_POST[ "email"]); $message.= "Erről az URL-ről tud bejelentkezni:\n"; $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "A hivatkozás 10 perc múlva automatikusan lejár."; $eredmény = email_küldés($e-mailtől, $_POST["e-mail"], $tárgy, $üzenet); if(!$result)( throw new Exception("Hiba történt az e-mail küldésekor. Próbáld újra."); ) die(json_encode(array("message" => "Köszönjük! Küldtünk egy linket Ellenőrizd a spam mappát is.")))); ) ) catch(Kivétel $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage() )))))))

    Sikeres hitelesítés/regisztráció után a fenti kód egy linket küld a felhasználónak az engedélyezéshez. A token elérhetővé válik, mert a metódus változóként adja át a generált hivatkozásban $_GET tkn jelzővel

    index.php

    If(isset($_GET["tkn"]))( // Érvényes ez a token az engedélyezéshez? $user = User::findByToken($_GET["tkn"]); if($user)( // Igen , Átirányítás a védett oldalra $user->login(); redirect("protected.php"); ) // Nem, a token nem érvényes. Átirányítás az oldalra a bejelentkezési/regisztrációs űrlappal redirect("index. php ");)

    $user->login()

    létrehozza a munkamenethez szükséges változókat, így a felhasználó az oldal következő oldalait tekintve folyamatosan jogosult marad.

    Hasonlóképpen megtörténik a rendszerből való kilépéshez szükséges függvény feldolgozása.

    index.php

    If(isset($_GET["kijelentkezés"]))( $user = new User(); if($user->loggedIn())( $user->logout(); ) redirect("index.php") ;)

    A kód végén ismét átirányítottam az index.php-re, tehát a paraméter ?logout=1 URL által átadott nem kötelező.

    Az index.php fájlunk továbbiakat igényel. védelem – nem akarjuk, hogy azok, akik valaha is bejelentkeztek a rendszerbe, újra láthassák a regisztrációs űrlapot. Erre a célra a módszert használjuk $user->loggedIn().

    index.php

    $user = new User(); if($user->loggedIn())( redirect("protected.php"); )

    Végül itt van egy kódrészlet, amely lehetővé teszi webhelye oldalainak védelmét, és csak engedélyezés után teszi elérhetővé.

    védett.php

    // A webhely minden oldalának biztonságossá tételéhez adjon meg egy // main.php fájlt, és hozzon létre egy új felhasználói objektumot. Ez milyen egyszerű! request_once "includes/main.php"; $user = new User(); if(!$user->loggedIn())( redirect("index.php"); )

    Ezen ellenőrzés után biztos lehet benne, hogy a felhasználót sikeresen engedélyezték. Az adatbázisban tárolt információkat az objektumtulajdonságok segítségével is elérheti $user. A felhasználó e-mail-címének és állapotának megjelenítéséhez használja ezt a kódot:

    echo "Az Ön e-mailje: ".$user->email; echo "Az Ön rangja: ".$user->rank();

    Módszer rang() itt használatos, mert az adatbázisban általában számok vannak tárolva (0 normál felhasználónál, 1 rendszergazdánál), és ezeket az adatokat át kell alakítanunk olyan állapotokká, amelyekhez tartoznak, amiben ez a módszer segít nekünk.

    Ha egy normál felhasználóból rendszergazdát szeretne tenni, egyszerűen szerkessze a felhasználói bejegyzést a phpMyAdmin (vagy bármely más adatbázisok kezelését lehetővé tevő program) segítségével. Az adminisztrátor státusz nem ad semmilyen jogosultságot, ebben a példában az oldalon megjelenik, hogy rendszergazda vagy – és ennyi.

    De mi a teendő vele - ez az Ön belátása szerint marad, saját maga írhat és állíthat össze olyan kódot, amely bizonyos jogosultságokat és lehetőségeket biztosít a rendszergazdák számára.

    Végeztünk!

    Ezzel a hihetetlenül szuper kvázi egyszerű formával készen is vagyunk! Használhatod a PHP oldalaidban, elég egyszerű. Ön is módosíthatja saját maga, és úgy készítheti el, ahogyan szeretné.

    Az anyagot Denis Malyshok készítette kifejezetten a helyszínre

    P.S. Szeretnél továbblépni a PHP és az OOP elsajátításában? Vessen egy pillantást a prémium oktatóanyagokra a webhelykészítés különböző aspektusairól, beleértve a PHP programozást, valamint egy ingyenes tanfolyamot a PHP CMS rendszerének a semmiből történő felépítéséről az OOP használatával:

    Tetszett az anyag, és szeretnél köszönetet mondani?
    Csak ossza meg barátaival és kollégáival!


    Alapvetően a POST és GET metódusokat használják a paraméterek átadására.
    A fő különbség a POST és a GET metódusok között az információtovábbítás módja. A GET metódusban a paraméterek a címsoron (URL ) keresztül jutnak el, pl. a kérés HTTP fejlécében, míg a POST metódusban a paraméterek a HTTP kérés törzsén keresztül kerülnek átadásra, és semmilyen módon nem jelennek meg a címsorban.

    1. Gombok - Címke

    A címke gombokat hoz létre a weboldalon, és a címke használatával kapott eredményhez hasonlóan viselkedik (a type="button | reset | submit" paraméterrel). Ezzel a címkével ellentétben speciális lehetőségeket kínál a gombok létrehozásához. Például bármilyen HTML elem, beleértve a képeket is, elhelyezhető egy ilyen gombon. A stílusok használatával meghatározhatja a gombok megjelenését a betűtípus, a háttérszín, a méret és egyéb beállítások módosításával.
    Elméletileg a címkét a . által beállított űrlapon belül kell elhelyezni. A böngészők azonban nem jelenítenek meg hibaüzenetet, és megfelelően működnek együtt a címkével, ha az önmagában fordul elő. Ha azonban a gombra kattintás eredményét el kell küldenie a szervernek, akkor azt egy tárolóba kell helyeznie. A záró címke kötelező.
    Lehetőségek:
    letiltva - blokkolja az elem hozzáférését és módosítását.
    típus - gombtípus
    érték – A kiszolgálónak elküldendő vagy sprit segítségével beolvasott gomb értéke.

    Gomb szöveggel
    Paraméter LETILTVA
    Letiltja a hozzáférést és a gomb módosítását. Ebben az esetben szürkén jelenik meg, és a felhasználó nem tudja aktiválni. Ezen túlmenően egy ilyen gomb nem tud fókuszba állítani a Tab billentyű lenyomásával, az egér használatával vagy más módon. Ez a gomb állapota azonban szkripteken keresztül módosítható.

    Aktív gomb Inaktív gomb

    TYPE paraméter
    Megadja a gomb típusát, amely beállítja a viselkedését az űrlapon. Által kinézet a különböző típusú gombok semmiben sem különböznek egymástól, de minden ilyen gombnak megvan a maga funkciója. Alapértelmezett érték: gomb .
    Érvek:
    gomb - Normál gomb.
    reset - Gomb a bevitt űrlapadatok törléséhez és az értékek eredeti állapotba való visszaállításához.

    Küldés – Gomb az űrlapadatok szerverre küldésére.

    Űrlap törlése Űrlap beküldése

    Paraméter VALUE Megadja a kiszolgálónak elküldendő gomb értékét. Egy név=érték pár kerül elküldésre a szervernek, ahol a nevet a címke name paramétere adja meg, az értéket pedig az value paraméter. Az érték megegyezhet a gombon lévő szöveggel, vagy független is lehet. Az érték paramétert az adatok szkripteken keresztüli elérésére is használják.

    Nyomtatvány beküldése

    1.1. Gomb (bemenet típusa=gomb) 1.2. Kép gomb (beviteli típus = kép) Minta gomb

    A képekkel ellátott gombok működésükben hasonlóak a Küldés gombhoz, de ezek egy kép. Ehhez állítsa be a type=image és az src="image.gif" paramétereket.

    Amikor a felhasználó rákattint valahova a képre, a megfelelő űrlapot elküldi a szervernek két további változóval, sub_x és sub_y . A képre kattintó felhasználó koordinátáit tartalmazzák. A tapasztalt programozók észrevehetik, hogy a böngésző által küldött változónevek valójában egy pontot tartalmaznak, nem egy aláhúzást, de a PHP automatikusan átalakítja a pontot aláhúzássá.

    1.3. Űrlapküldés gomb (bevitel típusa=beküldés)

    Űrlap beküldésére szolgál egy szkripthez. Az űrlap beküldésére szolgáló gomb létrehozásakor 2 attribútumot kell megadni: type="submit" és value="Button text" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки. !}


    PHP szkript nem szükséges.

    1.4. Gombok tömbje (beküldés) a művelet lehetőségének kiválasztásához 2. Az űrlap visszaállítása gombja (Reset)

    Ha a visszaállítás gombra ( reset ) kattint, az összes űrlapelem az alapértelmezett attribútumokban beállított állapotba kerül, és az űrlap nem kerül elküldésre.


    PHP szkript nem szükséges.

    3. Jelölőnégyzet

    A jelölőnégyzetek számos lehetőséget kínálnak a felhasználónak, és tetszőleges kiválasztást tesznek lehetővé (egyet sem, egyet vagy többet).

    fehér
    Zöld
    Kék
    Piros
    Fekete

    2. példa
    // az első gombkészlet
    // második gombkészlet
    // harmadik gombkészlet

    5. Szövegmező (szöveg)

    Normál szövegmező létrehozásakor méretű és maximálisan megengedett maximális hosszúságú karakterekkel, a type attribútum szövegre van állítva. Ha az érték paraméter meg van adva, akkor a mezőben a változóban megadott érték jelenik meg. Mező létrehozásakor ne felejtse el megadni a mező nevét, mert ez az attribútum kötelező.

    6. Jelszó megadására szolgáló mező (jelszó)

    Pontosan ugyanaz, mint egy szövegmező, azzal a különbséggel, hogy a felhasználó által beírt karakterek nem jelennek meg a képernyőn.

    7. Rejtett szövegmező (rejtett)

    Lehetővé teszi bizonyos szolgáltatási információk átadását a szkriptnek anélkül, hogy megjelenítené az oldalon.

    8. Legördülő lista (kiválasztás)

    A címke egy legördülő vagy kibontott lista, és egy vagy több sor is kiválasztható egyszerre. De az utoljára kiválasztott gomb értéke átadásra kerül.
    A lista a párosított címkékkel kezdődik. A címkék a lista tartalmát, az érték paraméter pedig a karakterlánc értékét határozza meg. Ha a kiválasztott paraméter meg van adva a címkében, akkor először a sor kerül kiválasztásra. A méret paraméter határozza meg, hogy a lista hány sort foglaljon el. Ha a méret 1 , akkor a lista egy legördülő menü lesz. Ha a többszörös attribútum meg van adva, akkor több elem is kijelölhető a listából. De ezt a sémát gyakorlatilag nem használják, és a méret = 1 esetén nincs értelme.

    Fehér Zöld Kék Piros Fekete

    Ha szükséges egy előre látható sorrendű legördülő menü létrehozása. Például egy lista 2000-től 2050-ig tartó éveket. Ekkor a következő trükköt használjuk.

    9. Többsoros szövegbeviteli mező (textarea)

    A többsoros szövegbeviteli mező lehetővé teszi, hogy ne egy sort, hanem egyszerre több sort is küldjön. Szükség esetén megadható az readonly attribútum, amely tiltja a szöveg szerkesztését, törlését és megváltoztatását, pl. a szöveg csak olvasható lesz. Ha azt szeretné, hogy a szöveg kezdetben többsoros beviteli mezőben jelenjen meg, akkor azt a címkék közé kell helyezni.
    Létezik egy burkolási paraméter – a sorok burkolásának feladata. Lehetséges értékek:
    off - letiltja a sor tördelését;
    virtuals – Sortöréseket jelenít meg, de a beírt szöveget elküldi.
    fizikai - a sortörések eredeti formájukban maradnak.
    Alapértelmezés szerint a címke egy 20 karakter széles és 2 sor hosszú üres mezőt hoz létre.


    Annak érdekében, hogy a html formázás megfigyelhető legyen egy többsoros szövegmezőben (sortördelés a címkével
    vagy
    ), majd használja az nl2br() függvényt:

    Kezdetben beszúrt 1. sor Kezdetben beszúrt 2. sor Kezdetben beszúrt 3. sor

    10. Fájlok letöltésének gombja (böngészés)

    Fájlok feltöltésére szolgál a szerverre. Szövegmező létrehozásakor meg kell adni a típusmező típusát is "fájl"-ként.

    Fájl letöltése:

    Hogyan kommunikál a böngésző a szerverrel

    A HTTP protokoll kevés módszert biztosít. Ez fontos információ. Nincs más mód. A gyakorlatban kettőt használnak:
    A GET az, amikor az adatokat a címsorba továbbítják, például amikor a felhasználó rákattint egy hivatkozásra.
    POST – amikor rákattint egy gombra az űrlapon.

    GET módszer

    A GET metódussal történő adatküldéshez nem kell űrlapot létrehoznia egy HTML oldalon (senki sem tiltja, hogy űrlapokat használjon GET kérésekhez) - elég egy hivatkozás a dokumentumra egy lekérdezési karakterlánc hozzáadásával, amely úgy néz ki mint egy változó = érték. A párok az & jellel vannak összefűzve, a karakterlánc pedig a "? ".
    De nem használhat kulcs = érték párokat, ha csak egy változót kell átadnia - ehhez a kérdőjel után a változó ÉRTÉKÉT (nem a nevét) kell írni.
    A paraméterek ilyen módon történő átadásának az az előnye, hogy azok az ügyfelek, amelyek nem tudják használni a POST módszert (például a keresőmotorok), továbbra is átadhatják a paramétereket a szkriptnek, és a hivatkozás egyszerű követésével visszakereshetik a tartalmat.
    Hátránya, hogy pusztán a címsorban lévő paraméterek megváltoztatásával a felhasználó előre nem látható módon forgathatja a szkriptet, és ez hatalmas biztonsági rést hoz létre, definiálatlan változókkal és register_globals bekapcsolásával, vagy valaki megtudhatja egy fontos érték értékét. változót (például -session ID) egyszerűen a monitor képernyőjére nézve.
    :
    - nyilvános oldalak elérése paraméterátadással (továbbfejlesztett funkcionalitás)
    - a biztonsági szintet nem befolyásoló információk továbbítása
    :
    - védett oldalak eléréséhez paraméterátadással
    - a biztonsági szintet befolyásoló információk továbbítására
    - olyan információk átvitelére, amelyeket a felhasználó nem módosíthat (egyesek az SQL lekérdezések szövegét továbbítják.

    POST módszer

    Csak POST módszerrel küldhet adatokat egy HTML oldalon lévő űrlap használatával. A fő különbség a POST és a GET között az, hogy az adatok nem a kérés fejlécében, hanem a törzsben kerülnek továbbításra, ezért a felhasználó nem látja azokat. A módosítás csak magának az űrlapnak a megváltoztatásával lehetséges.
    Előny:
    - A kérések nagyobb biztonsága és funkcionalitása a POST módszert használó űrlapok használatával.
    Hiba:
    - kevesebb elérhetőség.
    Mire kell használni:
    - nagy mennyiségű információ (szöveg, fájlok ..) átviteléhez;
    - bármilyen fontos információ közvetítésére;
    - a hozzáférés korlátozása (például csak egy űrlapot használjon a navigációhoz - ez a funkció nem érhető el minden robot vagy tartalomgyűjtő számára).
    Amire nem szabad használni:

    A PHP bármilyen böngészővel feltöltött fájlt képes elfogadni. Ez lehetővé teszi szöveges és bináris fájlok feltöltését is. A PHP hitelesítéssel és a fájlrendszer funkcióival együtt teljes mértékben szabályozhatja, hogy ki tölthet fel fájlokat, és mit tegyen a fájllal a feltöltés után.
    A fájlfeltöltési oldal a segítségével valósítható meg speciális forma, ami valahogy így néz ki:

    //Fájl feltöltési űrlap Fájl beküldése:

    A fenti példában " URL" le kell cserélni a PHP szkriptre való hivatkozásra. A MAX _FILE_SIZE rejtett mezőnek (az értéket bájtban kell megadni) meg kell előznie a fájl kiválasztásához szükséges mezőt, értéke pedig az elfogadott fájl megengedett legnagyobb mérete. győződjön meg arról, hogy a multipart/form-data űrlapattribútumokban az enctype=" értéket adta meg, ellenkező esetben a fájlok nem töltődnek fel a szerverre.
    Figyelem
    A MAX _FILE_SIZE beállítás egy ajánlás a böngésző számára, még akkor is, ha a PHP is ellenőrizte ezt a feltételt. Ezt a korlátozást a böngésző oldalon meglehetősen könnyű megkerülni, ezért ne hagyatkozzon erre a funkcióra az összes nagyobb fájl blokkolásához. A PHP maximális méretkorlátját azonban nem lehet megkerülni. Mindenképpen érdemes hozzáadni a MAX _FILE_SIZE űrlapváltozót, mivel ez megakadályozza, hogy a felhasználók feszülten várjanak hatalmas fájlok átvitelekor, csak akkor derüljön ki, hogy a fájl túl nagy, és az átvitel nem történt meg.

    Hogyan határozzuk meg a kérés módját?

    Közvetlen:

    getenv("REQUEST_METHOD");

    a GET vagy a POST értéket adja vissza.

    Melyik módszert kell alkalmazni?

    Ha az űrlapot valamilyen információ kérésére használják, például kereséskor, akkor azt a GET módszerrel kell elküldeni. Az oldal frissítéséhez a könyvjelzők közé helyezheti és/vagy elküldheti a linket egy barátjának.
    Ha az űrlap beküldése következtében adat rögzítésre vagy módosulásra kerül a szerveren, akkor azt POST módszerrel kell elküldeni, és ügyeljen arra, hogy az űrlap feldolgozása után a böngészőt GET módszerrel át kell irányítania. A POST-ra akkor is szükség lehet, ha nagy mennyiségű adatot kell átvinni a szerverre (a GET esetében ez nagyon korlátozott), valamint akkor, ha a továbbított adatok nem jelennek meg a címsorban (bejelentkezéskor és például jelszó).
    Mindenesetre a POST feldolgozása után mindig át kell irányítani a böngészőt valamelyik oldalra, akár ugyanarra, de az űrlapadatok nélkül, hogy az oldal frissítésekor ne írjanak át.

    Hogyan vihetünk át adatokat közvetlenül egy másik fájlba egy PHP program törzséből a GET és POST metódusokkal?

    Példa az adatok egyidejű POST és GET metódussal történő küldésének és a szervertől való válasz fogadásának bemutatására.

    Örömmel teszem közzé itt a PHP és MySQL területén használt tudásomat és technikáimat. Mint mindenki tudja, hogy a PHP és a MySQL a legszélesebb körben használt nyílt forráskódú webhelyek. Napjainkban több millió webhely és alkalmazás használja ezeket az ingyenes szoftvereket. Személy szerint úgy érzem, hogy ez lehet a következő szint a front-end fejlesztők számára a PHP és a MySQL használatával a HTML fejlesztők dinamikusabbá tehetik a webhelyet. Beszéljük meg, hogyan hozzunk létre egy Basic regisztrációs űrlapot PHP-ben adatbázissal, egyszerű és nagyon hasznos egy alapvető webhely dinamikus felhasználói dinamikus regisztrációjához. Minden kreatív implementálhatja az alapstruktúráját a webhelyére. Most Kövesse ezeket az egyszerű lépéseket, és azt fogja tapasztalni, hogy az első dinamikus funkcionális regisztrációs űrlapja az adatbázis bejegyzésével minden űrlapon megtelik.

    1. LÉPÉS: Adatbázis létrehozása az értékek beillesztéséhez Menjen a MySQL-be, az adatbázis létrehozása diák; Qurey OK, 1 sor érintett (0,00 mp) mysql> use student Adatbázis megváltozott mysql> tábla létrehozása student(id int,név varchar(40),e-mail varchar(80),jelszó varchar(40)); Lekérdezés OK, 0 sor érintett (0,05 mp) 2. LÉPÉS: Kezelőfelület kódja, Készítsen HTML-t a regisztrációs űrlap felépítése Készítsen új fájlt register.html később PHP-ben elkészítjük, a szerkezet a következő lenne: REGISZTRÁCIÓS ŰRLAP FELHASZNÁLÓNÉV:
    Email azonosító:
    JELSZÓ:
    VISSZASZÓ:
    3. LÉPÉS: Adatbázis-csatlakozáshoz MySQL használatával Hozzon létre egy connect.php fájlt az alapvető adatbázis-kapcsolathoz használja az alapértelmezett kódot az alábbiak szerint. 4. LÉPÉS: Végül hozzon létre egy register.php oldalt a HTML-oldalon látható összes mező értékének lekéréséhez. Itt a kezelőfelület fejlesztője írj valami saját kódot PHP-ben, olvasd el a kódot és értelmezd ezt az alapstruktúrát soronként, nagyon könnyűnek fogod találni. Következtetés A fent leírt lépésről lépésre követve létrehozható egy alapvető regisztrációs űrlap. Sok szerencsét kívánunk az első PHP-kódhoz Szerezd meg a kódot