az internet ablakok Android

Írjon regisztrációt a PHP-hez. Egyszerű felhasználói regisztrációs rendszer létrehozása a PHP és a MYSQL számára

Annak érdekében, hogy a webhely látogatóit a webhelyen lévő csoportokba oszthassuk, győződjön meg róla, hogy létrehoz egy kis rendszert regisztráció a PHP-vel.. Így, ha hagyományosan osztva a látogatók két csoportban csak véletlenszerű látogatók, és egy kiváltságos csoport a felhasználók, akik ki több értékes információt.

A legtöbb esetben használjon egy egyszerűbb regisztrációs rendszert, amelyet egy fájlban PHP-ben írtak. regisztráljon.php..

Tehát egy kicsit zavart voltunk, és most részletesebben tartsuk a regisztrációs fájlt.

Fájl-regiszter.php.

Annak érdekében, hogy Önt ne vette el az idő tömegét, hozzon létre egy olyan rendszert, amely összegyűjti a felhasználókat, minimális elérhetőségi adatot készít. Ebben az esetben mindenki benyújtja a MySQL adatbázisba. A legmagasabb alapsebesség érdekében létrehozunk egy felhasználói táblát a myisam formátumban és az UTF-8 kódolásban.

Jegyzet! Minden szkriptet írni kell egy kódolásban. Minden webhelyfájl és MySQL adatbázisnak egyetlen kódolásban kell lennie. A leggyakoribb UTF-8 és Windows-1251 kódolások.

Azért, hogy mit kell írnod \u200b\u200bmindent egy kódolásban, később később beszélünk. Időközben vegye be ezt az információt, mint a legszigorúbb szabály létrehozása parancsfájlokat, különben problémák lesznek a parancsfájlok munkájával. Természetesen semmi szörnyű, de egyszerűen lefogy az idő, hogy hibákat találjon a szkriptben.

Hogyan működik a szkript?

Szeretnénk egyszerűsíteni mindent, és gyors eredményt kapunk. Ezért a felhasználóktól csak a bejelentkezés, az e-mail és a jelszavát kapjuk. És védelme a spam robotok ellen, telepítsen egy kis CAPTCHA-t. Ellenkező esetben minden fiú a londoni ír egy kis robot elemző, aki kitölti a teljes adatbázis mésszel felhasználók pár perc alatt, és örül az ő zsenialitása és büntetlenül.

Itt van a forgatókönyv. Minden egy fájlban van írva. regisztráljon.php.:

! "; // piros kérdőjel $ Sha \u003d $ sh. "Scripts / Pro /"; // elérési út a fő mappa $ bg \u003d `bgcolor \u003d" # e1ffeb "; // Háttérszínvonalak?\u003e Példa a regisztrációs parancsfájl-regiszter.php style.css

Ebben az esetben a forgatókönyv magamra hivatkozik. És a rögzített adatok formája és kezelése. Felhívom a figyelmet arra, hogy a fájlt a ZIP archívuma tömöríti, és tartalmazza a Configuration File Config.php, a Felhasználói adatbázis-dump fájl, a segédfunkciók funkciót tartalmazó fájl, a stílusfájl stílusa.css és a Register.php fájl maga. Továbbá több fájl, amely felelős a munkakörülmények munkájáért és generálásáért.

Reg.ru: Domainek és hosting

A legnagyobb felvevő és hosting szolgáltató Oroszországban.

Több mint 2 millió domainnév a karbantartáshoz.

Promóció, postai küldemények, üzleti megoldások.

Több mint 700 ezer ügyfelet világszerte már választottak.

* Egér át a görgetés felfüggesztéséhez.

Előre halad

Egyszerű felhasználói regisztrációs rendszer létrehozása a PHP és a MYSQL számára

A regisztrációs rendszer létrehozása nagy munka. Meg kell írni egy kódot, amely végrehajtja az e-mail címét, üzenetet küld az e-mail visszaigazolást, valamint ellátja az érvényesítési a fennmaradó űrlapmezőket és még sok más.

És még miután írtál mindezt, a felhasználók vonakodnak, mert Ez bizonyos erőfeszítéseket igényel a részükre.

Ebben a leckében egy nagyon egyszerű regisztrációs rendszert hozunk létre, amely nem igényel, és általában nem tárolja a jelszavakat! Az eredmény könnyen megváltoztatható és hozzáadható egy meglévő PHP webhelyhez. Szeretné kitalálni, hogyan működik? Olvassa el az alábbiakat.



Íme, hogy a szuper egyszerű rendszerünk hogyan fog működni:

Kombináljuk az engedélyezés és a regisztráció formáját. Ebben az űrlapon lesz egy mező e-mail cím és regisztrációs gomb beviteléhez;
- Az e-mail cím mező kitöltésekor új felhasználót hoznak létre a regisztrációs gombra kattintva, de csak akkor, ha a megadott e-mail cím nem található az adatbázisban.

Ezt követően létrejött egy bizonyos véletlenszerű karakterkészlet (token), amelyet a felhasználó által a hivatkozás formájában megadott felhasználónak küldünk, amely 10 percen belül releváns lesz;
- Linkenként a felhasználó a webhelyünkre megy. A rendszer meghatározza a token jelenlétét, és felhatalmazza a felhasználót;

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

Nincs szükség jelszavak tárolására és a mező érvényesítésére;
- Nincs szükség a jelszó helyreállítása, titkos kérdések stb.;
- Abban a pillanatban, amikor a felhasználó regisztrált / engedélyezett, mindig biztos lehet benne, hogy ez a felhasználó a hozzáférési területen lesz (hogy az e-mail cím igaz);
- hihetetlenül egyszerű regisztrációs folyamat;

Hátrányok:

Felhasználói fiók biztonság. Ha valaki hozzáférhet a levélhez, bejelentkezhet.
- Az e-mail nem védett, és elfogható. Ne feledje, hogy ez a kérdés releváns, és abban az esetben, ha a jelszót elfelejtették, és vissza kell állítani, vagy bármely olyan engedélyrendszerben, amely nem használja a HTTPS-t az adatátvitelhez (bejelentkezés / jelszó);
- Miközben konfigurálja, hogy szüksége van egy levelezőszerverre, esély van arra, hogy az engedélyhez kapcsolódó linkekkel rendelkező üzenetek spam-ban lesznek;

Összehasonlítva rendszerünk előnyeit és hátrányait, azt mondhatjuk, hogy a rendszer magas YUZability (legkényelmesebb a végfelhasználó számára), és ugyanakkor alacsony biztonsági mutatóval rendelkezik.

Tehát használatra kerül felajánlásokra a fórumokon és szolgáltatásokról, amelyek nem működnek fontos információkkal.

A rendszer használata

