Adonis регистрационен формуляр php. Създаване на проста система за регистрация на потребители в PHP и MySQL

В този урок ще ви преведа през целия процес на създаване на система за регистрация на потребители, където потребителите могат да създадат акаунт, като предоставят потребителско име, имейл и парола, влизане и излизане с помощта на PHP и MySQL. Ще ви покажа и как можете да направите някои страници достъпни само за влезли потребители. Всеки друг потребител, който не е влязъл в системата, няма да има достъп до страницата.

Научете как да създадете пълен блог с база данни PHP и MySQL с моя безплатен курс в YouTube.

Първото нещо, което ще трябва да направим, е да настроим нашата база данни.

Създайте база данни, наречена Регистрация... В Регистрациябаза данни, добавете таблица, наречена потребители... Таблицата за потребители ще заема следните четири полета.

  • потребителско име - varchar (100)
  • имейл - varchar (100)
  • парола - varchar (100)

Можете да създадете това с помощта на MySQL клиент като PHPMyAdmin.

Или можете да го създадете в подканата на MySQL, като използвате следния SQL скрипт:

СЪЗДАЙТЕ ТАБЛИЦА `users` (` id` int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar (100) NOT NULL,` email` varchar (100) NOT NULL, `password` varchar (100) NOT NULL) ДВИГАТЕЛ = ИНФОРМАЦИОНЕН ШАРСЕТ = InnoDB = latin1;

И това е всичко с базата данни.

Сега създайте папка с име Регистрацияв директория, достъпна за нашия сървър. т.е. създайте папката вътре в htdocs (ако използвате XAMPP сървър) или вътре www(ако използвате сървър на wampp).

Вътре в папката Регистрация,създайте следните файлове:

Отворете тези файлове в текстов редактор по ваш избор. Моят е възвишен текст 3.

Регистрация на потребител

Отворете файла register.php и поставете следния код в него:

regiser.php:

Регистрирам

Вече сте член? Впиши се

Засега няма нищо сложно, нали?

Тук трябва да обърнете внимание на няколко неща:

Първо е, че нашата форма "s действиеатрибутът е настроен на register.php. Това означава, че когато се натисне бутонът за изпращане на формуляра, всички данни във формуляра ще бъдат изпратени на една и съща страница (register.php). Частта от кода, която получава тези данни от формуляра, се записва във файла server.php и затова го включваме в горната част на файла register.php.

Забележете също така, че включваме файла error.php, за да покажем грешки във формата. Скоро ще стигнем до това.

Както можете да видите в главата, ние свързваме към файл style.css. Отворете файла style.css и поставете следния CSS в него:

* (margin: 0px; padding: 0px;) body (size-font: 120%; background: # F8F8FF;) .header (width: 30%; margin: 50px auto 0px; color: white; background: # 5F9EA0; text -align: center; border: 1px solid # B0C4DE; border-bottom: none; border-radius: 10px 10px 0px 0px; padding: 20px;) form, .content (width: 30%; margin: 0px auto; padding: 20px ; border: 1px solid # B0C4DE; background: white; border-radius: 0px 0px 10px 10px;) .input-group (margin: 10px 0px 10px 0px;) .input-group label (display: block; text-align: left ; margin: 3px;) .input-group input (height: 30px; width: 93%; padding: 5px 10px; font font: 16px; border-radius: 5px; border: 1px solid grey;) .btn (padding: 10px; font-size: 15px; color: white; background: # 5F9EA0; border: none; border-radius: 5px;) .error (width: 92%; margin: 0px auto; padding: 10px; border: 1px solid # a94442; color: # a94442; background: # f2dede; border-radius: 5px; text-align: left;) .usccess (color: # 3c7 63d; фон: # dff0d8; граница: 1px плътно # 3c763d; margin-bottom: 20px; )

Сега формата изглежда красива.

Нека сега напишем кода, който ще получи информация, подадена от формуляра, и ще съхраним (регистрираме) информацията в базата данни. Както беше обещано по-рано, правим това във файла server.php.

Отворете server.php и поставете този код в него:

server.php

Сесиите се използват за проследяване на влезли потребители и затова включваме session_start () в горната част на файла.

Коментарите в кода обясняват почти всичко, но тук ще подчертая няколко неща.

Изявлението if определя дали бутонът reg_user на регистрационния формуляр е щракнат. Не забравяйте, че в нашата форма бутонът за изпращане има атрибут name, зададен на reg_user и на това се позоваваме в оператора if.

Всички данни се получават от формуляра и се проверяват дали потребителят правилно е попълнил формуляра. Паролите също се сравняват, за да се гарантира, че съвпадат.

Ако не са открити грешки, потребителят е регистриран в потребителитаблица в базата данни с хеширана парола. Хешираната парола е от съображения за сигурност. Той гарантира, че дори ако хакер успее да получи достъп до вашата база данни, той няма да може да прочете вашата парола.

Но съобщенията за грешки не се показват сега, защото нашият файл errors.php все още е празен. За да покажете грешките, поставете този код във файла error.php.

0) : ?>

Когато потребителят е регистриран в базата данни, той незабавно се логва и пренасочва към страницата index.php.

И това е всичко за регистрация. Нека разгледаме потребителското влизане.

Потребител за вход

Влизането на потребител в системата е още по-лесно. Просто отворете страницата за вход и поставете този код вътре:

Регистрационна система PHP и MySQL

Влизам

Все още не сте член? Регистрирай се

Всичко на тази страница е доста подобно на страницата register.php.

Сега кодът, който вписва потребителя, трябва да бъде записан в същия файл server.php. Така че отворете файла server.php и добавете този код в края на файла:

// ... // ВХОД ПОТРЕБИТЕЛ if (isset ($ _ POST ["login_user"])) ($ username = mysqli_real_escape_string ($ db, $ _POST ["username"]); $ password = mysqli_real_escape_string ($ db, $ _POST ["парола"]); if (празно ($ потребителско име)) (array_push ($ грешки, "Изисква се потребителско име");) if (празно ($ парола)) (array_push ($ грешки, "изисква се парола") ;) if (брой ($ грешки) == 0) ($ парола = md5 ($ парола); $ query = "SELECT * ОТ потребители WHERE потребителско име =" $ потребителско име "И парола =" $ парола ""; $ резултати = mysqli_query ($ db, $ query); if (mysqli_num_rows ($ results) == 1) ($ _SESSION ["потребителско име"] = $ потребителско име; $ _SESSION ["успех"] = "Вече сте влезли"; заглавка ( "location: index.php");) else (array_push ($ грешки, "Грешна комбинация от потребителско име и парола");)))?>

