Xayrli kun do'stlar! Keling, PHP da foydalanuvchini ro'yxatdan o'tkazishni ko'rib chiqaylik. Birinchidan, foydalanuvchini ro'yxatdan o'tkazish shartlarini aniqlaymiz:

  • Parol algoritm yordamida shifrlangan MD5
  • Parol "tuz" bo'ladi
  • Kirish bandligini tekshirish
  • Foydalanuvchini xat orqali faollashtirish.
  • Ma'lumotlarni yozib olish va saqlash DBMS MySQL

Ushbu skriptni yozish uchun biz foydalanuvchini ro'yxatdan o'tkazish nima ekanligini tushunishimiz kerak. Foydalanuvchini ro'yxatdan o'tkazish - bu haqiqiy foydalanuvchi ma'lumotlarini olish, ma'lumotlarni qayta ishlash va saqlash.

Oddiy so'zlar bilan aytganda, ro'yxatdan o'tish shunchaki ma'lum ma'lumotlarni yozib olish va saqlash bo'lib, uning yordamida bizning holatlarimizda foydalanuvchiga avtorizatsiya qilishimiz mumkin - bu Login va Parol.

Avtorizatsiya - ma'lum bir shaxsga yoki shaxslar guruhiga muayyan harakatlarni amalga oshirish huquqini berish, shuningdek, ushbu harakatlarni amalga oshirishga urinishda ushbu huquqlarni tekshirish jarayoni. Oddiy qilib aytganda, avtorizatsiya yordamida biz saytimizdagi muayyan tarkibga kirishni cheklashimiz mumkin.

Keling, avtorizatsiya bilan kirishimizni amalga oshirish uchun skript katalogining tuzilishini ko'rib chiqaylik. Biz skriptlarni mantiqiy qismlarga ajratishimiz kerak. Biz ro'yxatga olish va avtorizatsiya modullarini alohida katalogga joylashtirdik. Shuningdek, biz ma'lumotlar bazasi ulanishini alohida kataloglarga joylashtiramiz. MySQL, maxsus funktsiyalarga ega fayl, uslublar fayli css va bizning shablonimiz HTML. Ushbu tuzilma skriptlar bo'ylab tezda harakat qilish imkonini beradi. Tasavvur qiling-a, sizda modullar to'plami va boshqalar bo'lgan katta saytingiz bor. va agar tartib bo'lmasa, bunday tartibsizlikda biror narsa topish juda qiyin bo'ladi.

Chunki biz barcha ma'lumotlarni saqlaymiz DBMS MySQL, keyin ro'yxatga olish ma'lumotlarini saqlaydigan kichik jadval yarataylik.

Avval siz ma'lumotlar bazasida jadval yaratishingiz kerak. Keling, stolga qo'ng'iroq qilaylik bez_reg qayerda bez jadval prefiksi hisoblanadi va reg jadval nomi.

Jadval tuzilishi: bez_reg