Abban az esetben, ha csak akkor kell használni a rendszert, hogy engedélyezze a felhasználókat a webhelyén, és nem akarja szétszerelni ezt a leckét a csontokon, ez az, amit meg kell tennie:

A leckehez csatolt forrásokat kell letöltenie
- találjon fájlt az archívumban tables.sql Importálja az adatbázisba a PHPMYADmin importálásával. Alternatív módon: Nyissa meg ezt a fájlt szövegszerkesztő segítségével, másolja az SQL lekérdezést és hajtsa végre azt;
- Nyisd ki tartalmazza / main.php. és töltse ki a kommunikációs beállításokat az adatbázisával (Adja meg a felhasználót és a jelszót, hogy kommunikáljon az alapgal, valamint a bázis fogadójával és nevével). Ugyanebben a fájlban meg kell adnia az e-mailt is, amelyet a rendszer által küldött üzenetek eredeti címének kell használni. Néhány gazda blokkolja a kimenő levelet, míg az űrlap nem adja meg ezt az e-mail címet, amelyet a gazda kezelőpanelből hoztak létre, így adja meg a valós címet;
- Minden fájl betöltése index.php., védett.php. És az eszközöket, és mappákat tartalmaz az FTP-en keresztül a fogadóban;
- Adja hozzá az alábbi kódot az egyes PHP oldalhoz, ahol meg kell jeleníteni az engedélyezési űrlapot;

Igény: _once "magában foglalja / main.php"; $ Felhasználó \u003d új felhasználó (); Ha (! $ user- és gtloggedin ()) (átirányítás ("index.php");)
- Kész!

Azok számára, akik érdeklődnek, hogyan működik - előre az alábbi olvasáshoz!

Az első lépés az engedélyezési űrlap HTM-kódjának megírása. Ez a kód található a fájlban. index.php.. Ez a fájl tartalmaz egy PHP-kódot is, amely az űrlapadatokat és az engedélyezési rendszer egyéb hasznos funkcióit tartalmazza. A PHP-kód felülvizsgálatának megfelelően többet megtudhat az alábbi szakaszban.

index.php.

Tutorial: Szuper egyszerű regisztrációs rendszer PHP & MYSQL-vel

Bejelentkezés vagy regisztráció.

Adja meg e-mail címét, és elküldjük
Ön egy bejelentkezési link.



A fejrészben (a címkék között) és) Csatlakoztattam a fő stílusokat (ebben a leckében nem értik, így láthatod őket. Az eszközök / css / style.css mappa). A zárócímkéhez

Csatlakoztam a jQuery könyvtárat és a script.js fájlt, amelyet az alábbiakban írunk és csodálkozunk.


JavaScript.

a JQuery nyomon követi a "Regisztrálás / engedélyezés" gomb állapotát a funkció használatával e.preventdefault () És elküldi ajax kéréseket. A szerver válaszától függően megjeleníti ezt, vagy az üzenetet, és meghatározza a további műveleteket /

eszközök / js / script.js

$ (Függvény () (VAR Form \u003d $ ("# bejelentkezési regiszter"); form.on ("Submit", funkció (E) (ha (form.is ("forma (" betöltés, .loggedin))) (visszaadja a hamis ;) VAR e-mail \u003d form.find ("bemenet"). Val (), üzenetek \u003d form.find ("span"); e.preventdefault (); $ .Post (this.action, e-mail: e-mail), funkció ( M) (form.addclass ("hiba"); Üzenetek.Text (M.Message);) más (form.removeclass ("hiba"). Addclass ("loggedin"); Üzenetek. Szöveg (M.Message);) );); $ (Dokumentum) .ajaxstart (funkció ();)); $ (dokumentum) .ajaxcomplete (funkció () (forma. Eltávolítás);));));

az AJAX kérés aktuális állapotának megjelenítéséhez adták hozzá (ez a módszerek miatt lehetséges ajaxstart ()) I. ajaxcomplete ()amely közelebb kerülhet a fájl végéhez).

Ez az osztály egy forgó animációs gif fájlt mutat be (mintha a kérés feldolgozása), és olyan zászlóként működik, amely megakadályozza az újbóli küldési formát (amikor a regiszter gombot már megnyomta egyszer). Osztály .bejelentkezve. - Ez egy másik zászló, ha az e-mailt elküldték. Ez a zászló azonnal blokkolja az űrlapot tartalmazó további műveleteket.

Adatbázis séma

Hihetetlenül egyszerű regisztrációs rendszerünk 2 MySQL táblázatot használ (az SQL kód a fájlban van tables.sql). Az első tárolja az adatokat a felhasználói fiókokról. A második tárolja az input kísérletek számát.


Felhasználói tábla áramkör.

A rendszer nem használ jelszavakat, ami látható a diagramban. Láthatja az oszlopot jelképes. az oszlophoz szomszédos tokenekkel token_Valitás. A token telepítve van, amint a felhasználó csatlakozik a rendszerhez, beállítja e-mailjét, hogy üzenetet küldjön (egy kicsit erről a következő blokkban). Oszlop token_Valitás Az időt 10 perccel később állítja be, majd a token megszűnik, hogy releváns legyen.


A táblázat áramkörét, amely figyelembe veszi az engedélyezési kísérletek számát.

Mindkét táblázatban az IP-címet a feldolgozott formában tárolja az integer mező IP2Long funkciójával.

Most írhatunk egy kis PHP kódot. A rendszer fő funkcionalitása az osztályba kerül User.class.php.amit az alábbiakban láthatunk.

Ez az osztály aktívan használja az Idormot (DOCS), ezek a könyvtárak minimálisan szükséges eszközök az adatbázisok működéséhez. Feladja az adatbázishoz való hozzáférést, a tokenek generációját és az érvényesítését. Ez egy egyszerű felület, amely lehetővé teszi, hogy könnyen csatlakoztassa a regisztrációs rendszert a webhelyére, ha PHP-t használ.

User.class.php.

