Անաստված հեղինակության գրանցում php

10.05.2015 Ռոմչիկ

Լավ օր. Այս հոդվածում մենք կօգտագործենք օրինակ՝ օգտատերերի գրանցումը վերլուծելու համար: Այնուհետև ակտիվացրեք օգտատերին՝ հաստատելով նրա էլ.փոստի հասցեն: Եվ վերջապես, օգտագործողի թույլտվությունը . Բայց միայն ակտիվ օգտվողները պետք է լիազորված լինեն:

Առաջին բանը, որ մենք կանենք, վերահսկիչ և գրանցման դիտում ստեղծելն է:

Գրանցման ձևի ստեղծում

Գնացեք ռեսուրսների ձևանմուշներով գրացուցակ և դրա մեջ ստեղծեք auth ենթացուցակը: Այժմ auth պանակում մենք կստեղծենք ֆայլ register.blade.php հետևյալ կոդով.

Գրանցում

((--Սխալներ--)) @if ($errors->has()) ×
    @foreach($errors->all() որպես $error)
  • ((( $սխալ )))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

Ես չեմ բացատրի վերը նշված կոդը, այստեղ ամեն ինչ պարզ է:

App/Http/Controllers/Auth/AuthController.php

Մենք կչեղարկենք միայն AuthController.php վերահսկիչի մեթոդները: Այսպիսով, գրանցման ձևը ցուցադրելու համար կա getRegister մեթոդ: Մենք չենք շոշափում այս մեթոդը:

Հիմա անցնենք երթուղիներին։ Բացեք ֆայլը.

Եվ սահմանեք մեր մեթոդի երթուղին.

Երթուղի::get("auth/register", "Auth\AuthController@getRegister");

Այժմ եկեք բացենք մեր հավելվածը բրաուզերում: Հիանալի է, մենք տեսնում ենք գրանցման ձևը:

Օգտագործողի գրանցում

Եկեք անմիջապես սահմանենք օգտվողի գրանցման երթուղին: Եկեք անցնենք ֆայլին.

App/Http/Controllers/routes.php

Եվ ավելացրեք հետևյալ երթուղին.

Երթուղի::փոստ ("auth/register", "Auth\AuthController@postRegister");

Այժմ եկեք ստեղծենք աղյուսակ՝ օգտվողներին պահելու համար: Այս սեղանի համար արդեն միգրացիա կա, բայց դա մեզ հարմար չէ։ Եկեք փոխենք այն: Եկեք անցնենք ֆայլին.

Database/migrations/2014_10_12_create_users_table.php

Եվ եկեք փոխենք կոդը.

Իմ դեպքում դա այսպիսի տեսք ունի.

Պահպանել bd.php.
Հիանալի Տվյալների բազայում ունենք աղյուսակ և դրա հետ կապ: Այժմ դուք կարող եք սկսել ստեղծել էջ, որի վրա օգտվողները կթողնեն իրենց տվյալները:

3. Ստեղծեք reg.php ֆայլ բովանդակությամբ (բոլոր մեկնաբանությունները ներսում).



Գրանցում


Գրանցում


Ձեր մուտքը.




Քո գաղտնաբառը:








4. Ստեղծեք ֆայլ, որը տվյալների բազա կմտնի և կփրկի օգտատիրոջը: save_user.php (մեկնաբանություններ ներսում):

5. Այժմ մեր օգտվողները կարող են գրանցվել: Հաջորդը, դուք պետք է ստեղծեք «դուռ» արդեն գրանցված օգտվողների համար կայք մուտք գործելու համար: index.php (մենաբանություններ ներսում):




Գլխավոր էջ


Գլխավոր էջ


Ձեր մուտքը.


Քո գաղտնաբառը:






Գրանցվել



Լավ, հիմա ամեն ինչ ավարտված է: Դասը կարող է լինել ձանձրալի, բայց շատ օգտակար: Այստեղ ցուցադրվում է միայն գրանցման գաղափարը, այնուհետև կարող եք բարելավել այն. ավելացնել անվտանգություն, դիզայն, տվյալների դաշտեր, բեռնել ավատարներ, դուրս գալ ձեր հաշվից (դա անելու համար պարզապես ջնջեք փոփոխականները նիստից չսահմանված գործառույթով) և այսպես շարունակ։ Հաջողություն!

Ես ամեն ինչ ստուգեցի, ճիշտ է աշխատում:

Այս հոդվածում դուք կսովորեք, թե ինչպես ստեղծել գրանցման և մուտքի ձև՝ օգտագործելով HTML, JavaScript, PHP և MySql: Նման ձևերը օգտագործվում են գրեթե բոլոր կայքերում՝ անկախ դրա տեսակից։ Դրանք ստեղծված են ֆորումի, առցանց խանութի, սոցիալական ցանցերի (օրինակ՝ Facebook, Twitter, Odnoklassniki) և շատ այլ տեսակի կայքերի համար։