-- -- `bez_reg` jadval tuzilishi -- AGAR MAVJUD BO`lmasa JADVAL YARATING `bez_reg` (`id` int(11) NO NULL AUTO_INCREMENT, `login` varchar(200) NO NULL, `pas` varchar(32) NULL EMAS , `salt` varchar(32) NULL EMAS, `active_hex` varchar(32) NULL EMAS, `status` int(1) NULL EMAS, BIRINCHI KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Endi keyingi ish uchun asosiy skriptlarni yarataylik.

INDEX.PHP FAYL

CONFIG.PHP FAYL

"); ?>

Fayl 404.HTML

Xato 404

Xato 404

Sahifada 404 xatolik yuz berdi

Qaytarmoq

BD.PHP fayli

INDEX.HTML FAYL

PHP MySQL foydalanuvchisini faollashtirish elektron pochtasi bilan ro'yxatdan o'tkazish

FUNCT.PHP FILE

"."\n"; if(is_array($data)) ( foreach($data $val) $err .= "

  • ".$val."
  • "."\n"; ) else $err .= "
  • ".$ma'lumotlar."
  • "."\n"; $err .= ""."\n"; return $err; ) /**Oddiy MySQL so'rovlar o'rami * @param string $sql */ funktsiya mysqlQuery($sql) ( $res = mysql_query($sql); /* Natijani tekshirish Bu ko'rsatilgan MySQL-ga yuborilgan haqiqiy so'rov, shuningdek xato.*/ if(!$res) ( $message = "Noto'g'ri so'rov: " . mysql_error() . "\n"; $message .= "To'liq so'rov: " . $ sql; die($message); ) return $res; ) /**Oddiy tuz generatori * @param string $sql */ function salt() ( $salt = substr(md5(uniqid()), - 8); return $tuz;)

    Keling, ro'yxatdan o'tishni yozishni boshlaylik. Boshlash uchun foydalanuvchi o'z ma'lumotlarini qayta ishlash uchun kiritishi uchun ro'yxatdan o'tish shakli shablonini yaratishimiz kerak. Keyinchalik, foydalanuvchi kiritgan ma'lumotlarning to'g'riligini tekshiradigan ariza ishlov beruvchisining o'zini yozishimiz kerak bo'ladi. Ma'lumotlar muvaffaqiyatli tekshirilgandan so'ng, biz uni ma'lumotlar bazasiga yozamiz va uning hisobini faollashtirish uchun foydalanuvchiga elektron pochta xabarini yuboramiz.

    REG.PHP fayli

    Siz ro'yxatdan o'tdingiz! Iltimos, hisobingizni faollashtiring!!"; //Hisobni faollashtiring if(isset($_GET["key"]))) ( //Kalitni tekshiring $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `active_hex` = "". escape_str ( $_GET["key"]) ."""; $res = mysqlQuery($sql); if(mysql_num_rows($res) == 0) $err = "Faollashtirish kaliti yaroqsiz!"; //Xatolarni tekshiring va foydalanuvchiga ko'rsatish if(count($err) > 0) echo showErrorMessage($err); else ( //Foydalanuvchi manzilini oling $row = mysql_fetch_assoc($res); $email = $row["login"]; //Hisob qaydnomasi foydalanuvchisini faollashtirish $sql = "UPDATE `".BEZ_DBPREFIX ."reg` SET `status` = 1 WHERE `login` = "".$email ."""; $res = mysqlQuery($sql); / /Faollashtirish e-pochtasini yuborish $title = "(!LANG:Http://web-saytdagi hisobingiz muvaffaqiyatli faollashtirildi."; $message = "Поздравляю Вас, Ваш аккаунт на http://сайт успешно активирован"; sendMessageMail($email, BEZ_MAIL_AUTOR, $title, $message); /*Перенаправляем пользователя на нужную нам страницу*/ header("Location:". BEZ_HOST ."less/reg/?mode=reg&active=ok"); exit; } } /*Если нажата кнопка на регистрацию, начинаем проверку*/ if(isset($_POST["submit"])) { //Утюжим пришедшие данные if(empty($_POST["email"])) $err = "Поле Email не может быть пустым!"; else { if(!preg_match("/^!} [elektron pochta himoyalangan](+\.)+(2,6)$/i", $_POST["email"])) $err = "E-pochta noto'g'ri kiritildi"."\n"; ) if(empty($_POST[ "o'tish" ])) $err = "Parol maydoni bo'sh bo'lishi mumkin emas"; if(empty($_POST["pass2"])) $err = "Parolni tasdiqlash maydoni bo'sh bo'lishi mumkin emas"; //Xatolarni tekshiring va foydalanuvchiga ko'rsating (count($err) > 0) echo showErrorMessage($err); else ( /*Kiritilgan maʼlumotlarni tekshirishda davom eting. Mos parollarni tekshiring*/ if($_POST["pass"] != $_POST["pass2" ] ) $err = "Parollar mos emas"; //Xatolarni tekshiring va foydalanuvchiga koʻrsating if(count($err) > 0) echo showErrorMessage($err); else ( /*Bizda shunday foydalanuvchi bor yoki yoʻqligini tekshiring ma'lumotlar bazasi* / $sql = "Tanlang `login` FROM`".BEZ_DBPREFIX ."reg` WHERE `login` = "".escape_str($_POST["email"]) ."""; $res = mysqlQuery($ sql); if(mysql_num_rows($res) > 0) $err = "Kirish: Kechirasiz: ". $_POST["elektron pochta"] ." band!"; //Xatolarni tekshiring va foydalanuvchiga ko'rsating if(count($err) > 0) echo showErrorMessage($err); else ( //Tuzning HASHini oling $salt = tuz(); // Parolni tuzlang $pass = md5(md5($_POST["pass"]).$salt); /*Agar hammasi yaxshi bo'lsa, ma'lumotlarni ma'lumotlar bazasiga yozing*/ $sql = "INSERT INTO `". BEZ_DBPREFIX ."reg ` VALUES("", "" .escape_str($_POST["email"]) ."", "". $pass ."", "". $salt ."", "". md5($salt) . "", 0)"; $ res = mysqlQuery($sql); //Aktivatsiya elektron pochta manzilini yuborish $url = BEZ_HOST ."less/reg/?mode=reg&key=". md5($salt); $title = "(! LANG: http:/ /veb-saytda ro'yxatdan o'tish"; $message = "Для активации Вашего акаунта пройдите по ссылке ". $url .""; sendMessageMail($_POST["email"], BEZ_MAIL_AUTOR, $title, $message); //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=reg&status=ok"); exit; } } } } ?>!}

    REG_FORM.HTML FILE

    PHP MySQL foydalanuvchisini faollashtirish elektron pochtasi bilan ro'yxatdan o'tkazish

    Elektron pochta *:
    Parol *:
    Parolni tasdiqlash *:

    Belgisi bo'lgan maydonlar * talab qilinadi

    Bizning foydalanuvchi ro'yxatdan o'tishimiz tayyor bo'lgani uchun avtorizatsiyani yozish vaqti keldi. Biz foydalanuvchini avtorizatsiya qilish uchun shakl yaratamiz, keyin avtorizatsiya shaklini ishlov beruvchini yozamiz va nihoyat, biz skript qilamiz. show.php bu bizga tizimda vakolatli yoki yo'qligini ko'rsatadi.

    AUTH.PHP FILE

    0) echo showErrorMessage($err); else ( /*Foydalanuvchini autentifikatsiya qilish uchun maʼlumotlar bazasini olish soʻrovini yaratish*/ $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `login` = "". escape_str($_POST["email"]) ." " AND `status` = 1"; $res = mysqlQuery($sql); //Agar login mos kelsa, parolni tekshiring if(mysql_num_rows($res) > 0) ( //Jadvaldan ma'lumotlarni olish $row = mysql_fetch_assoc( $res) ); if(md5(md5($_POST["pass"]).$row["tuz"]) == $row["pass"]) ( $_SESSION["user"] = rost; // Parametrlarni tiklash header("Joylashuv:". BEZ_HOST ."less/reg/?mode=auth"); exit; ) else echo showErrorMessage("Noto'g'ri parol!"); ) else echo showErrorMessage("Login" ". $_POST["elektron pochta"] ." topilmadi!"); ))) ?>

    PHP ning so'nggi versiyasiga ega bo'lganlar uchun men ushbu skriptni ishlataman PDO chunki kengaytma MySQL eskirgan va PHP ning yangi versiyasidan olib tashlangan. Ro'yxatdan o'tish va avtorizatsiya php mysql pdo yuklab olish

    Arxiv 2015-yil 24-fevralda yangilangan.

    Diqqat: Agar siz ushbu skriptni mahalliy serverda ishlatsangiz DENVER,XAMPP, keyin pochta qutingizga xatlarni kutmasligingiz kerak. Xatlar stendda yuborish. DA Denver ularni yo'lda topishingiz mumkin Z:\tmp\!sendmail\ Ushbu fayllarni istalgan elektron pochta mijozida ochishingiz mumkin.

    Ushbu maqolada siz o'rganasiz ro'yxatga olish va avtorizatsiya shaklini qanday yaratish kerak HTML, JavaScript, PHP va MySql-dan foydalanish. Bunday shakllar, uning turidan qat'i nazar, deyarli har bir saytda qo'llaniladi. Ular forum uchun, onlayn-do'kon va ijtimoiy tarmoqlar (masalan, Facebook, Twiter, Odnoklassniki) va boshqa ko'plab saytlar uchun yaratilgan.

    Agar sizning mahalliy kompyuteringizda saytingiz bo'lsa, umid qilamanki, sizda allaqachon mavjud. Busiz hech narsa ishlamaydi.

    Ma'lumotlar bazasida jadval yaratish

    Foydalanuvchilarni ro'yxatga olishni amalga oshirish uchun bizga birinchi navbatda ma'lumotlar bazasi kerak. Agar sizda allaqachon mavjud bo'lsa, unda ajoyib, aks holda siz uni yaratishingiz kerak. Maqolada men buni qanday qilishni batafsil tushuntiraman.

    Shunday qilib, bizda ma'lumotlar bazasi (qisqartirilgan JB) bor, endi biz jadval yaratishimiz kerak foydalanuvchilar unda biz ro'yxatdan o'tgan foydalanuvchilarimizni qo'shamiz.

    Ma'lumotlar bazasida jadvalni qanday yaratish kerak, men maqolada ham tushuntirdim. Jadvalni yaratishdan oldin uning qanday maydonlarni o'z ichiga olishini aniqlashimiz kerak. Ushbu maydonlar ro'yxatga olish formasidagi maydonlarga mos keladi.

    Shunday qilib, biz o'yladik, bizning formamiz qanday maydonlarga ega bo'lishini tasavvur qildik va jadval tuzdik foydalanuvchilar ushbu maydonlar bilan:

    • id- Identifikator. Maydon id ma'lumotlar bazasidagi har bir jadvalda bo'lishi kerak.
    • ism- Ismni saqlash uchun.
    • familiya- Familiyani saqlash uchun.
    • elektron pochta- Pochta manzilini saqlash uchun. Biz login sifatida elektron pochtadan foydalanamiz, shuning uchun bu maydon noyob bo'lishi kerak, ya'ni UNIQUE indeksiga ega bo'lishi kerak.
    • email_status- Pochta tasdiqlangan yoki tasdiqlanmaganligini ko'rsatadigan maydon. Agar pochta tasdiqlansa, u 1 qiymatiga, aks holda 0 qiymatiga ega bo'ladi.
    • parol- Parolni saqlash uchun.


    Agar roʻyxatdan oʻtish formangizda yana bir qancha maydonlar boʻlishini istasangiz, ularni shu yerga ham qoʻshishingiz mumkin.

    Mana, bizning stolimiz foydalanuvchilar tayyor. Keling, keyingi bosqichga o'tamiz.

    Ma'lumotlar bazasiga ulanish

    Biz ma'lumotlar bazasini yaratdik, endi unga ulanishimiz kerak. Biz MySQLi PHP kengaytmasi yordamida ulanamiz.

    Saytimiz papkasida nomli fayl yarating dbconnect.php, va unda biz quyidagi skriptni yozamiz:

    Ma'lumotlar bazasiga ulanish xatosi. Xato tavsifi: ".mysqli_connect_error()."

    "; exit(); ) // Ulanish kodlashini o'rnating $mysqli->set_charset("utf8"); //Qulaylik uchun bu erga bizning saytimiz nomini o'z ichiga olgan o'zgaruvchini qo'shing $address_site = "http://testsite .local" ; ?>

    Bu fayl dbconnect.php shakl ishlov beruvchilariga ulanishi kerak bo'ladi.

    O'zgaruvchiga e'tibor bering $address_site, bu erda men o'zim ishlaydigan test saytim nomini ko'rsatdim. Shunga ko'ra saytingiz nomini ko'rsatasiz.

    Sayt tuzilishi

    Endi saytimizning HTML tuzilishini ko'rib chiqamiz.

    Sayt sarlavhasi va altbilgisini alohida fayllarga ko'chiring, header.php va footer.php. Biz ularni barcha sahifalarda bog'laymiz. Ya'ni, asosiy (fayl index.php), ro'yxatdan o'tish shakli (fayl form_register.php) va avtorizatsiya shakli bilan sahifada (fayl form_auth.php).

    Bizning havolalarimiz bilan bloklash, ro'yxatga olish va ruxsat, sayt sarlavhasiga qo'shing, shunda ular barcha sahifalarda ko'rsatiladi. Bitta havola kiritiladi ro'yxatga olish shakli sahifasi(fayl form_register.php) va ikkinchisi bilan sahifaga avtorizatsiya shakli(fayl form_auth.php).

    header.php faylining mazmuni:

    Saytimiz nomi

    Natijada bizning asosiy sahifamiz quyidagicha ko'rinadi:


    Albatta, sizning saytingiz butunlay boshqacha tuzilishga ega bo'lishi mumkin, ammo bu biz uchun hozir muhim emas. Asosiysi, ro'yxatdan o'tish va avtorizatsiya qilish uchun havolalar (tugmalar) mavjud.

    Endi ro'yxatdan o'tish shakliga o'tamiz. Siz allaqachon tushunganingizdek, bizda fayl mavjud form_register.php.

    Biz ma'lumotlar bazasiga o'tamiz (phpMyAdmin-da), jadval tuzilishini ochamiz foydalanuvchilar va bizga qanday sohalar kerakligini ko'ring. Shunday qilib, bizga ism va familiyani kiritish uchun maydonlar, pochta manzilini (elektron pochta) kiritish maydoni va parolni kiritish uchun maydon kerak. Va xavfsizlik maqsadida biz captcha kiritish maydonini qo'shamiz.

    Serverda ro'yxatdan o'tish shaklini qayta ishlash natijasida turli xil xatolar yuzaga kelishi mumkin, buning natijasida foydalanuvchi ro'yxatdan o'ta olmaydi. Shuning uchun, foydalanuvchi nima uchun ro'yxatdan o'tish muvaffaqiyatsizlikka uchraganini tushunishi uchun unga ushbu xatolar haqida xabarlarni ko'rsatish kerak.

    Shaklni ko'rsatishdan oldin biz sessiyadagi xato xabarlarini ko'rsatish uchun blok qo'shamiz.

    Va yana bir lahza, agar foydalanuvchi allaqachon avtorizatsiya qilingan bo'lsa va qiziqish uchun u brauzerning manzil satriga yozish orqali to'g'ridan-to'g'ri ro'yxatdan o'tish sahifasiga kiradi. website_url/form_register.php, keyin bu holda, ro'yxatdan o'tish shakli o'rniga, biz allaqachon ro'yxatdan o'tgan degan sarlavhani ko'rsatamiz.

    Umuman olganda, fayl kodi form_register.php biz buni shunday oldik:

    Siz allaqachon ro'yxatdan o'tgansiz

    Brauzerda ro'yxatdan o'tish sahifasi quyidagicha ko'rinadi:


    Yordamida zarur atribut, biz barcha maydonlarni majburiy qilib qo'ydik.

    Qayerda ro'yxatdan o'tish shakli kodiga e'tibor bering captcha ko'rsatiladi:


    Biz rasm uchun src atributining qiymatida faylga yo'lni ko'rsatdik captcha.php, bu captcha ni yaratadi.

    Keling, fayl kodini ko'rib chiqaylik captcha.php:

    Kod yaxshi izohlangan, shuning uchun men faqat bir nuqtaga e'tibor qarataman.

    Funktsiya ichida imageTtfText(), shriftga yo'l belgilanadi verdana.ttf. Shunday qilib, captcha to'g'ri ishlashi uchun biz papka yaratishimiz kerak shriftlar, va shrift faylini u erga qo'ying verdana.ttf. Siz uni Internetdan topishingiz va yuklab olishingiz yoki ushbu maqolaning materiallari bilan arxivdan olishingiz mumkin.

    Biz HTML tuzilmasi bilan tugatdik, davom etish vaqti keldi.

    JQuery yordamida elektron pochtani tekshirish

    Har qanday shakl mijoz tomonida (JavaScript, jQuery yordamida) va server tomonida kiritilgan ma'lumotlarni tekshirishni talab qiladi.

    Elektron pochta maydoniga alohida e'tibor qaratishimiz kerak. Kiritilgan elektron pochta manzili haqiqiy bo'lishi juda muhimdir.

    Ushbu kiritish maydoni uchun biz elektron pochta turini o'rnatdik (type="email"), bu bizni noto'g'ri formatlardan biroz ogohlantiradi. Ammo, bu etarli emas, chunki brauzer bizga taqdim etadigan kod inspektori orqali siz atributning qiymatini osongina o'zgartirishingiz mumkin. turi bilan elektron pochta yoqilgan matn, va tamom, bizning chekimiz endi haqiqiy emas.


    Va bu holda, biz yanada ishonchli tekshirishni amalga oshirishimiz kerak. Buning uchun JavaScript-dan jQuery kutubxonasidan foydalanamiz.

    jQuery kutubxonasini ulash uchun faylda header.php teglar orasida , yopilish tegidan oldin , ushbu qatorni qo'shing:

    Ushbu qatordan so'ng elektron pochtani tekshirish kodini qo'shing. Bu erda biz kiritilgan parol uzunligini tekshirish uchun kodni qo'shamiz. U kamida 6 ta belgidan iborat boʻlishi kerak.

    Ushbu skript yordamida biz kiritilgan elektron pochta manzilining haqiqiyligini tekshiramiz. Agar foydalanuvchi noto'g'ri elektron pochta manzilini kiritgan bo'lsa, biz bu haqda xatolikni ko'rsatamiz va formaning yuborish tugmasini o'chirib qo'yamiz. Agar hamma narsa yaxshi bo'lsa, biz xatoni olib tashlaymiz va formaning yuborish tugmasini faollashtiramiz.

    Shunday qilib, mijoz tomonidan shaklni tekshirish bilan biz tugatdik. Endi biz uni serverga yuborishimiz mumkin, u erda biz bir nechta tekshiruvlarni qilamiz va ma'lumotlar bazasiga ma'lumotlarni qo'shamiz.

    Foydalanuvchini ro'yxatdan o'tkazish

    Shaklni faylga ishlov berish uchun yuboramiz register.php, POST usuli orqali. Atribut qiymatida ko'rsatilgan ushbu ishlov beruvchi faylining nomi harakat. Va yuborish usuli atribut qiymatida ko'rsatilgan usuli.

    Ushbu faylni oching register.php va biz qilishimiz kerak bo'lgan birinchi narsa - seansni ishga tushirish funksiyasini yozish va biz avval yaratilgan faylni kiritish dbconnect.php(Ushbu faylda biz ma'lumotlar bazasiga ulanishni amalga oshirdik). Va shunga qaramay, darhol hujayralarni e'lon qiling xato_xabarlar va muvaffaqiyat_xabarlari sessiya global massivida. DA xato_xabarlar biz shaklni qayta ishlash jarayonida yuzaga keladigan barcha xato xabarlarni yozib olamiz va ichida muvaffaqiyat_xabarlari Keling, baxtli xabarlar yozaylik.

    Davom etishdan oldin biz tekshirishimiz kerak forma umuman topshirilganmi yoki yo'qmi. Tajovuzkor atributning qiymatiga qarashi mumkin harakat shakldan o'ting va ushbu forma qaysi faylga ishlov berayotganini bilib oling. Va u brauzerning manzil satriga quyidagi manzilni kiritish orqali to'g'ridan-to'g'ri ushbu faylga o'tish g'oyasini o'ylab topishi mumkin: http://site_site/register.php

    Shunday qilib, global POST massivida nomi formadagi "Ro'yxatdan o'tish" tugmachamiz nomiga mos keladigan hujayra mavjudligini tekshirishimiz kerak. Shunday qilib, biz "Ro'yxatdan o'tish" tugmasi bosilganmi yoki yo'qligini tekshiramiz.

    Agar tajovuzkor to'g'ridan-to'g'ri ushbu faylga o'tishga harakat qilsa, u xato xabarini oladi. Sizga eslatib o'tamanki, $address_site o'zgaruvchisi sayt nomini o'z ichiga oladi va u faylda e'lon qilingan dbconnect.php.

    Xato! bosh sahifa.

    "); } ?>

    Seansdagi captcha qiymati uni yaratish jarayonida faylga qo'shilgan captcha.php. Eslatib o'tamiz, men fayldagi ushbu kod qismini yana bir bor ko'rsataman captcha.php, bu erda captcha qiymati sessiyaga qo'shiladi:

    Endi testning o'ziga o'taylik. Fayl ichida register.php, if blokining ichida, biz "Ro'yxatdan o'tish" tugmasi bosilganligini tekshiramiz, to'g'rirog'i, sharh qayerda " // (1) Keyingi kod qismi uchun joy"Biz yozamiz:

    //Qabul qilingan captcha ni tekshiring //String boshidan va oxiridan bo'shliqlarni kesib oling $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Qabul qilingan qiymatni sessiya qiymati bilan solishtiring. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Agar captcha noto'g'ri bo'lsa, foydalanuvchini ro'yxatdan o'tish sahifasiga qaytaring va u erda u noto'g'ri captcha kiritganligi haqida xato xabarini ko'rsatamiz. $error_message = "

    Xato! Siz noto'g'ri captcha kiritdingiz

    "; // Seansga xato xabarini saqlang. $_SESSION["error_messages"] = $error_message; // Foydalanuvchini ro'yxatdan o'tish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: " .$address_site ."/form_register.php"); //Skriptdan chiqishni to'xtating(); ) // (2) Keyingi kod qismi uchun joylashtiring )else( //Agar captcha o'tkazilmasa yoki u bo'sh bo'lsa, chiqish ("

    Xato! Tasdiqlash kodi, ya'ni captcha kodi yo'q. Siz asosiy sahifaga o'tishingiz mumkin.

    "); }

    Keyinchalik, POST massividan olingan ma'lumotlarni qayta ishlashimiz kerak. Avvalo, biz global POST massivining mazmunini tekshirishimiz kerak, ya'ni u erda nomlari bizning formamizdagi kiritish maydonlarining nomlariga mos keladigan hujayralar mavjudligini tekshirishimiz kerak.

    Agar hujayra mavjud bo'lsa, biz ushbu katakdagi satrning boshidan va oxiridan bo'sh joylarni kesib tashlaymiz, aks holda biz foydalanuvchini ro'yxatdan o'tish formasi bilan sahifaga qayta yo'naltiramiz.

    Bundan tashqari, bo'shliqlar kesilgandan so'ng, biz o'zgaruvchiga satr qo'shamiz va bu o'zgaruvchining bo'shligini tekshiramiz, agar u bo'sh bo'lmasa, davom eting, aks holda biz foydalanuvchini ro'yxatdan o'tish shakli bilan sahifaga qayta yo'naltiramiz.

    Ushbu kodni belgilangan joyga joylashtiring // (2) Keyingi kod qismi uchun joy".

    /* $_POST global massivida formadan yuborilgan maʼlumotlar bor yoki yoʻqligini tekshiring va yuborilgan maʼlumotlarni oddiy oʻzgaruvchilarga qoʻshing.*/ if(isset($_POST["first_name"]))( // Boʻshliqlarni boshi va oxiridan qisqartiring. string $first_name = trim($_POST["first_name"]); //O'zgaruvchining bo'shligini tekshiring if(!empty($first_name))( // Xavfsizlik uchun maxsus belgilarni HTML ob'ektlariga aylantiring $first_name = htmlspecialchars( $first_name, ENT_QUOTES) ; )else( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Ismingizni kiriting

    Nom maydoni yetishmayapti

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) if( isset($_POST["familiya_ism"]))( // Satrning boshidan va oxiridan bo'shliqlarni kesib oling $last_name = trim($_POST["familiya_ism"]); if(!empty($last_name)) ( // Xavfsizlik uchun maxsus belgilarni HTML ob'ektlariga aylantiring $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages"] .= "

    Familiyangizni kiriting

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Nom maydoni yetishmayapti

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) if( isset($_POST["email"]))( // Satrning boshidan va oxiridan bo'shliqlarni kesib tashlang $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Elektron pochta manzili formatini va uning o'ziga xosligini tekshirish uchun kod o'rni )else( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages" ] .= "

    Elektron pochtangizni kiriting

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) if( isset($_POST["password"]))( // satr boshidan va oxiridan bo'shliqlarni kesib tashlang $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Parolni shifrlang $password = md5($password."top_secret"); )else( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages"] .= "

    Parolingizni kiriting

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) // (4) Ma'lumotlar bazasiga foydalanuvchi qo'shish uchun kodni joylashtiring

    Bu soha alohida ahamiyatga ega. elektron pochta. Qabul qilingan pochta manzilining formatini va ma'lumotlar bazasidagi o'ziga xosligini tekshirishimiz kerak. Ya'ni, bir xil elektron pochta manziliga ega foydalanuvchi allaqachon ro'yxatdan o'tganmi.

    Belgilangan joyda" // (3) Pochta manzili formatini va uning o'ziga xosligini tekshirish uchun kod joyi"quyidagi kodni qo'shing:

    //Qabul qilingan elektron pochta manzilining formatini $reg_email = "/^**@(+(*+)*\.)++/i" oddiy ifodasi yordamida tekshiring; //Agar qabul qilingan elektron pochta manzilining formati oddiy ifodaga mos kelmasa if(!preg_match($reg_email, $email))( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages"] .= "

    Yaroqsiz e-pochta manzilini kiritdingiz

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) // Ma'lumotlar bazasida shunday manzil mavjudligini tekshiring $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email.""); Agar mavjud bo`lsa. Agar ular aynan bitta qator boʻlsa, u holda ushbu elektron pochta manziliga ega foydalanuvchi allaqachon roʻyxatdan oʻtgan if($result_query->num_rows == 1)( //Agar natija notoʻgʻri boʻlsa if(($row = $result_query->fetch_assoc()) ! = false) ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Ushbu elektron pochta manziliga ega foydalanuvchi allaqachon ro'yxatdan o'tgan

    "; //Foydalanuvchini roʻyxatdan oʻtish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); )else( //Xato xabarini saqlang sessiyaga .$_SESSION["error_messages"] .= "

    Ma'lumotlar bazasi so'rovida xato

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); ) /* tanlovni yoping */ $ result_query-> close(); //Skriptdan chiqishni toʻxtating(); ) /* tanlovni yoping */ $result_query->close();

    Shunday qilib, biz barcha tekshiruvlar bilan yakunlandik, foydalanuvchini ma'lumotlar bazasiga qo'shish vaqti keldi. Belgilangan joyda" // (4) Ma'lumotlar bazasiga foydalanuvchi qo'shish uchun kodni joylashtiring"quyidagi kodni qo'shing:

    //Foydalanuvchini ma'lumotlar bazasiga qo'shish uchun so'rov $result_query_insert = $mysqli->query("INSERT INTO `foydalanuvchilar' (familiya, familiya, email, parol) VALUES ("".$first_name."", "".$last_name ." ", "".$elektron pochta."", "".$parol."")"); if(!$result_query_insert)( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Maʼlumotlar bazasiga foydalanuvchi qoʻshish soʻrovi xatosi

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); )else( $_SESSION["success_messages"] = "

    Ro'yxatdan o'tish muvaffaqiyatli yakunlandi!!!
    Endi siz foydalanuvchi nomi va parolingizdan foydalanib tizimga kirishingiz mumkin.

    "; //Foydalanuvchini kirish sahifasi sarlavhasiga yuboring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); ) /* So'rovni bajarish */ $ result_query_insert-> close(); //Ma'lumotlar bazasi ulanishini yopish $mysqli->close();

    Agar foydalanuvchini ma'lumotlar bazasiga qo'shish so'rovida xatolik yuzaga kelsa, biz ushbu xato haqida sessiyaga xabar qo'shamiz va foydalanuvchini ro'yxatdan o'tish sahifasiga qaytaramiz.

    Aks holda, agar hamma narsa yaxshi bo'lsa, biz ham sessiyaga xabar qo'shamiz, lekin bu allaqachon yoqimliroq, ya'ni foydalanuvchiga ro'yxatdan o'tish muvaffaqiyatli bo'lganligini aytamiz. Va biz uni avtorizatsiya shakli bilan sahifaga yo'naltiramiz.

    Elektron pochta manzili formatini va parol uzunligini tekshirish uchun skript faylda mavjud header.php, shuning uchun u o'sha shakldagi maydonlarga ham ta'sir qiladi.

    Seans ham faylda boshlanadi header.php, shuning uchun faylda form_auth.php seansni boshlash shart emas, chunki biz xatoga yo'l qo'yamiz.


    Aytganimdek, pochta manzili formatini va parol uzunligini tekshirish uchun skript ham bu erda ishlaydi. Shuning uchun, agar foydalanuvchi noto'g'ri elektron pochta manzilini yoki qisqa parolni kiritsa, u darhol xato xabarini oladi. Bir tugma kirish harakatsiz holga keladi.

    Xatolarni tuzatgandan so'ng, tugma kirish faollashadi va foydalanuvchi shaklni qayta ishlanadigan serverga yuborishi mumkin.

    Foydalanuvchi avtorizatsiyasi

    Atribut qiymati uchun harakat avtorizatsiya formasida fayl mavjud auth.php, bu shakl ushbu faylda qayta ishlanishini anglatadi.

    Shunday qilib, faylni ochamiz auth.php va avtorizatsiya shaklini qayta ishlash uchun kodni yozing. Birinchi narsa seansni boshlash va faylni kiritishdir dbconnect.php ma'lumotlar bazasiga ulanish uchun.

    //Formani qayta ishlash jarayonida yuzaga kelishi mumkin bo'lgan xatolarni qo'shish uchun katakchani e'lon qiling. $_SESSION["error_messages"] = ""; //Muvaffaqiyatli xabarlarni qo'shish uchun katakchani e'lon qilish $_SESSION["success_messages"] = "";

    /* Shakl yuborilganligini, ya'ni Login tugmasi bosilganligini tekshiring. Ha bo'lsa, biz oldinga boramiz, agar bo'lmasa, foydalanuvchiga to'g'ridan-to'g'ri ushbu sahifaga o'tganligi haqida xato xabarini ko'rsatamiz. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"]))( //(1) Keyingi kod qismi uchun joy )else( exit("

    Xato! Siz bu sahifaga toʻgʻridan-toʻgʻri kirgansiz, shuning uchun qayta ishlanadigan maʼlumotlar yoʻq. Siz asosiy sahifaga o'tishingiz mumkin.

    "); }

    //Qabul qilingan captcha-ni tekshiring if(isset($_POST["captcha"]))( //String boshidan va oxiridan bo'shliqlarni kesib oling $captcha = trim($_POST["captcha"]); if(!empty ($captcha ))( //Qabul qilingan qiymatni sessiya qiymati bilan solishtiring. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != ""))( // Agar captcha noto'g'ri bo'lsa, biz foydalanuvchini avtorizatsiya sahifasiga qaytaramiz va u erda u noto'g'ri captcha kiritganligi haqida xato xabarini ko'rsatamiz. $error_message = "

    Xato! Siz noto'g'ri captcha kiritdingiz

    "; // Seansga xato xabarini saqlang. $_SESSION["error_messages"] = $error_message; // Foydalanuvchini avtorizatsiya sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: " .$address_site ."/form_auth.php"); //Skriptdan chiqishni to'xtating(); ) )else( $error_message = "

    Xato! Captcha kiritish maydoni bo'sh bo'lmasligi kerak.

    "; // Seansga xato xabarini saqlang. $_SESSION["error_messages"] = $error_message; // Foydalanuvchini avtorizatsiya sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: " .$address_site ."/form_auth.php"); //Skriptni to'xtating exit(); ) //(2) Pochta manzilini qayta ishlash joyi //(3) Parolni qayta ishlash uchun joy //(4) ma'lumotlar bazasiga so'rov qilish )else ( //Agar captcha o'tkazilmasa exit("

    Xato! Tasdiqlash kodi, ya'ni captcha kodi yo'q. Siz asosiy sahifaga o'tishingiz mumkin.

    "); }

    Agar foydalanuvchi tasdiqlash kodini to'g'ri kiritgan bo'lsa, biz davom etamiz, aks holda uni avtorizatsiya sahifasiga qaytaramiz.

    Elektron pochta manzilini tekshirish

    // Satrning boshidan va oxiridan bo'sh joylarni kesish $email = trim($_POST["email"]); if(isset($_POST["email"]))( if(!empty($email))( $email = htmlspecialchars($email, ENT_QUOTES); //Qabul qilingan elektron pochta manzilining formatini $ oddiy ifodasi yordamida tekshiring. reg_email = " /^**@(+(*+)*\.)++/i"; //Agar qabul qilingan elektron pochta manzilining formati oddiy ifodaga mos kelmasa if(!preg_match($reg_email, $email) ))( // Seans xato xabariga saqlash.$_SESSION["error_messages"] .= "

    Yaroqsiz e-pochta manzilini kiritdingiz

    "; //Foydalanuvchini avtorizatsiya sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni to'xtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Pochta manzilini (elektron pochta) kiritish uchun maydon bo'sh bo'lmasligi kerak.

    "; //Foydalanuvchini roʻyxatga olish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_register.php"); //Skriptdan chiqishni toʻxtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Elektron pochtani kiritish uchun maydon yo'q

    "; //Foydalanuvchini avtorizatsiya sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni to'xtating(); ) // (3) Parolni qayta ishlash uchun joy

    Agar foydalanuvchi elektron pochta manzilini noto'g'ri formatda kiritgan bo'lsa yoki elektron pochta manzili maydoni bo'sh bo'lsa, biz uni avtorizatsiya sahifasiga qaytaramiz, u erda biz bu haqda xabarni ko'rsatamiz.

    Parolni tekshirish

    Keyingi ishlov beriladigan maydon parol maydonidir. Belgilangan joyga" //(3) Parolni qayta ishlash uchun joy", biz yozamiz:

    If(isset($_POST["password"]))( // Satrning boshidan va oxiridan bo'sh joylarni kesib tashlang $password = trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars($password, ENT_QUOTES); // Parolni shifrlang $password = md5($password."top_secret"); )else( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages"] . = "

    Parolingizni kiriting

    "; //Foydalanuvchini roʻyxatdan oʻtish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni toʻxtating(); ) )else ( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Parolni kiritish uchun maydon yo'q

    "; //Foydalanuvchini roʻyxatdan oʻtish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni toʻxtating(); )

    Bu erda md5 () funktsiyasidan foydalanib, biz olingan parolni shifrlaymiz, chunki ma'lumotlar bazasida bizda shifrlangan shaklda parollar mavjud. Shifrlashda qo'shimcha maxfiy so'z, bizning holatlarimizda " eng_sirli" foydalanuvchini ro'yxatdan o'tkazishda foydalanilgan bo'lishi kerak.

    Endi siz pochta manzili qabul qilingan pochta manziliga va parol qabul qilingan parolga teng bo'lgan foydalanuvchi tanlovi bo'yicha ma'lumotlar bazasiga so'rov qilishingiz kerak.

    //Foydalanuvchining tanlovi bo'yicha ma'lumotlar bazasiga so'rov. $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = "".$email."" AND password = "".$parol."""); if(!$result_query_select)( // Xato xabarini seansga saqlang. $_SESSION["error_messages"] .= "

    Ma'lumotlar bazasidan foydalanuvchi tanlashda so'rov xatosi

    "; //Foydalanuvchini roʻyxatdan oʻtish sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy koʻchirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni toʻxtating(); )else( //Ma'lumotlar bazasida bunday ma'lumotlarga ega foydalanuvchi yo'qligini tekshiring, keyin xato xabarini ko'rsating if($result_query_select->num_rows == 1)( // Agar kiritilgan ma'lumotlar ma'lumotlar bazasi ma'lumotlariga mos kelsa, keyin saqlang seans massiviga login va parol. $_SESSION["email"] = $email; $_SESSION["password"] = $password; //Foydalanuvchini asosiy sahifa sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi" ); header("Joylashuv: ".$adres_sayt ."/index.php"); )else( // Xato xabarini sessiyaga saqlang. $_SESSION["error_messages"] .= "

    Noto'g'ri foydalanuvchi nomi va/yoki parol

    "; //Foydalanuvchini avtorizatsiya sahifasi sarlavhasiga qaytaring("HTTP/1.1 301 Doimiy ko'chirildi"); header("Joylashuv: ".$adres_sayt."/form_auth.php"); //Skriptdan chiqishni to'xtating(); ))

    Saytdan chiqish

    Va biz amalga oshiradigan oxirgi narsa chiqish tartibi. Ayni paytda sarlavhada biz avtorizatsiya sahifasiga va ro'yxatdan o'tish sahifasiga havolalarni ko'rsatamiz.

    Sayt sarlavhasida (fayl header.php), sessiyadan foydalanib, foydalanuvchi allaqachon tizimga kirganligini tekshiramiz. Agar yo'q bo'lsa, biz ro'yxatdan o'tish va avtorizatsiya havolalarini ko'rsatamiz, aks holda (agar u avtorizatsiya qilingan bo'lsa), ro'yxatdan o'tish va avtorizatsiya havolalari o'rniga havolani ko'rsatamiz. Chiqish.

    Fayldan o'zgartirilgan kod qismi header.php:

    Roʻyxatdan oʻtish

    Chiqish

    Saytdan chiqish havolasini bosganingizda, biz faylga kiramiz logout.php, bu erda biz oddiygina seansdan elektron pochta manzili va parol bilan hujayralarni yo'q qilamiz. Shundan so'ng, biz foydalanuvchini havola bosilgan sahifaga qaytaramiz Chiqish.

    Fayl kodi logout.php:

    Ana xolos. Endi qanday qilib ro'yxatga olish va ruxsat berish shakllarini amalga oshirish va qayta ishlash saytingizdagi foydalanuvchi. Ushbu shakllar deyarli har bir saytda topilgan, shuning uchun har bir dasturchi ularni qanday yaratishni bilishi kerak.

    Shuningdek, biz kiritilgan ma'lumotlarni mijoz tomonida (brauzerda, JavaScript, jQuery yordamida) va server tomonida (PHP tilidan foydalangan holda) qanday tekshirishni o'rgandik. Biz ham o'rgandik chiqish tartibini amalga oshirish.

    Barcha skriptlar sinovdan o'tgan va ishlaydi. Ushbu kichik saytning fayllari bilan arxivni ushbu havoladan yuklab olishingiz mumkin.

    Kelajakda men tasvirlaydigan maqola yozaman. Va men ham tushuntirib beradigan maqola yozishni rejalashtirmoqdaman (sahifani qayta yuklamasdan). Shunday qilib, yangi maqolalar chiqishidan xabardor bo'lish uchun siz mening saytimga obuna bo'lishingiz mumkin.

    Agar sizda biron bir savol bo'lsa, iltimos, bog'laning, shuningdek, maqolada biron bir xatoni sezsangiz, menga xabar bering.

    Dars rejasi (5-qism):

    1. Avtorizatsiya formasi uchun HTML tuzilmasini yaratish
    2. Qabul qilingan ma'lumotlarni qayta ishlaymiz
    3. Biz sayt sarlavhasida foydalanuvchi salomini ko'rsatamiz

    Maqola yoqdimi?

    Laravel kompozitordan loyiha bog'liqliklarini boshqarishni talab qiladi. Shuning uchun Laravelni o'rnatishdan oldin tizimingizda Composer o'rnatilganligiga ishonch hosil qiling. Agar siz Composer haqida birinchi marta eshitayotgan bo'lsangiz, bu tugunning npm-ga o'xshash PHP uchun qaramlikni boshqarish vositasi.

    Kompozitorni kompyuteringizga o'rnatish uchun ushbu xabarni tekshiring:

    Laravel-ni Windows-ga o'rnatish:

    Windows mashinasiga laravelni o'rnatish uchun quyidagi amallarni bajaring. Sizda xampp/wamp stekiga ega bo'lishingizdan qat'i nazar, u ikkalasi uchun ham ishlaydi. WAMP da laravelni "www" jildiga va XAMPP ga o'rnatganingizga ishonch hosil qiling, aniqki "htdocs".

    QADAM-1) XAMPP da "htdocs" jildini oching, SHIFT tugmachasini bosib ushlab turing va papkani o'ng tugmasini bosing va "bu yerda buyruq oynasini ochish" ni tanlang. Shu bilan bir qatorda, siz buyruqlar oynasini ochishingiz va katalogni "xampp/htdocs" ga o'zgartirishingiz mumkin.

    QADAM-2) Quyidagi buyruqni kiriting.

    Composer create-project laravel/laravel my_laravel_site --prefer-dist

    Bu erda "my_laravel_site" - laravel fayllari o'rnatiladigan papka nomi. Buni o'zingizning xohishingizga ko'ra o'zgartiring.

    QADAM-3) Endi sabrli bo'lish vaqti keldi, chunki laravelni o'rnatish biroz vaqt talab etadi.

    QADAM-4) O'rnatilgandan so'ng, buyruq satrida katalogni "my_laravel_site" (cd "my_laravel_site") ga o'zgartiring va quyidagi buyruqni kiriting.

    php hunarmand xizmat qiladi

    5-QADAM) Bu url bilan birga "Laravel ishlab chiqish serveri ishga tushdi:" kabi xabarni ko'rsatadi.

    QADAM-6) URL manzilini brauzerga nusxalash va joylashtirish. Agar ishlar to'g'ri ketsa, siz laravelning xush kelibsiz ekranini ko'rasiz.

    QADAM-7) Bajarildi! Siz Windows mashinasiga laravelni muvaffaqiyatli o'rnatdingiz va u bilan ishlashga tayyorsiz.

    Ilova kalitini sozlash:

    Laravel o'rnatishdan keyin ozgina konfiguratsiyani talab qiladi. Bu dastur kalitini o'rnatishingizni talab qiladi. Bu seans va boshqa nozik ma'lumotlarni shifrlash uchun ishlatiladigan 32 belgidan iborat tasodifiy qator. Odatda bu laravelni kompozitor yoki laravel o'rnatuvchisi orqali o'rnatganingizda avtomatik ravishda o'rnatiladi.

    Agar u o'rnatilmagan bo'lsa, buni qo'lda qilishingiz kerak. Avval ".env.example" faylining nomini ilova ildizida ".env" ga o'zgartirganingizga ishonch hosil qiling. Keyin buyruq satrini oching va laravel loyiha jildiga o'zgartiring. Endi kalitni yaratish uchun quyidagi buyruqni bajaring.

    php hunarmand kaliti: yaratish

    Ushbu yaratilgan kalitni ".env" faylidagi APP_KEY o'zgaruvchisiga nusxalang. Saqlash va ish tugadi.

    Maxsus Laravel versiyasini o'rnatish:

    Yuqoridagi usul kompozitorni laravelning so'nggi versiyasini yuklab olish va o'rnatishga majbur qiladi. Agar siz laravelning oldingi versiyalarini kompyuteringizga o'rnatmoqchi bo'lsangiz, create-project buyrug'iga tegishli versiya raqamini kiritganingizga ishonch hosil qiling.

    Composer create-project laravel/laravel=5.4 loyihangiz nomi --prefer-dist Shuningdek o'qing:

    Xuddi shunday mumkin Windowsda kompozitor yordamida laravelni osongina o'rnating. Umid qilamanki, siz ushbu qo'llanmani foydali deb topasiz. Agar sizga yoqqan bo'lsa, uni ijtimoiy doirangizda baham ko'ring.

    Ushbu qo'llanmada men sizga PHP va MySQL-dan foydalangan holda foydalanuvchi nomi, elektron pochta va parol, tizimga kirish va chiqish orqali hisob yaratishi mumkin bo'lgan foydalanuvchini ro'yxatga olish tizimini yaratishning to'liq jarayoni bo'ylab ko'rsataman. Shuningdek, men sizga qanday qilib ba'zi sahifalarni faqat tizimga kirgan foydalanuvchilar uchun ochiq qilish mumkinligini ko'rsataman. Tizimga kirmagan boshqa foydalanuvchi sahifaga kira olmaydi.

    Agar siz videoni afzal ko'rsangiz, uni YouTube kanalimda ko'rishingiz mumkin

    Biz qilishimiz kerak bo'lgan birinchi narsa - ma'lumotlar bazasini sozlash.

    deb nomlangan ma'lumotlar bazasini yarating ro'yxatga olish. In ro'yxatga olish ma'lumotlar bazasi, deb nomlangan jadvalni qo'shing foydalanuvchilar. Foydalanuvchilar jadvali quyidagi to'rtta maydonni oladi.

    • foydalanuvchi nomi - varchar(100)
    • elektron pochta - varchar(100)
    • parol - varchar (100)

    Buni PHPMyAdmin kabi MySQL mijozi yordamida yaratishingiz mumkin.

    Yoki uni quyidagi SQL skriptidan foydalanib MySQL so'rovida yaratishingiz mumkin:

    JADVAL YARATING `foydalanuvchilar` (`id` int(11) NO NULL AUTO_INCREMENT BIRINCHI KEY, `foydalanuvchi nomi` varchar(100) NO NULL, `email` varchar(100) NO NULL, `parol` varchar(100) ENGINE EMAS) =InnoDB DEFAULT CHARSET=latin1;

    Va bu ma'lumotlar bazasi bilan.

    Endi nomli papka yarating ro'yxatga olish serverimizga kirish mumkin bo'lgan katalogda. ya'ni htdocs ichida (agar siz XAMPP serveridan foydalansangiz) yoki ichida papka yarating www(agar siz wampp serveridan foydalansangiz).

    papka ichida ro'yxatga olish, quyidagi fayllarni yarating:

    Ushbu fayllarni o'zingiz tanlagan matn muharririda oching. Meniki ajoyib matn 3.

    Foydalanuvchini ro'yxatdan o'tkazish

    register.php faylini oching va unga quyidagi kodni joylashtiring:

    register.php:

    Roʻyxatdan oʻtish

    Allaqachon a'zomisiz? tizimga kirish

    Hozircha hech qanday murakkab narsa yo'q, to'g'rimi?

    Bu erda e'tiborga olish kerak bo'lgan bir nechta narsa:

    Birinchidan, bu bizning formamiz harakat atribut register.php ga o'rnatiladi. Bu shuni anglatadiki, formani yuborish tugmasi bosilganda, formadagi barcha ma'lumotlar bir xil sahifaga (register.php) yuboriladi. Ushbu forma ma'lumotlarini qabul qiluvchi kod qismi server.php faylida yozilgan va shuning uchun biz uni register.php faylining eng yuqori qismiga joylashtiramiz.

    E'tibor bering, biz forma xatolarini ko'rsatish uchun errors.php faylini qo'shmoqdamiz. Biz bunga tez orada kelamiz.

    Bosh qismida ko'rib turganingizdek, biz style.css fayliga havola qilmoqdamiz. style.css faylini oching va unga quyidagi CSS-ni joylashtiring:

    * ( hoshiya: 0px; toʻldirish: 0px; ) korpus (shrift oʻlchami: 120%; fon: #F8F8FF; ) .sarlavha (kengligi: 30%; hoshiya: 50px avtomatik 0px; rang: oq; fon: #5F9EA0; matn -align: markaz; chegara: 1px qattiq #B0C4DE; chegara-pastki: yoʻq; chegara-radius: 10px 10px 0px 0px; toʻldirish: 20px; ) shakl, .content (kenglik: 30%; chekka: 0px avtomatik; toʻldirish: 20px ; chegara: 1px qattiq #B0C4DE; fon: oq; chegara radiusi: 0px 0px 10px 10px; ) .kiritish guruhi (chegara: 10px 0px 10px 0px; ) .kirish guruhi yorligʻi ( displey: blok; matnni tekislash: chapga ; chekka: 3px; ) .kiritish guruhiga kirish (balandlik: 30px; kenglik: 93%; toʻldirish: 5px 10px; shrift oʻlchami: 16px; chegara radiusi: 5px; chegara: 1px qattiq kulrang; ) .btn ( toʻldirish: 10px; shrift oʻlchami: 15px; rang: oq; fon: #5F9EA0; chegara: yoʻq; chegara radiusi: 5px; ) .xato (kenglik: 92%; chekka: 0px avtomatik; toʻldirish: 10px; chegara: 1px qattiq # a94442; rang: #a94442; fon: #f2dede; chegara radiusi: 5px; matnni tekislash: chap; ) .success (rang: #3c7 63d; fon: #dff0d8; chegara: 1px qattiq #3c763d; pastki chet: 20px )

    Endi shakl chiroyli ko'rinadi.

    Keling, endi formadan yuborilgan ma'lumotni qabul qiladigan kodni yozamiz va ma'lumotlarni ma'lumotlar bazasida saqlaylik (ro'yxatdan o'tkazamiz). Avval va'da qilganimizdek, biz buni server.php faylida qilamiz.

    server.php-ni oching va unga ushbu kodni joylashtiring:

    server.php

    Seanslar tizimga kirgan foydalanuvchilarni kuzatish uchun ishlatiladi va shuning uchun biz faylning yuqori qismiga session_start() ni qo'shamiz.

    Koddagi sharhlar hamma narsani tushuntiradi, lekin men bu erda bir nechta narsalarni ta'kidlayman.

    If iborasi ro'yxatdan o'tish formasidagi reg_user tugmasi bosilganligini aniqlaydi. Esda tuting, bizning formamizda yuborish tugmasi reg_user ga o'rnatilgan nom atributiga ega va biz if iborasida aynan shu narsaga murojaat qilamiz.

    Barcha ma'lumotlar formadan olinadi va foydalanuvchi shaklni to'g'ri to'ldirganligiga ishonch hosil qilish uchun tekshiriladi. Parollar mos kelishiga ishonch hosil qilish uchun ham solishtiriladi.

    Hech qanday xatolik yuzaga kelmasa, foydalanuvchi ro'yxatdan o'tgan foydalanuvchilar ma'lumotlar bazasida xeshlangan parol bilan jadval. Xeshlangan parol xavfsizlik sababli. Bu xaker sizning ma'lumotlar bazasiga kirishga muvaffaq bo'lsa ham, parolingizni o'qiy olmasligini ta'minlaydi.

    Lekin xato xabarlari hozir ko'rsatilmayapti, chunki bizning errors.php faylimiz hali ham bo'sh. Xatolarni ko'rsatish uchun ushbu kodni errors.php fayliga joylashtiring.

    0) : ?>

    Agar foydalanuvchi ma'lumotlar bazasida ro'yxatdan o'tgan bo'lsa, u darhol tizimga kiradi va index.php sahifasiga yo'naltiriladi.

    Va bu ro'yxatdan o'tish uchun. Keling, foydalanuvchi loginini ko'rib chiqaylik.

    login foydalanuvchi

    Foydalanuvchini tizimga kiritish yanada oson ish. Kirish sahifasini oching va uning ichiga ushbu kodni qo'ying:

    Ro'yxatga olish tizimi PHP va MySQL

    Kirish

    Hali a'zo emasmisiz? Ro'yxatdan o'tish

    Bu sahifadagi hamma narsa register.php sahifasiga juda o'xshaydi.

    Endi foydalanuvchini tizimga kiritadigan kod bir xil server.php faylida yozilishi kerak. Shunday qilib, server.php faylini oching va faylning oxiriga ushbu kodni qo'shing:

    // ... // FOYDALANUVCHI KIRISH if (isset($_POST["login_user"])) ( $username = mysqli_real_escape_string($db, $_POST["username"]); $password = mysqli_real_escape_string($db, $_POST) ["parol"]); if (empty($username)) (array_push($xatolar, "Foydalanuvchi nomi kerak"); ) if (bo'sh($parol)) (array_push($xatolar, "Parol kerak"); ) if (count($errors) == 0) ( $password = md5($password); $query = "FROM foydalanuvchilar FROM WHERE username="$username" VA password="$parol""; $results = mysqli_query ($db, $query); if (mysqli_num_rows($results) == 1) ( $_SESSION["username"] = $username; $_SESSION["success"] = "Siz endi tizimga kirdingiz"; header(" joy: index.php"); )else (array_push($errors, "Foydalanuvchi nomi/parol kombinatsiyasi noto'g'ri"); ) ) ) ?>

    Bularning barchasi foydalanuvchi shaklni to'g'ri to'ldirganligini tekshirish, ularning hisob ma'lumotlari ma'lumotlar bazasidagi yozuvga mos kelishini tekshirish va agar shunday bo'lsa, tizimga kirishdir. Tizimga kirgandan so'ng, foydalanuvchi muvaffaqiyatli xabar bilan index.php fayliga yo'naltiriladi.

    Endi index.php faylida nima sodir bo'lishini ko'rib chiqamiz, uni oching va unga quyidagi kodni joylashtiring:

    Uy

    Bosh sahifa

    Xush kelibsiz

    chiqish

    Birinchi if bayonoti foydalanuvchi allaqachon tizimga kirganligini tekshiradi. Agar ular tizimga kirmagan bo'lsa, ular kirish sahifasiga yo'naltiriladi. Shuning uchun bu sahifaga faqat tizimga kirgan foydalanuvchilar kirishi mumkin. Agar siz biron-bir sahifani faqat tizimga kirgan foydalanuvchilar uchun ochiq qilishni istasangiz, buni faylning yuqori qismiga if iborasini joylashtirishingiz kifoya.

    Ikkinchi if bayonoti foydalanuvchi chiqish tugmasini bosganligini tekshiradi. Ha bo'lsa, tizim ularni tizimdan chiqaradi va kirish sahifasiga qayta yo'naltiradi.

    Endi davom eting, uni ehtiyojlaringizga moslashtiring va ajoyib sayt yarating. Agar sizda biron bir tashvish yoki aniqlashtirishingiz kerak bo'lgan narsa bo'lsa, uni quyidagi izohlarda qoldiring va yordam keladi.

    Siz har doim ijtimoiy tarmoqlarda baham ko'rish yoki mening blogimni do'stlaringiz va hamkasblaringizga tavsiya qilish orqali qo'llab-quvvatlashingiz mumkin.