Отново всичко това прави, проверява дали потребителят е попълнил правилно формуляра, проверява дали неговите идентификационни данни съвпадат със запис от базата данни и ги вписва, ако има. След влизане потребителят ги пренасочва към файла index.php със съобщение за успех.

Сега нека видим какво се случва във файла index.php. Отворете го и поставете следния код в него:

У дома

Начална страница

Добре дошли

излез от профила си

Първият оператор if проверява дали потребителят вече е влязъл в системата. Ако не са влезли в системата, те ще бъдат пренасочени към страницата за вход. Следователно тази страница е достъпна само за влезли потребители. Ако искате да направите която и да е страница достъпна само за влезли потребители, всичко, което трябва да направите, е да поставите този оператор if в горната част на файла.

Вторият оператор if проверява дали потребителят е щракнал върху бутона за излизане. Ако отговорът е да, системата ги излиза и ги пренасочва обратно към страницата за вход.

Сега продължете, персонализирайте го според вашите нужди и изградете страхотен сайт. Ако имате притеснения или нещо, което трябва да изясните, оставете го в коментарите по-долу и ще дойде помощ.

Винаги можете да подкрепите, като споделите в социалните медии или препоръчате моя блог на вашите приятели и колеги.

Добър ден приятели! Нека да разгледаме с вас регистрацията на потребителите в PHP. Първо, нека дефинираме условията за нашата потребителска регистрация:

  • Ние шифроваме паролата, използвайки алгоритъма MD5
  • Паролата ще бъде "осолена"
  • Проверете дали Входът е зает
  • Активиране на потребителя с писмо.
  • Записване и съхраняване на данни в СУБД MySQL

За да напишем този скрипт, трябва да разберем какво представлява регистрацията на потребителя. Регистрацията на потребителя е получаване на данни от реален потребител, обработка и съхраняване на данни.

Ако обясним с прости думи, тогава регистрацията е просто записване и съхраняване на определени данни, чрез които можем да упълномощим потребителя в нашия случай - това е Login и Password.

Упълномощаването е предоставяне на определено лице или група лица права за извършване на определени действия, както и процес на проверка на тези права при опит за извършване на тези действия. Казано по-просто, като използваме оторизация, можем да ограничим достъпа до това или онова съдържание на нашия уебсайт.

Нека разгледаме структурата на директориите за скриптове за изпълнението на нашата регистрация с оторизация. Трябва да разделим скриптовете на логически компоненти. Поставили сме модулите за регистрация и оторизация в отделна директория. Също така ще поставим връзката с базата данни в отделни директории. MySQL, файл с потребителски функции, файл със стил CSSи нашия шаблон Html... Тази структура ви позволява бързо да навигирате в скриптовете. Представете си, че имате голям сайт с куп модули и т.н. и ако няма ред, ще бъде много трудно да се намери нещо в такава бъркотия.

Тъй като ще съхраняваме всички данни в СУБД MySQL, тогава нека създадем малка таблица, в която ще съхраняваме регистрационни данни.

Първо, трябва да създадете таблица в базата данни. Таблицата ще бъде извикана bez_regкъдето безе префиксът на таблицата и региме на таблицата.

Структура на таблицата: bez_reg