Եթե ​​դուք ունեք կայք ձեր տեղական համակարգչում, ապա հուսով եմ, որ դուք արդեն ունեք տեղադրված և գործարկվող տեղական սերվեր: Առանց դրա ոչինչ չի ստացվի։

Տվյալների բազայում աղյուսակի ստեղծում

Օգտատիրոջ գրանցումն իրականացնելու համար մեզ առաջին հերթին անհրաժեշտ է Տվյալների բազա։ Եթե ​​դուք արդեն ունեք, ապա հիանալի է, հակառակ դեպքում, դուք պետք է ստեղծեք այն: Հոդվածում ես մանրամասն բացատրում եմ, թե ինչպես դա անել:

Եվ այսպես, մենք ունենք Տվյալների բազա (կրճատ՝ DB), այժմ մենք պետք է ստեղծենք աղյուսակ օգտվողներորում մենք կավելացնենք մեր գրանցված օգտվողներին:

Ես նաև բացատրեցի, թե ինչպես կարելի է աղյուսակ ստեղծել տվյալների բազայում հոդվածում: Աղյուսակ ստեղծելուց առաջ մենք պետք է որոշենք, թե ինչ դաշտեր է այն պարունակելու։ Այս դաշտերը կհամապատասխանեն գրանցման ձևի դաշտերին:

Այսպիսով, մենք մտածեցինք, պատկերացրինք, թե ինչ դաշտեր կունենա մեր ձևը և ստեղծեցինք աղյուսակ օգտվողներայս դաշտերով.

  • id- Նույնացուցիչ: Դաշտ idՏվյալների բազայի յուրաքանչյուր աղյուսակ պետք է ունենա այն:
  • անուն- Անունը պահպանելու համար:
  • Ազգանուն- Ազգանունը պահպանելու համար։
  • էլ- Փոստային հասցեն պահպանելու համար: Որպես լոգին մենք կօգտագործենք էլ.
  • էլփոստի_կարգավիճակ- Դաշտ՝ նշելու՝ փոստը հաստատված է, թե ոչ: Եթե ​​նամակը հաստատված է, ապա այն կունենա 1 արժեք, հակառակ դեպքում արժեքը 0 է:
  • գաղտնաբառը- Գաղտնաբառը պահպանելու համար:


Եթե ​​ցանկանում եք, որ ձեր գրանցման ձևը ունենա այլ դաշտեր, կարող եք նաև դրանք ավելացնել այստեղ:

Վերջ, մեր սեղանը օգտվողներպատրաստ. Անցնենք հաջորդ փուլին։

Տվյալների բազայի միացում

Մենք ստեղծել ենք տվյալների բազան, այժմ պետք է միանալ դրան: Մենք կապվելու ենք PHP ընդլայնման միջոցով MySQLi:

Մեր կայքի թղթապանակում ստեղծեք ֆայլ անունով dbconnect.php, և դրանում գրեք հետևյալ սցենարը.

Այս ֆայլը dbconnect.phpկպահանջվի միացնել ձևերի մշակիչներ:

Ուշադրություն դարձրեք փոփոխականին $address_site, այստեղ ես նշել եմ իմ թեստային կայքի անունը, որի վրա աշխատելու եմ։ Խնդրում ենք համապատասխանաբար նշել ձեր կայքի անվանումը:

Կայքի կառուցվածքը

Հիմա եկեք նայենք մեր կայքի HTML կառուցվածքին:

Կայքի վերնագիրն ու ստորագիրը կտեղափոխենք առանձին ֆայլեր, header.phpԵվ footer.php. Մենք դրանք կներառենք բոլոր էջերում։ Մասնավորապես գլխավոր էջում (ֆայլ index.php), գրանցման ձևով էջ (ֆայլ form_register.php) և թույլտվության ձևով էջ (ֆայլ form_auth.php).

Արգելափակել մեր հղումներով, ԳրանցումԵվ թույլտվություն, դրանք ավելացրեք կայքի վերնագրում, որպեսզի դրանք ցուցադրվեն բոլոր էջերում։ Մեկ հղումը կմտնի գրանցման ձևով էջ (ֆայլ form_register.php) և մյուսը դեպի էջ՝ թույլտվության ձևով (ֆայլ form_auth.php).

header.php ֆայլի բովանդակությունը.

Մեր կայքի անվանումը

Արդյունքում մեր գլխավոր էջն ունի հետևյալ տեսքը.


Իհարկե, ձեր կայքը կարող է ունենալ բոլորովին այլ կառուցվածք, բայց դա մեզ համար այժմ կարևոր չէ։ Հիմնական բանը այն է, որ կան հղումներ (կոճակներ) գրանցման և թույլտվության համար:

Այժմ անցնենք գրանցման ձևին: Ինչպես արդեն հասկացաք, մենք այն ունենք ֆայլում form_register.php.