Osztályfelhasználó (// Privát ORM-ügy Privát $ orm; / ** * Keressen egy felhasználót a TOCKEN-en. Csak érvényes tokeneket vesznek figyelembe. A TOKEN-t csak 10 percig generálják * @param String $ token. Ez az kívánt tocken * @return felhasználó. Visszaadja a funkció felhasználói értékét * / Nyilvános statikus funkció FindbyToken ($ token) (// Keressen egy tokenet az adatbázisban, és győződjön meg róla, hogy az aktuális időbélyegző $ eredmény \u003d ORM :: for_table ( REG_USERS ") -\u003e Hol (" token ", $ token) -\u003e ahol_raw (" token_validity\u003e most () ") -\u003e find_one (); ha (! $ Eredmény) (Harse visszaadás) ($ eredmény) ;) / ** * A felhasználó engedélyezése vagy regisztrálása * @param string $ e-mail. Egyéni e-mail cím * @return user * / nyilvános cím ($ e-mail) (// Ha ilyen felhasználó már létezik, adja vissza a felhasználói funkció értékét Az adatbázisban tárolt megadott e-mail címről, ha (a felhasználó :: létezik (: E-mail) ($ e-mail)) (Új felhasználó visszaadása ($ e-mail);) // egyébként új felhasználót hozhat létre TV az adatbázisban, és visszaadja a funkció felhasználói értékét :: Hozzon létre a megadott e-mail visszaadási felhasználónél :: Create ($ e-mail); ) / ** * Hozzon létre egy új felhasználót, és mentse el az adatbázisba * @param string $ e-mail címet. Felhasználói e-mail cím * @return user * / privát statikus funkció létrehozása ($ e-mail) (// Írjon új felhasználót, és adja meg a felhasználói funkció eredményét ezekből az értékekből $ eredmény \u003d ORM :: for_table ("Reg_Users") - \u003e Hozzon létre (); $ eredmény-\u003e e-mail \u003d $ e-mail; $ eredmény -\u003e mentés (); új felhasználó ($ eredmény);) / ** * Ellenőrizze, hogy ilyen felhasználó létezik-e az adatbázisban, és visszaadja a változó értékét A változó * @param string $ e-mail. Egyéni e-mail cím * @return Boolean * / Public Static funkció létezik ($ e-mail) (// Van-e felhasználó az adatbázisban? $ Eredmény \u003d ORM :: for_table ("Reg_Users") -\u003e hol ("email", $ e-mail ) -\u003e szám (); $ $ eredmény \u003d\u003d 1;) / ** * Új felhasználói objektum létrehozása * @param példány $ param orm, id, e-mail vagy 0 * @return felhasználó * / nyilvános funkció __construct ($ param \u003d null) (Ha ($ Param PursoF ORM) (// ORM-ellenőrzés történik $ this-\u003e orm \u003d $ param;), ha (IS_STRING ($ param)) (// e-mail ellenőrzése $ this-\u003e om \u003d om :: for_table ("reg_users") -\u003e hol ("email", $ param) -\u003e find_one ();) más ($ id \u003d 0, ha (IS_NUMERIC ($ param)) (// felhasználói azonosítót továbbítanak az értékre a $ param $ id érték \u003d $ param;) egyébként, ha (BETSET ($ _ SESSESS) ["LOBLEID"])) (// egyébként lásd a $ id \u003d $ _session ["loginid"];) $ this-\u003e orm \u003d ORM :: for_table ("REG_USERS") -\u003e Hol ("ID", $ ID) -\u003e find_one ();)) / ** * új SHA1 engedélyezési token létrehozása, írja Az adatbázisban és visszaadja értékét * @return string * / nyilvános függvény generateen () (// generál egy tokenet egy meghatalmazott felhasználó számára, és mentse el $ token \u003d SHA1 ($ this this-\u003e email.time (). Rand (0 , 1000000))); // mentési tokenek az adatbázisban //, és jelölje meg azt, hogy ez a következő percek közül 10-ben van-e a $ this-\u003e orm-\u003e beállítása ("token", $ token); $ this-\u003e orm-\u003e set_expr (token_valididity "," Addtime (most (), "0:10") "); $ This-\u003e Om-\u003e Mentés (); Vissza $ token; ) / ** * A felhasználó engedélyezése * @return void * / nyilvános funkció bejelentkezés () (// Jelölje meg a felhasználót az engedélyezett $ _session ["loginid"] \u003d $ this-\u003e orm-\u003e id; // Frissítse az értéket A Last_Login Base Field $ this-\u003e om-\u003e set_expr ("last_login", "most ()"); $ this-\u003e orm-\u003e mentés ();) / ** * megsemmisíti a munkamenetet, és elosztja a felhasználót * @return Void * / Public Function Logout () ($ _session \u003d Array (); unset ($ _ _);) / ** * Ellenőrizze, hogy a felhasználó jött * @return Boolean * / Public Function Loggledin () This-\u003e orm-\u003e id) && $ _session ["loginid"] \u003d\u003d $ this-\u003e orm-\u003e id;) / ** * ellenőrzés a felhasználó adminisztrátora * @return Boolean * / Public Function Isadmin () $ this-\u003e rang () \u003d \u003d "rendszergazda";) / ** * Keressen egy felhasználói típust, talán adminisztrátor vagy rendszeres * @return * @return * / nyilvános funkció rang () (ha ($ this-\u003e orm-\u003e rang) \u003d\u003d 1) (Visszatérés "Rendszergazda";) Visszatérés "Regular";) / ** * módszer lehetővé teszi, hogy magán információs Felhasználói fiók * A felhasználó minőségi tulajdonságai * @param String $ Key Property Feature Fogadó hozzáférés fogadása * @return vegyes * / nyilvános funkció __get ($ billentyű) (ha ($ this this-\u003e ор -\u003e $ billentyű)) $ this-\u003e orm -\u003e $ kulcs; ) Null visszatér; )))))))))

A tokeneket az SHA1 algoritmus segítségével állítják elő, és az adatbázisban tárolják. A MySQL időfunkcióit használom annak érdekében, hogy a tokenzitás relevanciájának 10 perces korlátozását állapítsam meg.

Ha a token halad a hitelesítési eljárás, mi közvetlenül beszél a felvezető, hogy fontolja meg csak érmek, akiknek nincs lejárati dátumot, tárolt TKEN_VALIDY oszlopban.

Ne feledje, hogy a mágikus módszert használom __kap. Dokumentumkönyvtárak a fájl végén, hogy elfogják a felhasználói objektum tulajdonságaihoz való hozzáférést.

Ennek köszönhetően lehetővé válik az adatbázisban tárolt információk elérése a tulajdonságok köszönhetően $ User-\u003e Email, $ user-\u003e token és mtsai. A következő kódfragmensben fontolja meg például az osztályok használatát.


Védett oldal

Egy másik fájl, amely hasznos és szükséges funkcionalitást tárol, fájl. funkciók.php.. Számos úgynevezett helpers - olyan asszisztens funkció, amely lehetővé teszi, hogy hozzon létre egy tisztább és olvasható kódot más fájlokban.

funkciók.php.

Funkció Send_email ($, $ to, $ Tárgy, $ üzenet) (// Helper, e-mail küldése $ headers \u003d "MIME-verzió: 1.0". "" " / Síkság; Charset \u003d UTF-8 "." "\\ R \\ n"; $ fejlécek. \u003d "Tól től:". $ -Tól. "" R \\ n "; );) A get_page_url () funkció (// meghatározza az US PHP-fájlt url \u003d "http" (üres ($ _ Server ["https"])? "": "S"). ["Server_name"]; ha ($ _ Server ["$ _ kiszolgáló [" Request_uri "]) && $ _server [" request_uri "]! \u003d" ") ($ Url. \u003d $ _Server [" request_uri "];) más ($ url) . \u003d $ _Server ["path_info"];) $ URL visszaadása;) Funkció Rate_Limit ($ IP, $ Limit_Hour \u003d 20, $ Limit_10_min \u003d 10) (// a bemeneti kísérletek száma az utolsó órában ezen az IP-címen $ count_hour \u003d ORM :: for_table ("REG_LOGIN_ATTEMT") -\u003e hol ("IP", sprintf ("% u", ip2long ($ ip)) -\u003e ahol_raw ("TS\u003e alime (most ()," 1:00 " ) ") -\u003e Count (); // száma beviteli kísérleteket az utolsó 10 perc ezen az IP-cím $ Count_10_min \u003d ORM :: FOR_TABLE (" REG_LOGIN_ATTEMPT ") -\u003e WHERE (" IP”, SPRINT f ("% u", ip2long ($ IP))) -\u003e ahol_raw ("TS\u003e alime (most ()," 0:10 ")") -\u003e szám (); Ha ($ count_hour\u003e $ limit_hour || $ count_10_min\u003e $ limit_10_min) (dobja az új kivételt ("túl sok bejelentkezési kísérletet!");)))))))) ($ IP, $ e-mail) (// Hozzon létre egy új bejegyzést az asztalhoz Ez úgy véli, hogy a beviteli kísérletek száma $ login_attemple \u003d ORM :: for_table ("REG_LOGIN_ATTEMT") -\u003e Hozzon létre (); $ login_attempt-\u003e e-mail \u003d $ e-mail; $ login_attempt-\u003e ip \u003d sprintf ("% u", ip2long ($ ); $ login_attempt-\u003e Mentés ();) Funkció átirányítás ($ URL) (fejléc ("Helyszín: $ url"); Kilépés;

Funkciók rate_limit és rate_limit_tick. Ezeket az első kísérlet pillanatától kezdve az engedélyezési kísérletek száma követi. A beviteli kísérletet az adatbázisban rögzítik a REG_LOGIN_ATTEMPTEM oszlopban. Ezeket a funkciókat az úgynevezett feldolgozása során, és az űrlap elküldése adatokat láthatjuk a következő kódrészlet.

A kód az alábbi fájlból származik. index.php. És feldolgozza az űrlap küldését. Visszaad egy JSON-választ, amely viszont a jquery feldolgozása a fájlban eszközök / js / script.jsamit már szétszereltünk korábban.

index.php.

Próbálja ki (ha (! Üres ($ _ POST) && isset ($ _ kiszolgáló ["http_x_requested_with"])) (// A JSON fejléc fejléc ("Tartalomtípus: Alkalmazás / JSON"); // Ez az e-mail cím Érvényes, ha (! Betétet ($ _ Post ["e-mail"]) ||! Filter_var ($ _ Post ["e-mail"], filter_validate_email)) (dobja az új kivételt ("Adjon meg egy érvényes e-mailt");) // . Függetlenül attól, hogy a felhasználó bejelentkezhet-e, meghaladja a megengedett kapcsolatok számát? (FUNKCIÓS.PHP fájl további információért) Rate_limit ($ _ Server ["Remote_addr"); _ Server ["Remote_addr"], $ _post ["e-mail"]); // Küldj egy levelet a felhasználó $ üzenethez \u003d "", $ e-mail \u003d $ _post ["e-mail"]; $ Tárgy \u003d "A bejelentkezési linkje" ; ha (! Felhasználó :: létezik ($ e-mail)) ($ Tárgy \u003d "Köszönöm a regisztrációt!"; $ üzenet \u003d "Köszönjük, hogy regisztrálta a webhelyünkön! \\ n \\ n";) // Regisztrálja a felhasználót $ user \u003d Felhasználó :: LOGINGORREGISTER ($ _ POST ["E-mail"]); $ üzenet. \u003d "Bejelentkezhet az URL-ről: \\ n" ; $ üzenet. \u003d get_page_url (). "? tkn \u003d" $ user-\u003e generateetoken () "." \\ n \\ n "; $ Üzenet. \u003d "A link 10 perc múlva automatikusan lejár."; $ kapott \u003d Send_Email ($ inemail, $ _post ["e-mail"], $ Tárgy, $ üzenet); Ha (! $ Eredmény) (új kivételt dobott ("Hiba történt az e-mail küldése. Kérjük, próbálja újra.");) Die (Json_encode (Array ("üzenet" \u003d\u003e "Köszönöm! A beérkezett üzenetekhez. Ellenőrizze a spam mappáját is. "))));));)));))); (Json_encode (hiba" \u003d\u003e 1, "üzenet" \u003d\u003e $ e-\u003e getmessage ()))

A sikeres engedélyezési / regisztrációs kód után a felhasználó hivatkozik a felhasználó engedélyezésére. A TOOCKEN megfizethetővé válik, mert A generált link módszer változójaként továbbítják $ _Get. A TKN markerrel

index.php.

Ha ($ _ get ["tkn"])) (// ez a token az engedélyezésre érvényes? $ User \u003d felhasználó :: Findbytoken ($ _ get ["tkn"]); ha ($ felhasználó) (// Igen, az átirányítás a $ user-\u003e bejelentkezés (); átirányítás ("Protected.php") védett oldalára;) // nem, a token nem érvényes. Végezze el az átirányítást az űrlapon az átirányítás engedélyezése / regisztrálása ("index.php");)

$ User-\u003e bejelentkezés ()

hozza létre a szükséges változókat a munkamenethez, hogy a felhasználó, amely a későbbi webhelyoldalakon keresztül néz, folyamatosan engedélyezett.

Hasonlóképpen, a funkció kilépésének funkciójának feldolgozása is elrendezve van.

index.php.

Ha ($ _ get ["logoout"])) ($ felhasználó \u003d új felhasználó (); ha ($ user-\u003e logedin ()) ($ user-\u003e kijelentkezés ();) átirányítás ("index.php" );)

A kód végén ismét átirányítom az index.php-t, így a paraméter ? Logout \u003d 1 Nem szükséges az URL által nem szükséges.

A fájlunk. index.php. Hozzáadás szükséges. Protection - Nem akarjuk az embereket, akik valaha miután bejelentkezett a rendszert újra látta a regisztrációs űrlapot. E célból a módszert használjuk $ User-\u003e logedin ().

index.php.

$ Felhasználó \u003d új felhasználó (); Ha ($ user-\u003e logedin ()) (átirányítás ("Protected.php");)

Végül itt van egy olyan kód, amely lehetővé teszi a webhely oldalainak védelmét, és csak az engedélyezés után elérhetővé teszi.

védett.php.

// A webhelyének minden oldalának védelme érdekében csatlakoztassa a fájlt // main.php fájlt, és hozzon létre egy új felhasználói objektumot. Ez az egyszerű! Igény: _once "magában foglalja / main.php"; $ Felhasználó \u003d új felhasználó (); Ha (! $ User-\u003e logedin ()) (átirányítás ("index.php");)

Az ellenőrzés után biztos lehet benne, hogy a felhasználó sikeresen engedélyezett. Az objektum tulajdonságai segítségével az adatbázisban tárolt információkat is elérheti. $ Felhasználó.. Az e-mailek és a felhasználó és az állapot megjelenítéséhez használja ezt a kódot:

Echo "Az Ön e-mailje:" $ user-\u003e e-mail; Echo "Az Ön rangja:" $ user-\u003e rang ();

Módszer () Itt használják, mert az adatbázist általában tárolják (0 rendszeres felhasználó számára, 1 az adminisztrátorhoz), és meg kell konvertálnunk ezt az adatokat az általunk kapcsolódó állapotokra, amelyekhez kapcsolódnak, és ez a módszer segít.

Ahhoz, hogy rendszergazda legyen egy rendszeres felhasználóból, egyszerűen szerkessze a felhasználói bejegyzést a PHPMYADmin (vagy bármely más program segítségével, amely lehetővé teszi az adatbázisok kezelését). A rendszergazda állapota nem ad kiváltságot, ebben a példában az oldalon megjelenik, hogy Ön adminisztrátora - és ez az.

De mi a teendő vele - ez a saját belátása szerint írhat és létrehozhat egy olyan kódot, amely bizonyos jogosultságokat és lehetőségeket határoz meg a rendszergazdák számára.

Befejeztük!

Ezzel a hihetetlenül szuper kvázi egyszerű formában befejeztük! Használhatja azt a PHP webhelyén, elég könnyű. Ön is módosíthatja magát, és így szeretne.

Az anyag elkészített Denis Baby speciálisan a webhely oldalán

P.S. Szeretne továbblépni a PHP és az OOP elsajátításában? Figyeljen a helyszíni épületek különböző aspektusaira, beleértve a PHP programozást, valamint egy ingyenes kurzust a CMS rendszer létrehozására a PHP-n a nulláról az OOP használatával:

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


1. Kezdjük a felhasználók létrehozásával az adatbázisban. Ez tartalmaz felhasználói adatokat (bejelentkezési és jelszó). Menjünk Phpmyadminbe (ha létrehozunk egy adatbázist a számítógépen http: // localhost / phpmyadmin /). Hozzon létre egy táblát felhasználók.3 mező lesz.

A MySQL adatbázisban létrehozom, létrehozhat egy másik adatbázisban. Ezután állítsa be az értékeket a képen:

Kattintson a " Mentés- Szóval van egy asztalunk.
2. Meg kell kapcsolódni a táblázathoz. Hozzunk létre egy fájlt bd.php.. Tartalma:

Az én esetemben úgy néz ki, mint ez:

Mentse a bd.php-t.
Kiváló! Van egy asztalunk az adatbázisban, a kapcsolatot. Most elkezdheti létrehozni egy olyan oldal létrehozását, amelyen a felhasználók elhagyják az adatokat.
3. Hozzon létre egy fájlt reg.php. Tartalommal (minden megjegyzés belül):
becsekkolás

becsekkolás




4. Hozzon létre egy fájlt, amely lehetővé teszi az adatok adatbázisának és a felhasználó mentését. Save_user.php.(Megjegyzések belül):

5. Most a felhasználók regisztrálhatnak! Ezután meg kell, hogy az „ajtó”, hogy adja meg a helyszínen már regisztrált felhasználók számára. index.php. (Megjegyzések belül):
Főoldal

Főoldal


Regisztráció


";) Más (// ha nem üres, akkor megjelenítjük az echo linket" belépett a webhelybe, mint a "$ _ munkamenet [" bejelentkezés "]."
Ez a link csak a regisztrált felhasználók számára érhető el ";)?\u003e


Fájlban index.php. Visszatérünk egy olyan hivatkozást, amely csak regisztrált felhasználók számára nyitva lesz. Ez a szkript egész lényege - az adatokhoz való hozzáférés korlátozása.
6. A beírt bejelentkezés és jelszó ellenőrzésével kapcsolatos fájl maradt. Testreg.php. (Megjegyzések belül):

Ez az! Talán egy lecke és unalmas, de nagyon hasznos. Itt csak regisztrációs ötlet jelenik meg, akkor javíthatja azt: Védelem, tervezés, mezők adatai, avatárok betöltése, kimenet a fiókból (erre, csak megsemmisíteni a változókat a munkamenetről egy funkcióval nem.) stb. stb. Sok szerencsét!

Mindent ellenőriztem, jól működik!

Hello, barátok ebben a bemutatóban Megtanuljuk a felhasználói regisztrációt és a bejelentkezést a PHP tárolt eljárással.
A bemutató fájlszerkezete
Config.php.
Index.php.
check_availability.php.
login.php.
Welcome.php.
logout.php.
Az SQL Table TBLRREGISOLRATION

Táblázat létrehozása `tblregistration` (INT (11) NULL,` FULLNAME` Varchar (200) NULL, `emailID` varchar (200) NULL,` Password` varchar (255) NULL, `RegDate` timestamp nem null alapértelmezett current_timestamp) motor \u003d innoDB alapértelmezett karakter \u003d latin1;

config.php.

Hozzon létre db konfigurációs fájlt a MySQLI kiterjesztéssel. Adjon hitelesítőt a konfiguráció szerint

index.php.

Hozzon létre egy HTML űrlapot a felmerülő regisztrációhoz.

Regisztráció

MÁR REGISZTRÁLT. Bejelentkezés itt.

JQUERY / AJAX A felhasználó e-mailben elérhetősége

check_availability.php.

Ezen az oldalon ellenőrizzük a felhasználói e-mail elérhetőségét. Hozzon létre egy tárolási eljárást névvel Ellenőrizze a rendelkezésre állást
Store eljáráskód:

A DELIMITER $ Hozzon létre definer \u003d `root` @` localhost "eljárás" checkavailbity` (e-mailben "Varchar (255)) Nincs SQL SELECT emailID a tblregistration, ahol az emailID \u003d e-mail $ delimiter;

Most hozzon létre egy tárolási eljárást a felhasználói regisztrációhoz.
Tárolási eljárás a felhasználói regisztrációhoz

DELIMITER $ Hozzon létre definer \u003d `root` @` localhost "eljárás" nyilvántartási helyét "(a` fname` varchar (200), az "emailid` varchar (200), a" jelszó "Varchar (255)) nincs SQL beillesztése a tblregistration-be ( Teljes név, emailid, jelszó) értékek (fname, emailID, jelszó) $ delimiter;

Az áruház létrehozása után hajtsa végre az áruház eljárását.

";) Más (visszhang""; } } ?>

Itt van a teljes kód, amelyet regisztrálásra írtunk ( index.php.):

alert("Registration Successfull");";) Más (visszhang""; } } ?> Regisztráció az áruház-eljárás használatával

Regisztráció

MÁR REGISZTRÁLT. Bejelentkezés itt.



bejelentkezés .php.

Hozzon létre egy bejelentkezési űrlapot felhasználói bejelentkezést.

Most hozzon létre egy tárolási eljárást a név bejelentkezéssel.
Bejelentkezés Store eljárás:

CLELIMITER $ Hozzon létre definer \u003d `root` @ localhost` eljárás" bejelentkezési "(a` useremail` varchar (255), a "jelszó" varchar (255)) Nincs SQL Select EmailD, Jelszó a TBLRRRREGISTRION-ról, ahol EAmaDID \u003d Jelszó $ Delimiter;

Most hajtsa végre a bejelentkezési tárolási eljárást

"$ Extra \u003d" login.php ";))?\u003e

Itt van a teljes kód, amelyet a bejelentkezéshez írtunk ( login.php.):

0) ($ _session ["login"] \u003d $ _ Post ["usentemail"]; fejléc ("Helyszín: welcome.ppp");) más ($ _session ["login"] \u003d $ _ Post ["usenteMail"] ; echo "", $ extra \u003d" login.php ";))?\u003e SASA A bejelentkezési tárolási eljárás.



welcome.php.

Miután a bejelentkezési felhasználó átirányítja az üdvözlést. Ezt az oldalt az ülésen érvényesíti, ha egy felhasználó megpróbálja elérni ezt az oldalt (Welcome.php) közvetlenül, akkor a felhasználó átirányítja a bejelentkezést.php oldalra.

Welcome oldal

Üdvözöljük:

Kijelentkezés.


logout.php.

A bejelentkezési munkamenet megsemmisítése érdekében. Session_Destroy elpusztítja az összes aktív munkamenetet.

A regisztrációs rendszer létrehozásának folyamata elég nagy mennyiségű munka. Meg kell írnia egy kódot, hogy meg kellene írnom az e-mail címek érvényességét, küldött e-mail leveleket megerősítve, felajánlotta a lehetőséget, hogy visszaállítsa a jelszót, akkor a jelszavak biztonságos helyen, ellenőrzött bemeneti űrlapok és még sok más. Még akkor is, ha mindannyian mindent megtesz, a felhasználók vonakodnak nyilvántartásba, mivel még a legkisebb regisztráció is előírja tevékenységüket.

A mai útmutatóban egyszerű regisztrációs rendszert dolgozunk ki, amellyel nincs szükség jelszavakra! Megkapjuk az eredményeket, a rendszer könnyen megváltoztatható vagy beágyazható egy meglévő PHP webhelyen. Ha érdekel, folytassa az olvasást.

PHP.

Most készen állunk a PHP kódra. A regisztrációs rendszer fő funkcionalitását a felhasználói osztály biztosítja, amelyet az alábbiakban láthat. Az osztály használ (), amely minimalista könyvtár az adatbázisokkal való együttműködéshez. A felhasználói osztály feladata az adatbázisok eléréséhez, generáló token-s belépés és érvényesítése. Ez egy egyszerű felületet képvisel, amely könnyen szerepelhet a PHP-alapú webhelyeken lévő regisztrációs rendszerben.

User.class.php.

// privát orm példány
Private $ orm;

/**
* Keressen egy felhasználót egy token karakterlánc segítségével. Csak érvényes tokenek kerülnek be
* Megfontolás. A token 10 percig érvényes, miután létrehozta.
* @param string $ token a token keresni
* @Return felhasználó.
*/

Nyilvános statikus funkció FindbyToken ($ token) (

// Keresse meg az adatbázisban, és győződjön meg róla, hogy az időbélyeg helyes


-\u003e hol ("token", $ token)
-\u003e ahol_raw ("token_vality\u003e most ()")
-\u003e find_one ();

Ha (! $ Eredmény) (
Vissza a hamis;
}

Új felhasználó visszaadása ($ eredmény);
}

/**
* Jelentkezzen be vagy regisztráljon egy felhasználót.
* @Return felhasználó.
*/

Nyilvános statikus funkció LOGINGORREGISTER ($ EMAIL) (

// Ha ilyen felhasználó már létezik, küldje vissza

Ha (felhasználó :: létezik ($ e-mail)) (
Új felhasználó visszaadása ($ e-mail);
}

// egyébként, hozza létre és küldje vissza

Visszatérő felhasználó :: Create ($ e-mail);
}

/**
* Hozzon létre egy új felhasználót, és mentse el az adatbázisba
* @Param string $ Email A felhasználó e-mail címe
* @Return felhasználó.
*/

Privát statikus funkció létrehozása ($ e-mail) (

// Írjon új felhasználót az adatbázisba, és küldje vissza

$ Eredmény \u003d ORM :: FOR_TABLE ("REG_USERS") -\u003e Hozzon létre ();
$ eredmény-\u003e e-mail \u003d $ e-mail;
$ Eredmény - Mentés ();

Új felhasználó visszaadása ($ eredmény);
}

/**
* Ellenőrizze, hogy létezik-e az ilyen felhasználó az adatbázisban, és visszaadja a logikai.
* @Param string $ Email A felhasználó e-mail címe
* @return Boolean
*/

Nyilvános statikus funkció létezik ($ e-mail) ($ e-mail) (

// létezik-e a felhasználó az adatbázisban?
$ Eredmény \u003d ORM :: For_Table ("Reg_Users")
-\u003e hol ("email", $ e-mail)
-\u003e szám ();

Vissza $ eredmény \u003d\u003d 1;
}

/**
* Hozzon létre egy új felhasználói objektumot
* @param $ param orm példány, id, e-mail vagy null
* @Return felhasználó.
*/

Nyilvános funkció __Construct ($ param \u003d null) (

Ha ($ Param Potion OM) (

// ORM példányt adtak át
$ this-\u003e orm \u003d $ param;
}
Egyébként, ha (IS_STRING ($ param)) (

// egy e-mailt telt el
$ this-\u003e
-\u003e Hol ("email", $ param)
-\u003e find_one ();
}
MÁS (

Ha (IS_numeric ($ param)) (
// A felhasználói azonosítót paraméterként adták át
$ id \u003d $ param;
}
Egyébként, ha (PONSSET ($ _ munkamenet ["loginid"])) (

// nincsen felhasználói azonosító, nézd meg a szezionba
$ id \u003d $ _session ["loginid"];
}

$ this-\u003e orm \u003d orm :: for_table ("reg_users")
-\u003e Hol ("ID", $ ID)
-\u003e find_one ();
}

/**
* Új SHA1 bejelentkezési tokent generál, írja azt az adatbázisba, és visszaadja.
* @Return string.
*/

Nyilvános függvény által generateen () () () (
// generál egy tokenet a bejelentkezett felhasználó számára. Mentse el az adatbázisba.

$ token \u003d sha1 ($ this-\u003e email.time (). Rand (0, 1000000));

// mentse a tokenet az adatbázisba
// és jelölje meg, hogy érvényes legyen a következő 10 percre

$ this-\u003e Om-\u003e Set ("token", $ token);
$ this-\u003e orm-\u003e set_expr (token_valididity "," Addtime (most (), "0:10") ");
$ This-\u003e Om-\u003e Mentés ();

Vissza $ token;
}

/**
* Bejelentkezés ez a felhasználó
* @return üreg
*/

Nyilvános funkció bejelentkezés () () () (

// Jelölje be a felhasználót a bejelentkezett módon
$ _Session ["loginid"] \u003d $ this-\u003e orm-\u003e id;

// frissítse a Last_Login DB mezőt
$ this-\u003e orm-\u003e set_expr (last_login "," most () ");
$ This-\u003e Om-\u003e Mentés ();
}

/**
* Pusztítsd el a munkamenetet, és kijelentkezzen a felhasználó.
* @return üreg
*/

Nyilvános funkció kijelentkezés () () (
$ _Session \u003d Array ();
($ _ Ülés);
}

/**
* Ellenőrizze, hogy a felhasználó bejelentkezett-e.
* @return Boolean
*/

Nyilvános funkció Fognedin () () () () () (
Visszatérés ($ this-\u003e orm-\u003e id) && $ _session ["loginid"] \u003d\u003d $ this-\u003e orm-\u003e id;
}

/**
* Ellenőrizze, hogy a felhasználó rendszergazda
* @return Boolean
*/

Nyilvános funkció ISADMIN () () (
Vissza $ this-\u003e rang () \u003d\u003d "rendszergazda";
}

/**
* Keresse meg a felhasználó típusát. Ez lehet adminisztrátor vagy rendszeres.
* @Return string.
*/

Nyilvános funkció () () () () () (
Ha ($ this-\u003e om-\u003e rang \u003d\u003d 1) (
Visszatérés "Rendszergazda";
}

Visszatérjen "rendszeres";
}

/**
* Magic módszer a magánszemélyek eléréséhez
* $ Orm példány a felhasználói objektum tulajdonságai
* @Param string $ billentyű A hozzáférésű tulajdonság neve
* @return vegyes
*/

Nyilvános funkció __get ($ Key) (
Ha (BETSET ($ This-\u003e Orm -\u003e $ Key)) (
Vissza $ this-\u003e orm -\u003e $ kulcs;
}

Visszaadja null;
}
}
A token-eket az algoritmus generálja, és az adatbázisban tárolják. A MySQL-ről a TKEN_VALIDY oszlop értékére állítjuk be, 10 percen keresztül. A TKEN validáláskor tájékoztatjuk a motort, hogy szükségünk van a tokenre, a Token_Valitási mező még nem járt le. Tehát korlátozzuk azt az időt, amikor a tken érvényes lesz.

Kérjük, vegye figyelembe, hogy a dokumentum tulajdonságainak eléréséhez használja a __get () mágikus módszert a dokumentum végén. Ez lehetővé teszi számunkra, hogy az adatbázisban tárolt adatokat ingatlanok formájában tárolja: $ user-\u003e e-mail, $ user-\u003e token. Lássuk például, hogyan tudjuk használni ezt az osztályt a következő kódfragmensben:


Egy másik fájl, amelyben a szükséges funkcionalitást tárolják, funkciók.php. Ott van több kiegészítő funkció, amely lehetővé teszi számunkra, hogy a fennmaradó kódot jobban megtartsuk.

Funkciók.php.

Funkció Send_email ($, $ to, $ Tárgy, $ üzenet) (

// Helper funkció e-mail küldéséhez

$ Fejlécek \u003d "MIME-VERSION: 1.0". "\\ r \\ n";
$ Fejlécek. \u003d "Tartalom típus: szöveg / síkság, Charset \u003d UTF-8". "\\ r \\ n";
$ Fejlécek. \u003d "A következő:". $ -Tól. "\\ r \\ n";

Visszatérő levél ($ to, $ Tárgy, $ üzenet, $ fejlécek);
}

funkció get_page_url () () () () () () (

// Ismerje meg a PHP fájl URL-jét

$ URL \u003d "http". (Üres ($ _ Server ["https"])? "": "S"). ": //" $ _ kiszolgáló ["server_name"];

Ha (isset ($ _ Server [ "REQUEST_URI"]) && $ _SERVER [ "REQUEST_URI"]! \u003d "") (
$ URL. \u003d $ _Server ["Request_uri"];
}
MÁS (
$ Url. \u003d $ _Server ["path_info"];
}

Vissza $ URL;
}

funkció Rate_limit ($ IP, $ Limit_Hour \u003d 20, $ Limit_10_min \u003d 10) (

// Az IP-cím utolsó órájának bejelentkezési kísérleteinek száma

$ Count_hour \u003d orm :: for_table ("reg_login_attempt")
->
-\u003e ahol_raw ("TS\u003e alime (most ()," 1:00 ")")
-\u003e szám ();

// a bejelentkezési kísérletek száma az elmúlt 10 percben ez az IP-cím

$ Count_10_min \u003d ORM :: for_table ("REG_LOGIN_ATTEMT")
-\u003e Hol ("IP", sprintf ("% u", ip2long ($ IP))))
-\u003e ahol_raw ("TS\u003e alime (most ()," 0:10 ")")
-\u003e szám ();

Ha ($ count_hour\u003e $ limit_hour || $ count_10_min\u003e $ limit_10_min) (
Dobja az új kivételt ("túl sok bejelentkezési kísérlet!");
}
}

funkció rate_limit_tick ($ IP, $ e-mail) (

// Hozzon létre egy új rekordot a bejelentkezési kísérlet táblájában

$ login_attemple \u003d ORM :: for_table ("reg_login_attempt") -\u003e Hozzon létre ();

$ login_attempt-\u003e e-mail \u003d $ e-mail;
$ login_attempt-\u003e IP \u003d sprintf ("% u", ip2long ($ IP));

$ login_attempt-\u003e Mentés ();
}

funkció átirányítása ($ url) (
Fejléc ("Hely: $ url");
kijárat;
}
A rate_limit és a rate_limit_tick funkciók lehetővé teszik számunkra, hogy korlátozzuk az engedélyezési kísérletek számát egy bizonyos ideig. Az engedélyezéssel kapcsolatos kísérleteket a REG_LOGIN_ATTEMTEST adatbázisban rögzítik. Ezeket a funkciókat az engedélyezési űrlap megerősítésénél indítják el, amint az a következő kódfragmensben látható.

Az alábbi kódot az index.php-ből vették, és felelős az engedély formájának megerősítéséért. Visszaadja a JSON-választ, amelyet a jQuery kód vezérli, amelyet az eszközök / JS / Script.js.

index.php.

Ha (! Üres ($ _ post) && isset ($ _ kiszolgáló ["http_x_requested_with"])) (

// kimenet egy json fejlécet

Fejléc ("tartalomtípus: alkalmazás / JSON");

// az e-mail cím érvényes?

If (! Isset ($ _ üzenetre [ "email"]) ||! Filter_var ($ _ üzenetre [ "email"], filter_validate_email)) (
Dobja az új kivételt ("Kérjük, írjon be egy érvényes e-mailt");
}

// ez kivételt fog dobni, ha a személy a fenti
// a megengedett bejelentkezési kísérlet korlátai (lásd a funkciókat.php további):
rate_limit ($ _ Server ["Remote_addr");

// rögzítse ezt a bejelentkezési kísérletet
rate_limit_tick ($ _ Server ["Remote_addr", $ _post ["e-mail"]);

// Küldje el az üzenetet a felhasználónak

$ üzenet \u003d "";
$ e-mail \u003d $ _post ["e-mail"];
$ Tárgy \u003d "A bejelentkezési linkje";

Ha (! Felhasználó :: létezik ($ e-mail)) (
$ Tárgy \u003d "Köszönjük, hogy regisztráltál!";
$ Üzenet \u003d "Köszönjük, hogy regisztráltál a webhelyünkön! \\ N \\ n \\ n";
}

// megpróbál bejelentkezni vagy regisztrálni a személyt
$ User \u003d Felhasználó :: Loginorregister ($ _ Post ["e-mail"]);

$ Üzenet. \u003d "Bejelentheti ezt az URL-t: \\ n";
$ üzenet. \u003d get_page_url (). "? tkn \u003d" $ user-\u003e generateetoken () "." \\ n \\ n ";

$ Üzenet. \u003d "A link 10 perc múlva automatikusan lejár.";

$ kapott \u003d Send_Email ($ inemail, $ _post ["e-mail"], $ Tárgy, $ üzenet);

Ha (! $ Eredmény) (
Dobja az új kivételt ("Hiba történt az e-mail küldése. Kérjük, próbálja újra.");
}

Meghal (Json_encode (tömb (tömb (
"Üzenet" \u003d\u003e "Köszönöm! Elküldünk egy linket a beérkezett üzenetekhez. Ellenőrizze a spam mappáját is. "
)));
}
}
fogás (kivétel $ e) (

Meghal (Json_encode (tömb (tömb (
"Hiba" \u003d\u003e 1,
"Üzenet" \u003d\u003e $ e-\u003e getmessage ()
)));
}
Ha sikeres engedélyezés vagy regisztráció, a fenti kód hivatkozik az e-mailt az engedélyhez kapcsolódó személyhez. Token (Lexeme) elérhetővé válik $ _get-változó "TKN", tekintettel a generált URL-re.

index.php.

Ha (DETSET ($ _ get ["tkn"])) (

// Ez egy érvényes bejelentkezési token?
$ User \u003d felhasználó :: Findbytoken ($ _ get ["tkn"]);

// Igen! Jelentkezzen be a felhasználót, és átirányítsa a Védett oldalra.

$ User-\u003e bejelentkezés ();
Átirányítás ("védett.php");
}

// Érvénytelen kód. Átirányítja a bejelentkezési űrlapot.
Átirányítás ("index.php");
}
A $ user-\u003e bejelentkezés () futtatása megteremti a szükséges változókat a munkamenethez, amely lehetővé teszi a felhasználó számára, hogy a későbbi inputokon engedélyezze.

A rendszerből származó kijárat ugyanolyan módon valósul meg:

Index.php.

Ha (BETSET ($ _ get ["logout"])) (

$ Felhasználó \u003d új felhasználó ();

Ha ($ user-\u003e logedin ()) ()) (
$ User-\u003e kijelentkezés ();
}

Átirányítás ("index.php");
}
A kód végén ismét átirányítjuk a felhasználót az index.php-en, így a paraméter? Logout \u003d 1 az URL-ben kizárt.

Az index.php fájlunk is védelemre lesz szüksége - nem akarjuk, hogy az engedélyezett felhasználók láthassuk az űrlapot. Ehhez a $ user-\u003e naplózott () módszert használjuk:

Index.php.

$ Felhasználó \u003d új felhasználó ();

ha ($ user-\u003e logedin ()) ()) (
Átirányítás ("védett.php");
}
Végül nézzük meg, hogyan védheti meg a webhely oldalát, és csak az engedélyezés után elérhetővé teszi:

védett.php.

// hogy megvédje a PHP oldalt a webhelyén, tartalmazza a Main.php-t
// hozzon létre egy új felhasználói objektumot. Ez ennyire egyszerű!

igény: _once "magában foglalja / main.php";

$ Felhasználó \u003d új felhasználó ();

ha (! $ user-\u003e logedin ()) () ()) (
Átirányítás ("index.php");
}
Az ellenőrzés után biztos lehet benne, hogy a felhasználó sikeresen engedélyezett. Ön is hozzáférhet az adatbázisban tárolt adatokhoz is, mint a $ felhasználói objektum tulajdonságai. Az e-mail felhasználó és a rangsor megjelenítéséhez használja a következő kódot:

Echo "Az Ön e-mailje:" $ user-\u003e e-mail;
echo "Az Ön rangja:" $ user-\u003e rang ();
Itt helyezett () egy olyan módszer, hiszen a ligában oszlopban az adatbázis általában számok (0 hétköznapi felhasználók és rendszergazdák számára 1), és meg kell alakítani az egészet a nevét soraiban, amely végre ezzel a módszerrel. A rendszeres felhasználó átalakításához egyszerűen szerkesztheti a felhasználói rekordot a phpmyadmin (vagy bármely más adatbázis programban). A rendszergazda, a felhasználó nem lesz különleges funkciókkal. Önnek joga van azzal a joggal választani, hogy milyen jogokat ad az adminisztrátoroknak.

Kész!

Ezenkívül az Igazságos regisztrációs rendszerünk készen áll! Használhatja azt a már meglévő PHP webhelyen, vagy frissítheti azt, a saját igényeinek megfelelően.