- - Структура на таблицата `bez_reg` - СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА` bez_reg` (` id` int (11) NOT NULL AUTO_INCREMENT, `login` varchar (200) NOT NULL,` pass` varchar (32) NOT NULL, `сол `varchar (32) NOT NULL,` active_hex` varchar (32) NOT NULL, `status` int (1) NOT NULL, PRIMARY KEY (` id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;

Сега нека създадем основните скриптове за по-нататъшна работа.

Файл INDEX.PHP

Файл CONFIG.PHP

"); ?>

404.html файл

Грешка 404

Грешка 404

На страницата възникна грешка 404

Връщане

BD.PHP файл

Файл INDEX.HTML

PHP MySQL потребителска регистрация с активиране по имейл

Файл FUNCT.PHP

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

  • ". $ val."
  • "." \ n ";) иначе $ грешка. ="
  • ". $ данни."
  • "." \ n "; $ грешка. =""." \ n "; върнете $ грешка;) / ** Обикновена обвивка за MySQL заявки * @param низ $ sql * / функция mysqlQuery ($ sql) ($ res = mysql_query ($ sql); / * Проверка на резултата Това показва реалната заявка, изпратена до MySQL, както и грешката. Удобен за отстраняване на грешки. * / if (! $ res) ($ message = "Невалидна заявка:". mysql_error (). "\ n"; $ message. = " Заявка в пълен размер: ". $ Sql; die ($ message);) return $ res;) / ** Прост генератор на сол * @param низ $ sql * / функция salt () ($ salt = substr (md5 (uniqid () ), - 8); върнете $ сол;)

    Нека да стигнем до писането на регистрация. Първо, ще трябва да направим шаблон за формуляр за регистрация, така че потребителят да може да въведе данните си за обработка. След това ще трябва да напишем самия манипулатор на формуляра, който ще провери коректността на въведените потребителски данни. След като данните са успешно проверени, ние ги записваме в нашата база данни и изпращаме писмо до потребителя, за да активира акаунта си.

    Файл REG.PHP

    Успешно се регистрирахте! Моля, активирайте акаунта си !!"; // Активирайте акаунта, ако (isset ($ _ GET [" key "])) (// Проверете ключа $ sql =" SELECT * FROM `". BEZ_DBPREFIX. "Reg` WHERE` active_hex` =" ". Escape_str ($ _GET ["key"]). "" "; $ Res = mysqlQuery ($ sql); if (mysql_num_rows ($ res) == 0) $ err =" Ключът за активиране не е правилен! "; // Проверете за грешки и покажете на потребителя, ако (count ($ err)> 0) echo showErrorMessage ($ err); else (// Вземете адреса на потребителя $ row = mysql_fetch_assoc ($ res); $ email = $ row ["login "]; // Активирайте потребителя на акаунта $ sql =" АКТУАЛИЗИРАНЕ` ". BEZ_DBPREFIX." Reg` SET `status` = 1 WHERE` login` =" ". $ Email." ""; $ Res = mysqlQuery ($ sql ); // Изпратете имейл, за да активирате $ title = "(! LANG: Вашият акаунт в http: // сайта е активиран успешно"; $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("/^!} [имейл защитен](+ \.) + (2,6) $ / i ", $ _POST [" имейл "])) $ err =" Имейлът е въведен неправилно "." \ N ";) if (празен ($ _ POST [ "pass"])) $ err = "Полето за парола не може да бъде празно"; ако (празно ($ _ POST ["pass2"])) $ err = "Полето за потвърждение на паролата не може да бъде празно"; // Проверете за грешки и покажете на потребителя, ако (count ($ err)> 0) echo showErrorMessage ($ err); else (/ * Продължете проверката на въведените данни Проверете паролите за съвпадение * / if ($ _ POST ["pass"]! = $ _POST ["pass2"]) $ err = "Паролите не съвпадат"; // Проверяваме за грешки и го показваме на потребителя, ако (count ($ err)> 0) echo showErrorMessage ($ err); else (/ * Check ако имаме такъв потребител в базата данни * / $ sql = "SELECT` login` FROM` ". BEZ_DBPREFIX." reg` WHERE` login` = "". escape_str ($ _ POST ["email"]). "" "; $ res = mysqlQuery ($ sql); if (mysql_num_rows ($ res)> 0) $ err =" Съжалявам за вход: ". $ _POST [" имейл "]."зает! "; // Проверете за грешки и го покажете на потребителя, ако (count ($ err)> 0) echo showErrorMessage ($ err); else (// Вземете HASH на солта $ salt = salt (); / / Посолете паролата $ pass = md5 (md5 ($ _ POST ["pass"]). $ Salt); / * Ако всичко е наред, напишете данните в базата данни * / $ sql = "INSERT INTO`". BEZ_DBPREFIX . "reg` СТОЙНОСТИ (" "," ". escape_str ($ _ POST [" имейл "])." "," ". $ pass." "," ". $ сол.", "". md5 ( $ сол). "", 0) "; $ res = mysqlQuery ($ sql); // Изпращане на имейл за активиране на $ url = BEZ_HOST." less / reg /? mode = reg & key = ". md5 ($ salt ); $ title = "(! LANG: Регистрация на http: / / уебсайт"; $message = "Для активации Вашего акаунта пройдите по ссылке ". $url .""; sendMessageMail($_POST["email"], BEZ_MAIL_AUTOR, $title, $message); //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=reg&status=ok"); exit; } } } } ?>!}

    Файл REG_FORM.HTML

    PHP MySQL потребителска регистрация с активиране по имейл

    електронна поща *:
    Парола *:
    Потвърждение на парола *:

    Полета с икона *са изисквани

    Тъй като сме готови да регистрираме потребители, е време да напишем упълномощаване. Нека създадем формуляр за оторизация на потребителя, след това напишем манипулатор на оторизационен формуляр и накрая направим скрипт show.phpкоето ще ни покаже дали сме упълномощени в системата или не.

    AUTH.PHP файл

    0) echo showErrorMessage ($ err); else (/ * Създайте заявка за извличане от базата данни, за да проверите автентичността на потребителя * / $ sql = "SELECT * FROM`". BEZ_DBPREFIX. "reg` WHERE` login` = "". escape_str ($ _ POST [ "email"]). "" AND `status` = 1"; $ res = mysqlQuery ($ sql); // Ако данните за вход съвпадат, проверете паролата if (mysql_num_rows ($ res)> 0) (// Получаване на данни от таблицата $ row = mysql_fetch_assoc ($ res); if (md5 (md5 ($ _ POST ["pass"]). $ row ["salt"]) == $ row ["pass"]) ($ _SESSION [ "user"] = true; // Нулиране на заглавката на параметри ("Местоположение:". BEZ_HOST. "По-малко / рег. /? Режим = авт."); изход;) else echo showErrorMessage ("Грешна парола!");) Else echo showErrorMessage ("Влизам ". $ _POST [" имейл "]."не е намерен! ");))?>

    За тези, които имат най-новата версия на PHP, публикувам този скрипт с помощта на ЗНПот разширяване MySQLоттеглено и премахнато от по-новата версия на PHP. Изтеглете регистрация и упълномощаване php mysql pdo

    Архивът е актуализиран на 24 февруари 2015 г.

    Внимание:Ако използвате този скрипт на локален сървър като ДЕНВЪР,XAMPP, тогава не трябва да чакате писма до вашата пощенска кутия. Писмата са празни изпрати писмо... IN Денвърможете да ги намерите по пътя Z: \ tmp \! Sendmail \можете да отворите тези файлове във всеки пощенски клиент.

    За да се разделят посетителите на сайта в определени групи, на сайта трябва да се инсталира малка система регистрация на php... По този начин вие условно разделяте посетителите на две групи просто случайни посетители и на по-привилегирована група потребители, на които давате по-ценна информация.

    В повечето случаи се използва по-опростена система за регистрация, която се записва на php в един файл. регистър.php.

    И така, малко се отклоняваме и сега ще разгледаме по-отблизо регистрационния файл.

    Файл Register.php

    За да не Ви отнеме много време, ние ще създадем система, която ще събира потребители, приемайки минимална информация за контакт от тях. В този случай ще въведем всичко в базата данни на mysql. За най-висока скорост на базата данни ще създадем потребителската таблица във формата MyISAM и в utf-8 кодирането.

    Забележка! Всички скриптове винаги трябва да бъдат написани в едно и също кодиране. Всички файлове на сайта и базата данни MySql трябва да са в едно и също кодиране. Най-често срещаните кодировки са UTF-8 и Windows-1251.

    Защо трябва да пишете всичко в едно кодиране, ще поговорим по-късно. Дотогава приемайте тази информация като най-строгото правило за скриптове, в противен случай в бъдеще ще има проблеми със скриптовете. Всичко е наред, разбира се, но просто губите много време в търсене на грешки в скрипта.

    Как ще работи самият скрипт?

    Искаме да опростим всичко и да получим бързи резултати. Следователно ще получаваме от потребителите само вход, имейл и парола. И за да се предпазим от спам роботи, ще инсталираме малка капча. В противен случай някое момче от Лондон ще напише малък анализатор на роботи, който за няколко минути ще запълни цялата база данни с фалшиви потребители и ще се зарадва на неговия гений и безнаказаност.

    Ето и самият скрипт. Всичко е написано в един файл регистър.php:

    ! `; // червен въпросителен знак $ sha = $ sh. "scripts / pro /"; // път към основната папка $ bg = `bgcolor =" # E1FFEB "`; // цвят на фона на редове?> Пример за регистър скрипт register.php style.css "/>

    В този случай скриптът се отнася към себе си. И това е форма и процесор на данните, въведени във формуляра. Моля, обърнете внимание, че файлът е компресиран в zip архив и съдържа конфигурационния файл config.php, дъмп на база данни на потребителите, файлът, съдържащ помощните функции.php, таблицата със стилове style.css и самия файл register.php. Има и няколко файла, които отговарят за работата и генерирането на символи за капча.

    Процесът на създаване на система за регистрация е доста работа. Трябва да напишете код, за да проверите отново валидността на имейл адресите, да изпратите имейли за потвърждение, да предложите възможност за възстановяване на пароли, съхраняване на пароли на сигурно място, валидиране на формуляри за въвеждане и много други. Дори когато направите всичко това, потребителите не са склонни да се регистрират, тъй като дори и най-минималната регистрация изисква тяхната активност.

    В днешния урок ще разработим проста система за регистрация, която няма да изисква да използвате пароли! В резултат на това ще получим система, която може лесно да бъде модифицирана или интегрирана в съществуващ PHP сайт. Ако се интересувате, продължете да четете.

    PHP

    Вече сме готови да се справим с PHP кода. Основната функционалност на системата за регистрация се предоставя от потребителския клас, който можете да видите по-долу. Класът използва (), което е минималистична библиотека за работа с бази данни. Класът Потребител е отговорен за достъп до бази данни, генериране на маркери за вход и валидирането им. Представя ни прост интерфейс, който може лесно да бъде включен в системата за регистрация на вашите PHP-базирани сайтове.

    User.class.php

    // Частен екземпляр ORM
    частен $ orm;

    /**
    * Намерете потребител чрез символен низ. Вземат се само валидни символи
    * съображение. Токенът е валиден 10 минути след генерирането му.
    * @param низ $ token Токенът за търсене
    * @return Потребител
    */

    Публична статична функция findByToken ($ token) (

    // намерете го в базата данни и се уверете, че клеймото за време е правилно


    -> къде ("token", $ token)
    -> where_raw ("token_validity> NOW ()")
    -> find_one ();

    Ако (! $ Резултат) (
    върнете false;
    }

    Връщане на нов потребител ($ резултат);
    }

    /**
    * Или влезте, или регистрирайте потребител.
    * @return Потребител
    */

    Публична статична функция loginOrRegister ($ email) (

    // Ако такъв потребител вече съществува, върнете го

    Ако (Потребител :: съществува ($ имейл)) (
    връщане на нов потребител ($ имейл);
    }

    // В противен случай го създайте и върнете

    Връщане на потребител :: create ($ email);
    }

    /**
    * Създайте нов потребител и го запишете в базата данни
    * @param низ $ имейл Имейл адресът на потребителя
    * @return Потребител
    */

    Създаване на частна статична функция ($ имейл) (

    // Напишете нов потребител в базата данни и го върнете

    $ резултат = ORM :: for_table ("reg_users") -> create ();
    $ резултат-> имейл = $ имейл;
    $ резултат-> запазване ();

    Връщане на нов потребител ($ резултат);
    }

    /**
    * Проверете дали такъв потребител съществува в базата данни и върнете булева стойност.
    * @param низ $ имейл Имейл адресът на потребителя
    * @return boolean
    */

    Публична статична функция съществува ($ имейл) (

    // Съществува ли потребителят в базата данни?
    $ резултат = ORM :: for_table ("reg_users")
    -> къде ("имейл", $ имейл)
    -> преброяване ();

    Върнете $ резултат == 1;
    }

    /**
    * Създайте нов потребителски обект
    * @param $ param ORM екземпляр, идентификатор, имейл или нула
    * @return Потребител
    */

    Публична функция __construct ($ param = null) (

    Ако ($ param instanceof ORM) (

    // Предаден е екземпляр на ORM
    $ this-> orm = $ param;
    }
    иначе ако (is_string ($ param)) (

    // Изпратен е имейл
    $ this->
    -> къде ("имейл", $ param)
    -> find_one ();
    }
    друго (

    Ако (is_numeric ($ param))) (
    // Потребителски идентификатор беше предаден като параметър
    $ id = $ param;
    }
    иначе ако (isset ($ _ SESSION ["loginid"])) (

    // Не е предаден потребителски идентификатор, погледнете в сесията
    $ id = $ _SESSION ["loginid"];
    }

    $ this-> orm = ORM :: for_table ("reg_users")
    -> къде ("id", $ id)
    -> find_one ();
    }

    /**
    * Генерира нов маркер за вход SHA1, записва го в базата данни и го връща.
    * @ върнете низ
    */

    Публична функция generateToken () (
    // генериране на маркер за влезлия потребител. Запазете го в базата данни.

    $ token = sha1 ($ this-> email.time (). rand (0, 1000000));

    // Запазване на маркера в базата данни,
    // и го маркирайте като валиден само за следващите 10 минути

    $ this-> orm-> set ("token", $ token);
    $ this-> orm-> set_expr ("token_validity", "ADDTIME (NOW ()," 0:10 ")");
    $ this-> orm-> save ();

    Върнете $ токен;
    }

    /**
    * Влезте в този потребител
    * @return void
    */

    Вход за публична функция () (

    // Маркирайте потребителя като влязъл
    $ _SESSION ["loginid"] = $ this-> orm-> id;

    // Актуализиране на полето db на last_login
    $ this-> orm-> set_expr ("last_login", "NOW ()");
    $ this-> orm-> save ();
    }

    /**
    * Унищожете сесията и излезте от потребителя.
    * @return void
    */

    Излизане от публична функция () (
    $ _SESSION = масив ();
    деактивирано ($ _ SESSION);
    }

    /**
    * Проверете дали потребителят е влязъл.
    * @return boolean
    */

    Публична функция loggedIn () (
    return isset ($ this-> orm-> id) && $ _SESSION ["loginid"] == $ this-> orm-> id;
    }

    /**
    * Проверете дали потребителят е администратор
    * @return boolean
    */

    Публична функция isAdmin () (
    върнете $ this-> rank () == "администратор";
    }

    /**
    * Намерете типа на потребителя. Тя може да бъде администраторска или обикновена.
    * @ върнете низ
    */

    Ранг на публичната функция () (
    if ($ this-> orm-> rank == 1) (
    връщане "администратор";
    }

    Връщане "редовно";
    }

    /**
    * Магически метод за достъп до елементите на частното
    * $ orm екземпляр като свойства на потребителския обект
    * @param низ $ ключ Името на достъпното свойство
    * @ururn смесен
    */

    Публична функция __get ($ key) (
    if (isset ($ this-> orm -> $ key)) (
    върнете $ this-> orm -> $ key;
    }

    Връщане на нула;
    }
    }
    Токените се генерират с помощта на алгоритъм и се съхраняват в базата данни. Използваме MySQL, за да зададем колоната token_validity на 10 минути. Когато проверяваме токен, казваме на двигателя, че имаме нужда от токен, полето token_validity все още не е изтекло. По този начин ограничаваме времето, през което токенът ще бъде валиден.

    Имайте предвид, че използваме метода magic __get () в края на документа за достъп до свойствата на потребителския обект. Това ни позволява достъп до данните, които се съхраняват в базата данни под формата на свойства: $ user-> email, $ user-> token. Например, нека видим как можем да използваме този клас в следния кодов фрагмент:


    Друг файл, който съхранява необходимата функционалност, е functions.php. Там имаме няколко помощни функции, които ни позволяват да поддържаме останалата част от кода подредена.

    Функции.php

    Функция send_email ($ от, $ до, $ тема, $ съобщение) (

    // Помощна функция за изпращане на имейл

    $ headers = "MIME-версия: 1.0". "\ r \ n";
    $ headers. = "Тип съдържание: text / plain; charset = utf-8". "\ r \ n";
    $ headers. = "От:". $ от. "\ r \ n";

    Връщане на поща ($ to, $ subject, $ message, $ headers);
    }

    функция get_page_url () (

    // Намерете URL адреса на PHP файл

    $ url = "http". (празно ($ _ SERVER ["HTTPS"])? "": "s"). ": //". $ _ SERVER ["SERVER_NAME"];

    Ако (isset ($ _ SERVER ["REQUEST_URI"]) && $ _SERVER ["REQUEST_URI"]! = "") (
    $ url. = $ _SERVER ["REQUEST_URI"];
    }
    друго (
    $ url. = $ _SERVER ["PATH_INFO"];
    }

    Върнете $ url;
    }

    функция rate_limit ($ ip, $ limit_hour = 20, $ limit_10_min = 10) (

    // Броят опити за влизане за последния час от този IP адрес

    $ count_hour = ORM :: for_table ("reg_login_attempt")
    ->
    -> where_raw ("ts> SUBTIME (NOW ()," 1:00 ")")
    -> преброяване ();

    // Броят опити за влизане през последните 10 минути от този IP адрес

    $ count_10_min = ORM :: for_table ("reg_login_attempt")
    -> къде ("ip", sprintf ("% u", ip2long ($ ip)))
    -> where_raw ("ts> SUBTIME (NOW ()," 0:10 ")")
    -> преброяване ();

    Ако ($ count_hour> $ limit_hour || $ count_10_min> $ limit_10_min) (
    хвърли ново изключение („Твърде много опити за влизане!“);
    }
    }

    функция rate_limit_tick ($ ip, $ имейл) (

    // Създаване на нов запис в таблицата за опит за влизане

    $ login_attempt = ORM :: for_table ("reg_login_attempt") -> create ();

    $ login_attempt-> email = $ email;
    $ login_attempt-> ip = sprintf ("% u", ip2long ($ ip));

    $ login_attempt-> save ();
    }

    пренасочване на функция ($ url) (
    заглавка ("Местоположение: $ url");
    изход;
    }
    Функциите rate_limit и rate_limit_tick ни позволяват да ограничим броя на опитите за оторизация за определен период от време. Опитите за упълномощаване се записват в базата данни reg_login_attempt. Тези функции се задействат при изпращане на формуляра за упълномощаване, както можете да видите в следващия кодов фрагмент.

    Кодът по-долу е взет от index.php и той отговаря за изпращането на формуляра за вход. Той връща JSON отговор, който се задвижва от jQuery кода, който видяхме в assets / js / script.js.

    index.php

    If (! Empty ($ _ POST) && isset ($ _ SERVER ["HTTP_X_REQUESTED_WITH"])) (

    // Извеждаме JSON заглавка

    Заглавка ("Тип съдържание: application / json");

    // Валиден ли е имейл адресът?

    Ако (! Isset ($ _ POST ["email"]) ||! Filter_var ($ _ POST ["email"], FILTER_VALIDATE_EMAIL)) (
    хвърли ново изключение („Моля, въведете валиден имейл.“);
    }

    // Това ще изведе изключение, ако лицето е по-горе
    // разрешените ограничения за опит за влизане (вижте functions.php за повече):
    rate_limit ($ _ SERVER ["REMOTE_ADDR"]);

    // Запишете този опит за влизане
    rate_limit_tick ($ _ SERVER ["REMOTE_ADDR"], $ _POST ["имейл"]);

    // Изпратете съобщението до потребителя

    $ съобщение = "";
    $ имейл = $ _POST ["имейл"];
    $ subject = "Вашата връзка за вход";

    Ако (! Потребител :: съществува ($ имейл)) (
    $ subject = "Благодарим Ви за регистрацията!";
    $ message = "Благодарим Ви, че се регистрирахте на нашия сайт! \ n \ n";
    }

    // Опит за влизане или регистрация на лицето
    $ user = User :: loginOrRegister ($ _ POST ["имейл"]);

    $ message. = "Можете да влезете от този URL: \ n";
    $ message. = get_page_url (). "? tkn =". $ user-> generirajToken (). "\ n \ n";

    $ message. = "Връзката изтича автоматично след 10 минути.";

    $ result = send_email ($ fromEmail, $ _POST ["email"], $ subject, $ message);

    Ако (! $ Резултат) (
    хвърли ново изключение („При изпращането на имейла ви възникна грешка. Моля, опитайте отново.“);
    }

    Die (json_encode (масив (
    "message" => "Благодаря! Изпратихме връзка към вашата пощенска кутия. Проверете и папката си със спам. "
    )));
    }
    }
    catch (Изключение $ e) (

    Die (json_encode (масив (
    "грешка" => 1,
    "message" => $ e-> getMessage ()
    )));
    }
    При успешно упълномощаване или регистрация, горният код изпраща имейл до лицето с връзка за упълномощаване. Токенът (токенът) се предоставя като $ _GET променлива "tkn" поради генерирания URL адрес.

    index.php

    Ако (isset ($ _ GET ["tkn"])) (

    // Това валиден маркер за вход ли е?
    $ потребител = Потребител :: findByToken ($ _ GET ["tkn"]);

    // Да! Влезте в потребителя и пренасочете към защитената страница.

    $ потребител-> вход ();
    пренасочване ("protected.php");
    }

    // Невалиден Жетон. Пренасочете обратно към формата за вход.
    пренасочване ("index.php");
    }
    Изпълнението на $ user-> login () ще създаде необходимите променливи на сесията, позволявайки на потребителя да остане влязъл при следващите влизания.

    Излизането се осъществява приблизително по същия начин:

    Index.php

    Ако (isset ($ _ GET ["logout"])))

    $ потребител = нов потребител ();

    Ако ($ user-> loggedIn ()) (
    $ потребител-> изход ();
    }

    Пренасочване ("index.php");
    }
    В края на кода отново пренасочваме потребителя към index.php, така че параметърът? Logout = 1 в URL адреса е изключен.

    Нашият файл index.php също ще се нуждае от защита - не искаме вече влезли потребители да виждат формата. За това използваме метода $ user-> loggedIn ():

    Index.php

    $ потребител = нов потребител ();

    if ($ user-> loggedIn ()) (
    пренасочване ("protected.php");
    }
    И накрая, нека видим как можете да защитите страница на вашия сайт и да я направите достъпна само след разрешение:

    protected.php

    // За да защитите всяка php страница на вашия сайт, включете main.php
    // и създайте нов потребителски обект. Това е толкова просто!

    require_once "включва / main.php";

    $ потребител = нов потребител ();

    if (! $ user-> loggedIn ()) (
    пренасочване ("index.php");
    }
    След тази проверка можете да сте сигурни, че потребителят е влязъл успешно. Също така ще имате достъп до данните, съхранявани в базата данни като свойства на $ user обекта. За да покажете имейла на потребителя и неговия ранг, използвайте следния код:

    Ехо "Вашият имейл:". $ Потребител-> имейл;
    echo "Вашият ранг:". $ user-> rank ();
    Тук rank () е метод, тъй като колоната rank в базата данни обикновено съдържа числа (0 за редовни потребители и 1 за администратори) и ние трябва да преобразуваме всичко това в имена на ранг, което се реализира с помощта на този метод. За да конвертирате обикновен потребител в администратор, просто редактирайте потребителския запис във phpmyadmin (или друга програма за бази данни). Като администратор потребителят няма да има никакви специални функции. Вие сами имате право да изберете кои права да предоставите на администраторите.

    Готов!

    С това нашата проста система за регистрация е готова! Можете да го използвате на съществуващ PHP сайт или да го надстроите според вашите собствени изисквания.

    PHP | 25 януари, 2017 | Умен техник

    В този урок научаваме как да създадем формуляр за регистрация на потребителски акаунт с правила за валидиране на PHP, да качим изображение на аватар на профил и да вмъкнем потребителски данни в базата данни MySQL. След това ще извлечем информацията от базата данни и ще я покажем на началната страница на потребителския профил. Ето как ще изглежда страницата за приветствие:

    Настройване на CSS и HTML на формуляр

    Първо, продължете и копирайте HTML източника отдолу codepen и поставете кода във файл, наречен form.php. Също така създайте друг файл с име form.css в същата директория и копирайте и поставете целия CSS код от codepen по-долу в него:

    След като запазите form.php и form.css, можете да продължите и да стартирате form.php, за да видите как изглежда формулярът. Той трябва да изглежда точно по същия начин като този, показан в раздела "Резултат" от codepen по-горе ...

    Създаване на база данни и таблица

    Преди да започнем да добавяме PHP код към нашия формуляр, нека продължим и създадем базата данни с таблица, която ще съхранява в нея информацията за регистрираните ни потребители. По-долу в SQL скрипта за създаване на база данни "акаунти" и таблица "потребители":

    СЪЗДАВАНЕ НА ДАННИ база данни; СЪЗДАЙТЕ ТАБЛИЦА „акаунти“. „Потребители“ („id“ INT NOT NULL AUTO_INCREMENT, „username“ VARCHAR (100) NOT NULL, „email“ VARCHAR (100) NOT NULL, „password“ VARCHAR (100) NOT NULL, „avatar `VARCHAR (100) НЕ НУЛЕН, ОСНОВЕН КЛЮЧ (` id`));

    По-долу е даден пълен код с проверка на грешки за свързване към база данни MySQL и изпълнение над SQL изрази за създаване на таблицата на базата данни и потребители:

    // променливи за свързване $ host = "localhost"; $ потребител = "корен"; $ парола = "mypass123"; // създаване на mysql връзка $ mysqli = нов mysqli ($ хост, $ потребител, $ парола); if ($ mysqli-> connect_errno) (printf ("Неуспешна връзка:% s \ n", $ mysqli-> connect_error); die ();) // създаване на базата данни if (! $ mysqli-> заявка ("СЪЗДАВАНЕ НА БАЗАТА ДАННИ акаунти2 ")) (printf (" Съобщение за грешка:% s \ n ", $ mysqli-> грешка);) // създаване на потребителска таблица с всички полета $ mysqli-> заявка (" СЪЗДАВАНЕ НА ТАБЛИЦА `account2`.`users` ( `id` INT NOT NULL AUTO_INCREMENT,` username` VARCHAR (100) NOT NULL, `email` VARCHAR (100) NOT NULL,` password` VARCHAR (100) NOT NULL, `avatar` VARCHAR (100) NOT NULL, PRIMARY KEY (`id`));") или умира ($ mysqli-> грешка);

    С нашия HTML, CSS и таблицата на базата данни, ние сега четем, за да започнем да работим по нашия формуляр. Първата стъпка е да създадем място за показване на съобщения за грешки и след това ще започнем да пишем някаква проверка на формата.

    Стартиране на нова сесия за съобщения за грешки

    Отворете form.php и добавете следните редове към него в горната част, не забравяйте да използвате php отварящите и затварящите тагове (не съм включил html частта на form.php, за да поддържам нещата чисти).

    Създадохме нова сесия, защото ще трябва да получим достъп до $ _SESSION ["съобщение"] на страницата "welcome.php", след като потребителят се регистрира успешно. Връзката MySQL също е създадена веднага, за да можем да работим с базата данни по-късно.

    Също така трябва да разпечатаме $ _SESSION ["съобщение"] на текущата страница. От самото начало съобщението е настроено на "" (празен низ), което искаме, така че нищо няма да бъде отпечатано в този момент. Нека продължим и добавим съобщението в правилния DIV таг:

    Създаване на правила за проверка

    Този формуляр вече се предлага с някои правила за проверка, ключовата дума „задължително“ вътре в HTML маркерите за въвеждане проверява дали полето не е празно, така че не трябва да се притесняваме за празни полета. Също така, като зададете тип на въвеждане на „имейл и„ парола “, HTML5 потвърждава формата за правилно форматиране на имейл и парола, така че не е необходимо да създаваме правила за тези полета.

    Все пак трябва да напишем някои правила за валидиране, за да се уверим, че паролите съвпадат, аватарният файл всъщност е изображение и се уверете, че потребителят е добавен към нашата база данни.

    Нека създадем друг файл и го наречем validate.php, за да поддържаме нещата добре организирани. Ще включим и този файл от нашия form.php.

    Първото нещо, което ще направим във validate.php, е да се уверим, че формулярът е изпратен.

    / * validate.php * / // формулярът е изпратен с метод на публикуване, ако ($ _SERVER ["REQUEST_METHOD"] == "POST") ()

    След това ще проверим дали паролата и потвърждаването на паролата са равни една на друга

    if ($ _SERVER ["REQUEST_METHOD"] == "POST") (// проверяваме дали две пароли са равни една на друга, ако ($ _POST ["парола"] == $ _POST ["verifympassword"])))))

    Работа със супер глобални променливи

    Обърнете внимание как използвахме супер глобални променливи $ _SERVER и $ _POST, за да получим необходимата информация. Имената на ключовете в променливата $ _POST са налични, защото използвахме method = "post", за да изпратим формуляра си.

    Имената на ключовете са всички посочени полета за въвеждане на HTML с име на атрибут (например: name = "парола", name = "confirmmpassword"):

    />

    За да изясним малко повече, ето как би изглеждал $ _POST (ако приемем, че всички полета във формуляра са попълнени), ако използваме функция print_r ($ _ POST) върху него, последвано от die (); за да прекратите скрипта веднага след отпечатването му. Това е добър начин за отстраняване на грешки във вашия скрипт и да видите какво се случва:

    if ($ _SERVER ["REQUEST_METHOD"] == "POST") (print_r ($ _ POST); die (); / * output: Array (=> clevertechie => [имейл защитен]=> mypass123 => mypass123 => Регистриране) * /

    Сега ще вземем останалата част от изпратените ни стойности от $ _POST и ще ги форматираме правилно, за да могат да бъдат вмъкнати в нашата таблица на базата данни MySQL

    // формулярът е изпратен с пост if ($ _SERVER ["REQUEST_METHOD"] == "POST") (if ($ _POST ["password"] == $ _POST ["confirmmpassword"]) (// дефиниране на други променливи с изпратени стойности от $ _POST $ username = $ mysqli-> real_escape_string ($ _ POST ["username"]); $ email = $ mysqli-> real_escape_string ($ _ POST ["email"]); // md5 хеш парола за сигурност $ password = md5 ($ _ POST ["парола"]); // пътят, в който ще се съхранява изображението на аватара ни $ avatar_path = $ mysqli-> real_escape_string ("images /".$_ FILES [" avatar "] ["име"]);))

    В горния код използвахме метода real_escape_string (), за да сме сигурни, че потребителското ни име, имейл и avatar_path са форматирани правилно, за да бъдат вмъкнати като валиден SQL низ в базата данни. Също така използвахме хеш функция md5 (), за да създадем хеш низ от парола за сигурност.

    Как работи качването на файлове

    Също така обърнете внимание на новата супер глобална променлива $ _FILES, която съдържа информацията за нашето изображение, което е аватарът, който се качва от компютъра на потребителя. Променливата $ _FILES е достъпна, защото използвахме enctype = "multipart / form-data" в нашата форма:

    Ето изхода, ако използваме print_r ($ _ FILES), последван от die (); точно както направихме за променливата $ _POST:

    if ($ _SERVER ["REQUEST_METHOD"] == "POST") (print_r ($ _ FILES); die (); / * output: Array (=> Array (=> guldan.png => image / png => C : \ Windows \ Temp \ php18D8.tmp => 0 => 98823)) * / // по този начин имаме достъп до името на изображението: $ _FILES ["аватар"] ["име"]; // guldan .png

    Когато файлът е качен за първи път, използвайки метода за публикуване, той ще се съхранява във временна директория. Тази директория може да бъде достъпна с $ _FILES ["аватар"] ["tmp_name"], което е "C: \ Windows \ Temp \ php18D8.tmp" от изхода по-горе.

    След това можем да копираме този файл от временната директория в директорията, която искаме, която е $ avatar_path. Но преди да копираме файла, трябва да проверим дали файлът всъщност е образ, за ​​това ще проверим друг ключ, извикан от нашата променлива $ _FILES.

    // пътят, в който ще се съхранява изображението на аватара ни $ avatar_path = $ mysqli-> real_escape_string ("images /".$_ FILES [" avatar "] [" name "]); // уверете се, че типът на файла е image if (preg_match ("! image!", $ _ FILES ["avatar"] ["type"])) (// копиране на изображение в изображения / папка if (copy ($ _ FILES) ["avatar"] ["tmp_name"], $ avatar_path)) ())

    Функцията preg_match съвпада с изображението от ключа ["type"] на масива $ _FILES, след което използваме функцията copy (), за да копираме нашия файл с изображение, който приема два параметъра. Първият е пътят на изходния файл, който е нашата директория ["tmp_name"], а вторият е пътят на местоназначението, който е нашият файлов път "images / guldan.png".

    Запазване на потребителски данни в база данни MySQL

    Вече можем да зададем някои променливи на сесията, които ще ни трябват на следващата страница, които са потребителско име и avatar_path, и също така ще създадем SQL заявката, която ще вмъкне всички подадени данни в базата данни на MySQL:

    if (copy ($ _ FILES ["avatar"] ["tmp_name"], $ avatar_path)) (// задайте променливи на сесията да се показват на страницата за приветствие $ _SESSION ["потребителско име"] = $ потребителско име; ] = $ avatar_path; // създаваме низ за SQL заявка за вмъкване на данни в базата данни $ sql = "INSERT INTO потребители (потребителско име, имейл, парола, аватар)". "СТОЙНОСТИ (" $ потребителско име "," $ имейл "," $ парола "," $ avatar_path ")";)

    Последната стъпка е да обърнем нашата заявка, използвайки метода query () и да проверим дали е успешна. Ако е така, това означава, че потребителските данни са записани успешно в таблицата "потребители"! След това задаваме променливата на последната сесия $ _SESSION ["съобщение"] и пренасочете потребителя към страницата welcome.php, като използвате функцията header ():

    // проверяваме дали mysql заявката е успешна, ако ($ mysqli-> query ($ sql) === true) ($ _SESSION ["message"] = "Регистрацията е успешна! Добавено $ потребителско име към базата данни!"; // пренасочваме потребител на заглавката welcome.php ("местоположение: welcome.php");)

    Това е почти всичко, от което се нуждаем за валидиране, просто трябва да добавим всички ключови думи "else", в случай че нещата не вървят както е планирано от всички оператори if, които сме създали. Ето как изглежда пълният код за validate.php досега:

    / * validate.php * / // формулярът е изпратен с пост if ($ _SERVER ["REQUEST_METHOD"] == "POST") (// две пароли са равни една на друга, ако ($ _POST ["парола"] == $ _POST ["confirmmpassword"]) (// дефинираме други променливи с изпратени стойности от $ _POST $ username = $ mysqli-> real_escape_string ($ _ POST ["username"]); $ email = $ mysqli-> real_escape_string ($ _POST ["имейл"]); // md5 хеш парола за сигурност $ password = md5 ($ _ POST ["парола"]); // пътят, в който ще се съхранява изображението на аватара ни $ avatar_path = $ mysqli-> real_escape_string ("images /".$_FILES""avatar""""name"]); // уверете се, че типът на файла е image if (preg_match ("! Image!", $ _ FILES ["avatar"] [" тип "])) (// копиране на изображение в изображения / папка, ако (копиране ($ _ FILES [" аватар "] [" tmp_name "], $ avatar_path)) (// задаване на променливи на сесията да се показват на страницата за приветствие $ _SESSION [ "username"] = $ username; $ _SESSION ["avatar"] = $ avatar_path; // вмъкване на потребителски данни в базата данни $ sql = "INSERT INTO users (потребителско име, имейл, парола, аватар)". "VALUES (" $ use rname "," $ имейл "," $ парола "," $ avatar_path ")"; // проверяваме дали mysql заявката е успешна, ако ($ mysqli-> query ($ sql) === true) ($ _SESSION ["message"] = "Регистрацията е успешна!". "Добавено $ потребителско име в базата данни!"; / / пренасочете потребителя към заглавката welcome.php ("местоположение: welcome.php");)))))

    Задаване на съобщения за грешки в сесията, когато нещата се объркат

    Нека да продължим и да добавим всички останали изявления наведнъж, където просто задаваме съобщенията за грешка $ _SESSION ["съобщение"], които ще бъдат разпечатвани, когато някой от нашите оператори if не успее. Добавете следния код веднага след последния оператор if където проверихме за успешна заявка на mysqli и в последната къдрава скоба по следния начин:

    Ако ($ mysqli-> заявка ($ sql) === вярно) ($ _SESSION ["съобщение"] = "Регистрацията е успешна!". "Добавено $ потребителско име в базата данни!"; Заглавка ("местоположение: добре дошъл.php" );) else ($ _SESSION ["message"] = "Потребителят не може да бъде добавен към базата данни!";) $ mysqli-> close (); ) else ($ _SESSION ["message"] = "Качването на файл не бе успешно!";)) else ($ _SESSION ["message"] = "Моля, качвайте само GIF, JPG или PNG изображения!";)) else ($ _SESSION [ "message"] = "Две пароли не съвпадат!";)) // ако ($ _SERVER ["REQUEST_METHOD"] == "POST")

    След това съобщението за сесия ще покаже съобщението за грешка в дивиден таг, където поставяме $ _SESSION ["съобщение"], ако си спомните:

    По-долу е даден пример за това как ще изглежда съобщението за грешка, когато две пароли не съвпадат. Чувствайте се свободни да играете с него, за да задействате други съобщения за грешка:


    Създаване на страница за приветствие на потребителския профил

    Вече приключихме с validate.php. Последната стъпка е да създадем страница welcome.php, която ще показва потребителското име, изображението на аватара и някои потребители, които вече са били регистрирани преди това, заедно със собствените им потребителски имена и миниатюри на мини аватара. е как трябва да изглежда пълният welcome.php, ще обясня части от него, които може да са объркващи:

    ">
    Добре дошли заявка ($ sql); ?>
    Всички регистрирани потребители:fetch_assoc ()) (ехо "
    ". $ row [" потребителско име "]."
    "; ехо"
    "; } ?>

    Променливата част $ _SESSION отгоре трябва да бъде лесна за разбиране, ние просто прехвърляме променливите от нашата страница validate.php на тази страница welcome.php, ако все още сте объркани от това, моля, проверете страницата за пълна разбивка.

    Работа с MySQL Result Object

    Винаги, когато използваме оператора „SELECT“ в нашата SQL заявка и след това изпълняваме този SQL с команда $ mysqli-> query ($ sql), върнатата стойност е резултат от MySQL обект. След като имаме обекта на резултата, има няколко метода, които стават достъпни, за да можем по-нататък да започнем да работим с данните.

    $ sql = "ИЗБЕРЕТЕ потребителско име, аватар ОТ потребители"; $ резултат = $ mysqli-> заявка ($ sql); // $ резултат = обект mysqli_result

    Един от тези методи е $ result-> fetch_assoc (), който извлича текущия ред и връща масив с всички данни за реда. Така че поставяме това в условен израз, който ще стане фалшив, когато достигне последния ред в резултата и съхраняваме върнатата стойност от $ result-> fetch_assoc () вътре в променливата $ row.

    // връща асоциативен масив от извлечен ред while ($ row = $ result-> fetch_assoc ()) (echo "

    ". $ row [" потребителско име "]."
    "; ехо"
    "; }

    Заключение

    И по този начин имаме достъп до $ row ["потребителско име"] и $ row ["аватар"] от асоцииращия масив, който се връща, на потребителите, които вече са били регистрирани преди това и живеят в нашата база данни на потребители маса!

    Страницата за добре дошли в профила сега трябва да изглежда много подобно на тази, показана в самото начало на този урок, а формулярът вече е завършен, добра работа! Моля, публикувайте всички въпроси, които може да имате в коментарите по-долу.