Գնացեք տվյալների բազա (phpMyAdmin-ում), բացեք աղյուսակի կառուցվածքը օգտվողներև տեսեք, թե ինչ ոլորտներ են մեզ պետք: Սա նշանակում է, որ մեզ անհրաժեշտ են անուն և ազգանուն մուտքագրելու դաշտեր, փոստային հասցեն (Email) մուտքագրելու դաշտ և գաղտնաբառ մուտքագրելու դաշտ։ Եվ անվտանգության նկատառումներից ելնելով, մենք կավելացնենք դաշտ՝ captcha մուտքագրելու համար։

Սերվերում գրանցման ձևի մշակման արդյունքում կարող են առաջանալ տարբեր սխալներ, որոնց պատճառով օգտատերը չի կարողանա գրանցվել։ Հետևաբար, որպեսզի օգտագործողը հասկանա, թե ինչու գրանցումը ձախողվում է, անհրաժեշտ է ցուցադրել հաղորդագրություններ այդ սխալների մասին:

Նախքան ձևը ցուցադրելը, ավելացրեք բլոկ՝ նիստից սխալ հաղորդագրություններ ցուցադրելու համար:

Եվ ևս մեկ բան, եթե օգտատերը արդեն լիազորված է, և հետաքրքրությունից դրդված նա անմիջապես գնում է գրանցման էջ՝ գրելով բրաուզերի հասցեի տողում. site_address/form_register.php, ապա այս դեպքում գրանցման ձևի փոխարեն կցուցադրենք վերնագիր՝ նշելով, որ նա արդեն գրանցված է։

Ընդհանուր առմամբ, ֆայլի կոդը form_register.phpմենք ստացանք սա.

Դուք արդեն գրանցված եք

Բրաուզերում գրանցման ձևով էջն այսպիսի տեսք ունի.


Օգտագործելով պահանջվող հատկանիշը՝ մենք բոլոր դաշտերը դարձրեցինք պարտադիր։

Ուշադրություն դարձրեք գրանցման ձևի կոդը, որտեղ ցուցադրվում է captcha-ն.


Պատկերի համար src հատկանիշի արժեքում մենք նշել ենք դեպի ֆայլ տանող ճանապարհը captcha.php, որը առաջացնում է այս captcha-ն:

Եկեք նայենք ֆայլի կոդը captcha.php:

Կոդը լավ մեկնաբանված է, ուստի ես կկենտրոնանամ միայն մեկ կետի վրա.

Ֆունկցիայի ներսում imageTtfText (), նշված է տառատեսակի ուղին verdana.ttf. Այսպիսով, որպեսզի captcha-ն ճիշտ աշխատի, մենք պետք է թղթապանակ ստեղծենք տառատեսակներ, և այնտեղ տեղադրեք տառատեսակի ֆայլը verdana.ttf. Այն կարող եք գտնել և ներբեռնել ինտերնետից, կամ վերցնել արխիվից այս հոդվածի նյութերով։

Մենք ավարտեցինք HTML կառուցվածքը, ժամանակն է առաջ գնալ:

Փոստի վավերականության ստուգում jQuery-ի միջոցով

Ցանկացած ձև պետք է ստուգի մուտքագրված տվյալների վավերականությունը և՛ հաճախորդի կողմից (օգտագործելով JavaScript, jQuery), և՛ սերվերի կողմից:

Մենք պետք է հատուկ ուշադրություն դարձնենք Email դաշտին։ Շատ կարևոր է, որ մուտքագրված փոստային հասցեն վավեր է։

Այս մուտքագրման դաշտի համար մենք սահմանել ենք էլփոստի տեսակը (type="email"), սա մի փոքր զգուշացնում է մեզ սխալ ձևաչափերի դեմ: Բայց դա բավարար չէ, քանի որ բրաուզերի կողմից մեզ տրամադրած կոդի տեսուչի միջոցով մենք հեշտությամբ կարող ենք փոխել հատկանիշի արժեքը տիպՀետ էլվրա տեքստը, և վերջ, մեր չեկն այլևս վավեր չի լինի։


Եվ այս դեպքում մենք պետք է ավելի հուսալի ստուգում կատարենք։ Դա անելու համար մենք կօգտագործենք jQuery գրադարանը JavaScript-ից:

jQuery գրադարանը միացնելու համար ֆայլում header.phpպիտակների միջև , փակման պիտակից առաջ , ավելացրեք այս տողը.

Այս տողից անմիջապես հետո մենք կավելացնենք էլփոստի վավերացման կոդը: Այստեղ մենք կավելացնենք ծածկագիր՝ մուտքագրված գաղտնաբառի երկարությունը ստուգելու համար։ Դրա երկարությունը պետք է լինի առնվազն 6 նիշ:

Օգտագործելով այս սկրիպտը, մենք ստուգում ենք մուտքագրված էլփոստի հասցեն վավերականության համար: Եթե ​​օգտվողը սխալ էլ. Եթե ​​ամեն ինչ լավ է, ապա մենք հեռացնում ենք սխալը և ակտիվացնում ենք ձևի ուղարկման կոճակը:

Եվ այսպես, մենք ավարտեցինք ձևի վավերացումը հաճախորդի կողմից: Այժմ մենք կարող ենք այն ուղարկել սերվեր, որտեղ նույնպես մի քանի ստուգումներ կանենք և տվյալների բազա կավելացնենք։

Օգտագործողի գրանցում

Մենք ձևը ուղարկում ենք ֆայլ՝ մշակման register.php, POST մեթոդի միջոցով։ Այս կարգավորիչի ֆայլի անունը նշված է հատկանիշի արժեքում գործողություն. Իսկ ուղարկման եղանակը նշված է հատկանիշի արժեքում մեթոդ.

Բացեք այս ֆայլը register.phpև առաջին բանը, որ մենք պետք է անենք, սեսիայի գործարկման գործառույթ գրելն ու նախկինում ստեղծած ֆայլը միացնելն է dbconnect.php(Այս ֆայլում մենք կապ ենք հաստատել տվյալների բազայի հետ): Եվ նաև, եկեք անմիջապես հայտարարենք բջիջները error_messagesԵվ հաջողության_հաղորդագրություններգլոբալ նիստերի զանգվածում: IN error_mesagesմենք կգրանցենք բոլոր սխալի հաղորդագրությունները, որոնք տեղի են ունենում ձևաթղթերի մշակման ընթացքում և ներս succes_messages, մենք կգրանցենք ուրախ հաղորդագրություններ։

Նախքան շարունակելը, մենք պետք է ստուգենք, թե արդյոք ձևն ընդհանրապես ներկայացվել է: Հարձակվողը կարող է դիտել հատկանիշի արժեքը գործողությունձևից և պարզեք, թե որ ֆայլն է մշակում այս ձևը: Եվ նա կարող է գաղափար ունենալ ուղղակիորեն գնալ այս ֆայլ՝ մուտքագրելով հետևյալ հասցեն բրաուզերի հասցեագոտում. http://site_address/register.php

Այսպիսով, մենք պետք է ստուգենք գլոբալ POST զանգվածի մի բջիջ, որի անունը համընկնում է մեր «Գրանցվել» կոճակի անվան հետ: Այս կերպ մենք ստուգում ենք՝ սեղմված է «Գրանցվել» կոճակը, թե ոչ։

Եթե ​​հարձակվողը փորձի ուղղակիորեն գնալ այս ֆայլ, նա սխալի հաղորդագրություն կստանա: Հիշեցնեմ, որ $address_site փոփոխականը պարունակում է կայքի անվանումը և այն հայտարարագրվել է ֆայլում dbconnect.php.

Captcha-ի արժեքը նիստում ավելացվել է, երբ այն ստեղծվել է, ֆայլում captcha.php. Որպես հիշեցում, ես ձեզ նորից կցուցադրեմ այս կոդը ֆայլից captcha.php, որտեղ captcha արժեքը ավելացվում է նիստին.

Հիմա եկեք անցնենք ինքնին ստուգմանը: Ֆայլում register.php, if բլոկի ներսում, որտեղ մենք ստուգում ենք, թե արդյոք սեղմված է «Գրանցվել» կոճակը, ավելի ճիշտ որտեղ նշված է « մեկնաբանությունը» // (1) Տարածք հաջորդ կոդի համար"մենք գրում ենք:

//Ստուգեք ստացված captcha-ն //Կտրեք բացատները տողի սկզբից և վերջից $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Համեմատե՛ք ստացված արժեքը նիստի արժեքի հետ. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Եթե captcha-ն ճիշտ չէ, ապա մենք օգտվողին վերադարձնում ենք գրանցման էջ, և այնտեղ մենք սխալի հաղորդագրություն կցուցադրենք նրան, որ նա սխալ captcha է մուտքագրել: $error_message = "

Սխալ. Դուք սխալ captcha եք մուտքագրել

"; // Պահպանեք սխալի հաղորդագրությունը նստաշրջանում: $_SESSION["error_messages"] = $error_message; // Օգտատիրոջը վերադարձրեք գրանցման էջի վերնագիր ("HTTP/1.1 301 Moved Permanently"); header ("Տեղադրում. " .$address_site ."/form_register.php"); //Դադարեցնել սկրիպտի ելքը();) // (2) Տեղադրել կոդի հաջորդ հատվածը )else( //Եթե captcha-ն չի փոխանցվել կամ դատարկ է, ելք ("

Սխալ. Չկա հաստատման կոդ, այսինքն՝ captcha կոդ։ Դուք կարող եք գնալ գլխավոր էջ:

"); }

Հաջորդը, մենք պետք է մշակենք ստացված տվյալները POST զանգվածից: Նախ և առաջ մենք պետք է ստուգենք գլոբալ POST զանգվածի պարունակությունը, այսինքն՝ այնտեղ կա՞ն բջիջներ, որոնց անունները համապատասխանում են մեր ձևի մուտքագրման դաշտերի անուններին։

Եթե ​​բջիջը գոյություն ունի, ապա այս բջիջից կտրում ենք տողի սկզբից և վերջից բացատները, հակառակ դեպքում՝ օգտատիրոջը վերահասցեավորում ենք գրանցման ձևով էջ:

Այնուհետև, բացատները կտրելուց հետո տողը ավելացնում ենք փոփոխականին և ստուգում այս փոփոխականի դատարկությունը, եթե դատարկ չէ, ապա անցնում ենք, այլապես օգտատիրոջը վերաուղղորդում ենք գրանցման ձևով էջ:

Տեղադրեք այս կոդը նշված վայրում" // (2) Տարածություն հաջորդ կոդի համար".

/* Ստուգեք, արդյոք ձևից ուղարկված տվյալներ կան $_POST գլոբալ զանգվածում և փաթեթավորեք ներկայացված տվյալները սովորական փոփոխականներով։*/ if(isset($_POST["first_name"]))( //Կտրեք բացատները սկզբից և տողի վերջը՝ $first_name = trim($_POST["first_name"]);//Ստուգեք փոփոխականի դատարկությունը if(!empty($first_name))( // Անվտանգության համար փոխարկեք հատուկ նիշերը HTML կազմի $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .= "

Մուտքագրեք ձեր անունը

Անվան դաշտը բացակայում է

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["last_name"]))( //Կտրել բացատները տողի սկզբից և վերջից $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // Անվտանգության համար, փոխարկեք հատուկ նիշերը HTML կազմի $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .= "

Խնդրում ենք մուտքագրել ձեր ազգանունը

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Պահպանեք սխալի հաղորդագրությունը նիստում։ $_SESSION["error_messages"] .= "

Ազգանուն դաշտը բացակայում է

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["email"]))( //Կտրել բացատները տողի սկզբից և վերջից $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) էլփոստի հասցեի ձևաչափը և դրա յուրահատկությունը ստուգելու կոդի գտնվելու վայրը )else( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .="

Մուտքագրեք ձեր էլ

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Պահպանեք սխալի հաղորդագրությունը նիստում։ $_SESSION["error_messages"] .= "

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["գաղտնաբառ"]))( //Կտրել բացատները տողի սկզբից և վերջից $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Գաղտնագրեք գաղտնաբառը $password = md5($password."top_secret"); )else( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .="

Մուտքագրեք ձեր գաղտնաբառը

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // Պահպանեք սխալի հաղորդագրությունը նիստում։ $_SESSION["error_messages"] .= "

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) // (4) Տվյալների բազայում օգտվողին ավելացնելու կոդը

Առանձնահատուկ նշանակություն ունի ոլորտը էլ. Մենք պետք է ստուգենք ստացված փոստային հասցեի ձևաչափը և դրա եզակիությունը տվյալների բազայում։ Այսինքն՝ նույն էլեկտրոնային հասցեով օգտվող կա՞ արդեն գրանցված։

Նշված վայրում» // (3) Կոդերի գտնվելու վայրը՝ փոստային հասցեի ձևաչափը և դրա յուրահատկությունը ստուգելու համար«ավելացրեք հետևյալ կոդը.

//Ստուգեք ստացված էլ. հասցեի ձևաչափը՝ օգտագործելով $reg_email = "/^**@(+(*+)*\.)++/i" սովորական արտահայտությունը; //Եթե ստացված էլ. հասցեի ձևաչափը չի համապատասխանում կանոնավոր արտահայտությանը if(!preg_match($reg_email, $email))( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .= "

Դուք սխալ նամակ եք մուտքագրել

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); ) // Մենք ստուգում ենք, թե արդյոք այդպիսի հասցե արդեն կա տվյալների բազայում: $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); / /Եթե ստացվածների թիվը կա ուղիղ մեկ տող, ինչը նշանակում է, որ այս էլ. հասցեով օգտվողն արդեն գրանցված է, եթե ($result_query->num_rows == 1)( //Եթե ստացված արդյունքը կեղծ չէ, եթե (($row = $result_query->fetch_assoc()) != false) ( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .= "

Այս էլփոստի հասցեով օգտվողն արդեն գրանցված է

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր ("HTTP/1.1 301 Մշտապես տեղափոխվել է"); header ("Տեղադրանքը՝ ".$address_site."/form_register.php"); )else( // Պահպանեք սխալի հաղորդագրությունը նիստին $_SESSION["error_messages"] .= "

Սխալ տվյալների բազայի հարցում

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր ("HTTP/1.1 301 Մշտապես տեղափոխված"); header("Տեղադրումը՝ ".$address_site."/form_register.php"); ) /* փակելով ընտրությունը */ $ result_query-> close();//Stop the script exit();) /* փակելով ընտրությունը */ $result_query->close();

Եվ այսպես, մենք ավարտեցինք բոլոր ստուգումները, ժամանակն է օգտվողին ավելացնել տվյալների բազա: Նշված վայրում» // (4) Տվյալների բազայում օգտագործող ավելացնելու կոդի համար«ավելացրեք հետևյալ կոդը.

//Հարցում տվյալների բազայում օգտվող ավելացնելու համար $result_query_insert = $mysqli->query("INSERT INTO `users" (first_name, ազգանուն, էլ. փոստ, գաղտնաբառը) VALUES ("".$first_name."", "".$last_name ." ", "".$email.", "".$password."")"); if(!$result_query_insert)( // Պահպանեք սխալի հաղորդագրությունը նիստում: $_SESSION["error_messages"] .= "

Օգտատիրոջ տվյալների բազայում ավելացնելու հարցումի սխալ

"; //Վերադարձրեք օգտատիրոջը գրանցման էջի վերնագիր("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); //Stop the script exit(); )else( $_SESSION["success_messages"] = "

Գրանցումը հաջողությամբ ավարտվեց!!!
Այժմ կարող եք մուտք գործել՝ օգտագործելով ձեր օգտանունը և գաղտնաբառը:

"; // Օգտագործողին ուղարկեք թույլտվության էջի վերնագիր ("HTTP/1.1 301 տեղափոխվել է մշտապես"); header ("Գտնվելու վայրը՝ ".$address_site."/form_auth.php"); ) /* Հարցումն ավարտվում է */ $ result_query_insert-> close();//Փակել կապը տվյալների բազայի հետ $mysqli->close();

Եթե ​​տվյալների բազայում օգտվող ավելացնելու հարցումում սխալ է տեղի ունեցել, մենք այս սխալի մասին հաղորդագրություն ենք ավելացնում նիստին և օգտատիրոջը վերադարձնում ենք գրանցման էջ:

Հակառակ դեպքում, եթե ամեն ինչ լավ ընթանա, մենք նաև հաղորդագրություն ենք ավելացնում նիստին, բայց այս անգամ ավելի հաճելի է, այն է՝ մենք օգտատիրոջն ասում ենք, որ գրանցումը հաջող է եղել։ Եվ մենք այն վերահղում ենք էջին թույլտվության ձևով:

Էլփոստի հասցեի ձևաչափը և գաղտնաբառի երկարությունը ստուգելու սցենարը գտնվում է ֆայլում header.php, ուստի այն կտարածվի նաև այս ձևի դաշտերի վրա։

Նիստը սկսվում է նաև ֆայլում header.php, այնպես որ ֆայլում form_auth.phpՍեսիա սկսելու կարիք չկա, քանի որ մենք սխալ կստանանք։


Ինչպես արդեն ասացի, այստեղ աշխատում է նաև էլփոստի հասցեի ձևաչափը և գաղտնաբառի երկարությունը ստուգելու սցենարը։ Հետևաբար, եթե օգտվողը մուտքագրի սխալ էլփոստի հասցե կամ կարճ գաղտնաբառ, նա անմիջապես կստանա սխալի հաղորդագրություն: Կոճակ ներս մտնելկդառնա անգործուն.

Սխալները շտկելուց հետո կոճակը ներս մտնելակտիվանում է, և օգտատերը կկարողանա ձևը ուղարկել սերվեր, որտեղ այն կմշակվի:

Օգտագործողի թույլտվություն

Արժեքը վերագրելու համար գործողությունթույլտվության հաշմանդամն ունի նշված ֆայլ auth.php, սա նշանակում է, որ ձևը կմշակվի այս ֆայլում։

Եվ այսպես, բացեք ֆայլը auth.phpև գրեք կոդ՝ թույլտվության ձևը մշակելու համար: Առաջին բանը, որ դուք պետք է անեք, նիստ սկսելն ու ֆայլը միացնելն է dbconnect.phpտվյալների շտեմարանին միանալու համար:

Երբ դուք սեղմում եք կայքից դուրս գալու հղումը, մենք տեղափոխվում ենք ֆայլ logout.php, որտեղ մենք պարզապես ոչնչացնում ենք նիստի էլեկտրոնային հասցեով և գաղտնաբառով բջիջները։ Դրանից հետո մենք օգտվողին վերադարձնում ենք այն էջը, որի վրա սեղմվել է հղումը ելք.

Ֆայլի կոդը logout.php:

Այսքանը: Այժմ դուք գիտեք, թե ինչպես կիրառել և մշակել օգտվողների գրանցման և թույլտվության ձևերը ձեր կայքում: Այս ձևերը կարելի է գտնել գրեթե յուրաքանչյուր կայքում, ուստի յուրաքանչյուր ծրագրավորող պետք է իմանա, թե ինչպես ստեղծել դրանք:

Մենք նաև սովորեցինք, թե ինչպես վավերացնել մուտքագրված տվյալները ինչպես հաճախորդի կողմից (բրաուզերում՝ օգտագործելով JavaScript, jQuery), այնպես էլ սերվերի կողմից (օգտագործելով PHP): Մենք նաև սովորեցինք, թե ինչպես իրականացնել կայքից դուրս գալու ընթացակարգ։

Բոլոր սցենարները փորձարկված են և աշխատում են։ Դուք կարող եք ներբեռնել արխիվը այս փոքրիկ կայքի ֆայլերով այս հղումից։

Հետագայում հոդված կգրեմ, որտեղ կնկարագրեմ. Եվ ես նախատեսում եմ նաև հոդված գրել, որտեղ կբացատրեմ (առանց էջը վերաբեռնելու): Այսպիսով, նոր հոդվածների թողարկման մասին տեղեկացված լինելու համար կարող եք բաժանորդագրվել իմ կայքին։

Հարցերի դեպքում դիմեք ինձ, իսկ եթե հոդվածում սխալ եք նկատում, խնդրում եմ տեղեկացրեք ինձ:

Դասի պլան (մաս 5):

  • Թույլտվության ձևի համար HTML կառուցվածքի ստեղծում
  • Մենք մշակում ենք ստացված տվյալները
  • Մենք ցուցադրում ենք օգտատիրոջ ողջույնը կայքի վերնագրում
  • Ձեզ դուր եկավ հոդվածը:

    Մենք կսովորենք, թե ինչպես կատարել օգտվողի պարզ նույնականացում կայքում: Կայքը կարող է էջեր ունենալ միայն լիազորված օգտատերերի համար, և դրանք լիովին կգործեն, եթե դրանց մեջ ավելացնենք մեր իսկորոշման բլոկը: Այն ստեղծելու համար ձեզ հարկավոր է MySQL տվյալների բազա: Այն կարող է ունենալ 5 սյունակ (նվազագույնը), կամ ավելին, եթե ցանկանում եք տեղեկություններ ավելացնել օգտվողների մասին: Տվյալների բազան անվանենք «Userauth»:

    Եկեք դրա մեջ ստեղծենք հետևյալ դաշտերը՝ ID՝ օգտատերերի թիվը հաշվելու համար, UID՝ օգտատիրոջ եզակի նույնականացման համարի համար, Օգտվողի անունը՝ օգտվողի անվան համար, Էլ. Դուք կարող եք օգտագործել ձեր առկա տվյալների բազան՝ օգտատիրոջը լիազորելու համար, պարզապես, ինչպես նոր տվյալների բազայի դեպքում, դրանում ստեղծեք հետևյալ աղյուսակը.

    MySQL կոդը

    ՍՏԵՂԾԵՔ «Օգտագործողներ» («ID» int (11) NOT NULL AUTO_INCREMENT, «UID» int (11) NOT NULL, «Username» տեքստը NOT NULL, «Email» տեքստը NOT NULL, «Password» տեքստը NOT NULL, ՀԻՄՆԱԿԱՆ ԲԱՆԱԼԻ (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Հիմա եկեք ստեղծենք «sql.php» ֆայլը։ Այն պատասխանատու է տվյալների շտեմարանին միանալու համար: Այս կոդը, առաջին հերթին, փոփոխականներ է ստեղծում սերվերի և օգտագործողի համար, երբ նա միանում է սերվերին: Երկրորդ, այն կընտրի տվյալների բազան, այս դեպքում «USERAUTH»: Այս ֆայլը պետք է ներառվի «log.php» և «reg.php»՝ տվյալների բազա մուտք գործելու համար:

    PHP կոդ

    Հաջորդը մուտքի էջն է, թող այն կոչվի «login.php»: Նախ, այն ստուգում է մուտքագրված տվյալները սխալների համար: Էջն ունի օգտանուն, գաղտնաբառ, ուղարկել կոճակը և գրանցման հղումը: Երբ օգտատերը սեղմում է «Մուտք» կոճակը, ձևը կմշակվի «log.php» ֆայլի կոդով և այնուհետև մուտք կգործի:

    PHP կոդ

    Մուտքի ձև

    Օգտագործողի անունը
    Գաղտնաբառ
    Գրանցում

    Այնուհետև մենք գրում ենք սկրիպտ՝ համակարգ մուտք գործելու համար։ Եկեք այն անվանենք «log.php»: Այն ունի գործառույթ՝ մաքրելու մուտքային տվյալները SQL ներարկումներից, որոնք կարող են փչացնել ձեր սցենարը: Երկրորդ, այն ստանում է ձևի տվյալները և ստուգում դրանց ճշգրտությունը: Եթե ​​մուտքագրված տվյալները ճիշտ են, սկրիպտը ուղարկում է օգտատիրոջը լիազորված օգտվողների էջ, եթե ոչ, այն սահմանում է սխալներ և ուղարկում է օգտատիրոջը մուտքի էջ:

    PHP կոդ

    Եկեք գրանցման էջ կազմենք, այն անվանենք «register.php»: Այն նման է մուտքի էջին, միայն թե ունի ևս մի քանի դաշտ, և գրանցման հղման փոխարեն կա հղում դեպի login.php, եթե օգտատերը արդեն ունի հաշիվ։

    PHP կոդ

    Գրանցման ձեւը

    Օգտագործողի անունը
    Էլ
    Գաղտնաբառ
    Կրկնեք գաղտնաբառը
    Ես հաշիվ ունեմ

    Այժմ մենք կստեղծենք գրանցման սցենար «reg.php» ֆայլում: Այն կներառի «sql.php»՝ տվյալների բազային միանալու համար: Ներածման դաշտը մաքրելու համար օգտագործվում է նույն գործառույթը, ինչ մուտքի սկրիպտում: Փոփոխականները սահմանվում են հնարավոր սխալների համար: Հաջորդը եզակի նույնացուցիչ ստեղծելու գործառույթ է, որը նախկինում երբեք չի տրամադրվել: Այնուհետև գրանցման ձևից տվյալները հանվում և ստուգվում են: Ստուգում է կատարվում՝ համոզվելու համար, որ էլ.փոստի հասցեն ճիշտ ձևաչափով է, և որ գաղտնաբառը կրկին ճիշտ է մուտքագրվել: Այնուհետև սկրիպտը ստուգում է, թե արդյոք տվյալների բազայում կա նույն անունով օգտվող, և եթե այո, ապա հաղորդում է սխալ: Ի վերջո, կոդը օգտվողին ավելացնում է տվյալների բազան:

    PHP կոդ

    Դուք նաև պետք է ստեղծեք սկրիպտ՝ օգտվողին համակարգից դուրս բերելու համար: Այն դադարեցնում է նիստը տվյալ եզակի ID-ով և անունով օգտվողի համար, այնուհետև վերահղում է օգտատիրոջը մուտքի էջ:

    PHP կոդ

    Վերջապես, «auth.php» սկրիպտը կարող է օգտագործվել էջերը հասանելի դարձնելու համար միայն լիազորված օգտվողների համար: Այն ստուգում է մուտքի տվյալները և, եթե դրանք ճիշտ են, օգտվողին թույլ է տալիս թերթել էջերը, իսկ եթե ոչ, խնդրում է մուտք գործել: Բացի այդ, եթե ինչ-որ մեկը փորձի կոտրել կայքը՝ ստեղծելով նիստերից մեկը, այն կդադարեցվի, ինչպես ընդհանուր դեպքում։

    PHP կոդ

    Վերոնշյալ օրենսգրքի պայմաններից մեկը հարցի առարկան է:

    Հետևյալ կոդը պետք է տեղադրվի լիազորված օգտատերերի էջում, այն կոչվում է, օրինակ, «member.php», բայց ձերը կարելի է անվանել այն, ինչ ցանկանում եք:

    PHP կոդ

    Դուք իրավասու եք մուտք գործել այս էջ: Դուրս գալ ( )

    Օգտատիրոջ նույնականացումը պատրաստ է:

    Վերջին անգամ փոփոխվել է 2018 թվականի ապրիլի 5-ին Vincy-ի կողմից:

    Օգտատիրոջ մուտքը և գրանցումը հիմնական պահանջն է ցանկացած CMS հավելվածի համար: Սա նախագիծն սկսելիս նախնական աշխատանքն է: Օգտատիրոջ մուտքի վավերացումով հավելվածն ապահովում է անվտանգություն՝ կանխելով անանուն մուտքը: Մեր հավելվածում նույնականացումը միացնելու տարբեր եղանակներ կան, օրինակ՝ միացնելով OAuth մուտքը կամ կիրառելով Single Sign-on (SSO) և նմանատիպ այլ եղանակներ: Նախորդ ձեռնարկում մենք տեսել ենք, թե ինչպես իրականացնել և նաև դրա մասին:

    Այս օրինակը ներառում է ինչպես մուտքի, այնպես էլ գրանցման գործառույթները: Ես օգտագործել եմ MySQL տվյալների բազան գրանցված անդամներին պահելու համար: Օգտատիրոջ գրանցումը կպարունակի մուտքագրում` օգտվողից մանրամասներ ստանալու համար: Այս ձևը ներկայացնելիս ձևի տվյալները տեղադրվում են PHP-ում և պահվում տվյալների բազայում: Օգտագործողի գաղտնաբառը կգաղտնագրվի տվյալների բազայում պահելուց առաջ: նախքան PHP կոդում փակցնելը: Երբ օգտատերը մուտք է գործել վավեր հավատարմագրերով, ապա օգտվողին և նրան կթույլատրվի շարունակել հետագա աշխատանքը:

    Օգտագործողի գրանցման ձև

    Այս կոդը պետք է օգտագործողին ցույց տա գրանցման ձևը: Երբ օգտվողը ներկայացնում է ձևը իր մանրամասներով, JavaScript ֆունկցիան կկանչվի՝ վավերացնելու օգտատիրոջ մուտքագրումը: Հաջող վավերացումից հետո PHP կոդը կկարդա հրապարակված ձևի տվյալները՝ տվյալների բազայի ներդիրը կատարելու համար: