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

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

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

Изтеглете кода

Можете да изтеглите целия изходен код за системата за регистрация/вход от връзката по-долу:

Конфигуриране и качване
Файлът ReadMe съдържа подробни инструкции.

Отворете източник\include\membersite_config.phpфайл в текстов редактор и актуализирайте конфигурацията. (Влизане в база данни, име на уебсайта ви, имейл адрес и т.н.).

Качете цялото съдържание на директорията. Тествайте register.php, като изпратите формуляра.

Формата за регистрация

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

Ето формата за регистрация:

Регистрирайте вашето пълно име*: имейл адрес*: потребителско име*: парола*:

И така, имаме текстови полета за име, имейл и парола. Обърнете внимание, че използваме за по-добра използваемост.

Валидиране на формуляр

На този етап е добра идея да поставите някакъв код за валидиране на формуляр, така че да сме сигурни, че разполагаме с всички данни, необходими за създаване на потребителски акаунт. Трябва да проверим дали името, имейлът и паролата са попълнени и дали имейлът е в правилния формат.

Обработка на подаването на формуляра

Сега трябва да обработваме данните от формуляра, които са изпратени.

Ето последователността (вижте файла fg_membersite.php в изтегления източник):

функция RegisterUser() ( if(!isset($_POST["submitted"])) ( return false; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) ( return false; ) $this- >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) ( return false; ) if(!$this->SendUserConfirmationEmail($formvars)) ( return false; ) $this->SendAdminIntimationEmail($) formvars);

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

Запазване на данните в базата данни

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

функция SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ( $this->HandleError("Неуспешно влизане в базата данни!"); return false; ) if(!$this->Ensuretable()) ( return false; ) if(!$this->IsFieldUnique($formvars,"email")) ( $this->HandleError("Този имейл вече е регистриран"); return false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError("Това потребителско име вече е използвано. Моля, опитайте с друго потребителско име"); return false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("Вмъкването в базата данни е неуспешно!"); return false;

Имайте предвид, че сте конфигурирали данните за влизане в базата данни във файла membersite_config.php. В повечето случаи можете да използвате „localhost“ за хост на база данни.
След като влезем, се уверяваме, че таблицата съществува. (Ако не, скриптът ще създаде необходимата таблица).
След това се уверяваме, че потребителското име и имейлът са уникални. Ако не е уникален, връщаме грешката обратно на потребителя.

Структурата на таблицата на базата данни

Това е структурата на таблицата. Функцията CreateTable() във файла fg_membersite.php създава таблицата. Ето кода:

функция CreateTable() ( $qry = "Създаване на таблица $this->tablename (". "id_user INT NOT NULL AUTO_INCREMENT," "име VARCHAR(128) NOT NULL," "имейл VARCHAR(64) NOT NULL," " "phone_number VARCHAR(16) NOT NULL," "потребителско име VARCHAR(16) NOT NULL," "парола VARCHAR(32) NOT NULL," "потвърдете код VARCHAR(32)", " ")"; if(!mysql_query($qry,$ this->connection)) ( $this->HandleDBError("Грешка при създаването на таблицата \nquery беше\n $qry"); return false; ) return true )

Полето id_user ще съдържа уникалния идентификатор на потребителя и също така е първичният ключ на таблицата. Забележете, че допускаме 32 знака за полето за парола. Правим това, защото като допълнителна мярка за сигурност ще съхраним паролата в базата данни, шифрована с помощта на MD5. Моля, имайте предвид, че тъй като MD5 е еднопосочен метод за криптиране, ние няма да можем да възстановим паролата, в случай че потребителят я забрави.

Вмъкване на регистрацията в таблицата

Ето кода, който използваме за вмъкване на данни в базата данни. Ще разполагаме с всички наши данни в масива $formvars.

функция InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "вмъкване в ".$this->tablename."(име, имейл, потребителско име, парола, confirmcode) values ​​​​("" . $this->SanitizeForSQL($formvars["name"]) . "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" . $ this->SanitizeForSQL . "", "" . md5($formvars["password"]) "," . $confirmcode . "")" ( $insert_query ,$this->connection)) ( $this->HandleDBError("Грешка при вмъкване на данни в таблицата\nquery:$insert_query"); return false; ) return true )

Забележете, че използваме PHP функцията md5() за шифроване на паролата, преди да я вмъкнем в базата данни.
Също така, ние правим уникалния код за потвърждение от имейл адреса на потребителя.

Изпращане на имейли

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

функция SendUserConfirmationEmail(&$formvars) ( $mailer = new PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) ; $mailer->Subject = "Вашата регистрация с ".$this->sitename; $this->GetFromAddress(); $this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="Hello" n\r\n". "Благодарим ви за регистрацията с ".$this->sitename."\r\n". "Моля, щракнете върху връзката по-долу, за да потвърдите регистрацията си.\r\n." "$confirm_url\r \n". "\r\n". "Поздрави,\r\n". "Уеб администратор\r\n". $this->sitename; if(!$mailer->Send()) ( $this-> HandleError("Неуспешно изпращане на имейл за потвърждение."); return false; return true)

Актуализации

9 януари 2012 г
Добавени са функции за нулиране на парола/промяна на парола
Кодът вече е споделен в GitHub.

Добре дошли отново!

Лиценз


Кодът се споделя под лиценз LGPL. Можете свободно да го използвате на търговски или некомерсиални уебсайтове.

Няма свързани публикации.

Коментарите за този запис са затворени.

Laravel изисква Composer да управлява зависимостите на проекта. Така че, преди да инсталирате Laravel, уверете се, че имате инсталиран Composer на вашата система. В случай, че чувате за Composer за първи път, това е инструмент за управление на зависимости за php, подобен на npm на node.

За да инсталирате Composer на вашата машина, проверете тази публикация:

Инсталиране на Laravel на Windows:

Следвайте стъпките по-долу, за да инсталирате laravel на Windows машина. Без значение, че имате xampp/wamp стек, той работи и за двете. На WAMP не забравяйте да инсталирате laravel в папка "www" и в XAMPP, очевидно "htdocs".

СТЪПКА-1) Отворете папката „htdocs“ на XAMPP, задръжте клавиша SHIFT и щракнете с десния бутон върху папката и изберете „отвори командния прозорец тук“. Като алтернатива можете да отворите командния прозорец и да промените директорията на "xampp/htdocs".

СТЪПКА-2) Въведете следната команда.

Композитор create-project laravel/laravel my_laravel_site --prefer-dist

Тук "my_laravel_site" е името на папката, където ще бъдат инсталирани файловете на laravel. Променете това по ваш вкус.

СТЪПКА-3) Сега е време да бъдете търпеливи, тъй като инсталирането на laravel ще отнеме известно време.

СТЪПКА-4) След инсталиране променете директорията на "my_laravel_site" (cd "my_laravel_site") в командния ред и въведете командата по-долу.

Php занаятчийска услуга

СТЪПКА-5) Това ще покаже съобщение нещо като „Сървърът за разработка на Laravel стартира:“ заедно с url.

СТЪПКА-6) Копирайте и поставете URL адреса в браузъра. Ако нещата вървят както трябва, ще видите началния екран на laravel.

СТЪПКА-7) Готово! Успешно сте инсталирали laravel на Windows машина и сте готови за работа.

Задаване на ключ на приложението:

Laravel изисква малко конфигурация след инсталиране. Изисква да зададете ключа на приложението. Това е случаен низ от 32 знака, използван за криптиране на сесия и други чувствителни данни. Обикновено това ще бъде зададено автоматично, когато инсталирате laravel чрез композитор или инсталатор на laravel.

В случай, че не е зададено, трябва да го направите ръчно. Първо се уверете, че сте преименували файла ".env.example" на ".env" в корена на вашето приложение. След това отворете командния ред и преминете към папката на проекта laravel. Сега изпълнете командата по-долу, за да генерирате ключа.

Php занаятчийски ключ: генериране

Копирайте този генериран ключ в променливата APP_KEY на файла ".env". Запазете и сте готови.

Инсталиране на конкретна версия на Laravel:

Посоченият по-горе метод ще накара композитора да изтегли и инсталира най-новата версия на laravel. Ако искате да инсталирате по-ранни версии на laravel на вашата машина, не забравяйте да включите съответния номер на версия в командата create-project.

Композитор create-project laravel/laravel=5.4 your-project-name --prefer-dist Прочетете също:

По същия начин можете лесно инсталирайте laravel с помощта на композитор на windows. Надявам се да намерите този урок за полезен. Моля, споделете го в социалния си кръг, ако ви харесва.

Задейства веднага след като нов потребител е регистриран на сайта. След като потребителските данни бъдат добавени към базата данни.

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

По времето, когато тази кука се задейства, всички метаданни вече са добавени към базата данни. Паролата вече е шифрована.

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

За да добавите или актуализирате потребителски метаданни, можете също да използвате куката insert_user_meta. Вижте примера по-долу или кода за функцията wp_insert_user().

Използване на add_action("user_register", "____action_function_name"); функция ____action_function_name($user_id) ( // Действие... ) $user_id (номер) ID на регистриран потребител. Примери #1 Добавете допълнителни потребителски данни по време на регистрацията

Този пример показва как да добавите стойност за полето user_sex, което се предава в данните $_POST от формуляра за регистрация.

Имайте предвид, че проверката за актуализирани данни не трябва да се извършва по време на тази кука - твърде късно е, потребителят вече е добавен! Проверката на данните трябва да се извърши по време на куката за регистрация_погрешки; куката за регистрация на потребител няма да работи, ако проверката е неуспешна...

// предварителна проверка на полето add_filter("registration_errors", "my_validate_user_data"); функция my_validate_user_data($errors)( if(empty($_POST["user_sex"])) $errors->add("empty_user_sex", "Полът трябва да бъде посочен!"); elseif(! in_array($_POST["user_sex " ], array("male","female") $errors->add("invalid_user_sex", "Полът е неправилен!"); // актуализиране на потребителски метаданни add_action("user_register", "); my_user_registration"); функция my_user_registration($user_id) ( // $_POST["user_sex"] проверено предварително... update_user_meta($user_id, "user_sex", $_POST["user_sex"]); )

#2 Актуализирайте метаданните на потребителя при регистрация

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

Този пример напълно замества куката user_register от предишния пример. Взимаме проверката за грешки от преди. пример.

// $meta = apply_filters("insert_user_meta", $meta, $user, $update); add_filter("insert_user_meta", "my_user_registration_meta", 10, 3); функция my_user_registration_meta($meta, $user, $update) ( // изход, ако това не е регистрация на потребител if($update) върне $meta; $meta["user_sex"] = $_POST["user_sex"]; // $ _POST ["user_sex"] проверен предварително... върна $meta )

Къде се нарича куката? Къде се използва куката (в WP ядрото)

wp-admin/includes/admin-filters.php 97 add_action("user_register", array("WP_Internal_Pointers", "dismiss_pointers_for_new_users"));

Reg.ru: домейни и хостинг

Най-големият регистратор и хостинг доставчик в Русия.

Повече от 2 милиона имена на домейни в услуга.

Промоция, домейн поща, бизнес решения.

Повече от 700 хиляди клиенти по света вече са направили своя избор.

*Задръжте мишката, за да спрете превъртането на пауза.

Назад Напред

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

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

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

В този урок ще създадем много проста система за регистрация, която изобщо не изисква и не съхранява пароли! Резултатът ще бъде лесен за модифициране и добавяне към съществуващ PHP сайт. Искате ли да разберете как работи? Прочетете по-долу.



Ето как ще работи нашата супер проста система:

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

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

Предимства на този подход:

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

недостатъци:

Сигурност на потребителския акаунт. Ако някой има достъп до пощата на потребителя, той може да влезе.
- Имейлът не е защитен и може да бъде прихванат. Имайте предвид, че този въпрос е от значение и в случай, че паролата е забравена и трябва да бъде възстановена или във всяка система за оторизация, която не използва HTTPS за пренос на данни (вход/парола);
- Докато конфигурирате пощенския си сървър правилно, има вероятност съобщенията с връзки за оторизация да попаднат в спам;

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

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

Как да използвате тази система

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

Необходимо е да изтеглите приложените източници към урока
- Намерете файла tables.sql в архива, като го импортирате във вашата база данни, като използвате опцията за импортиране в phpMyAdmin. Алтернативен начин: отворете този файл чрез текстов редактор, копирайте SQL заявката и я изпълнете;
- Отворете include/main.php и попълнете настройките за свързване с вашата база данни (посочете потребител и парола за връзка с базата данни, както и хост и име на базата данни). В същия файл трябва да посочите и имейла, който ще се използва като оригинален адрес за съобщенията, изпращани от системата. Някои хостове блокират изходящи имейли, освен ако формулярът не съдържа истински имейл адрес, който е създаден от контролния панел на хоста, така че предоставете реален адрес;
- Качете всички index.php , protected.php файлове и активи и включващи папки през FTP на вашия хост;
- Добавете кода по-долу към всяка PHP страница, където искате да се показва формата за влизане;

Require_once "includes/main.php"; $потребител = нов потребител(); if(!$user->loggedIn())( redirect("index.php"); )
- Готови!

За тези, които се интересуват как работи всичко, прочетете по-долу!

Първата стъпка е да напишете HTM кода за формуляра за оторизация. Този код се намира във файла index.php. Този файл също съдържа PHP код, който обработва данни от формуляри и други полезни системни функции за влизане. Можете да научите повече за това в секцията по-долу, посветена на прегледа на PHP кода.

index.php

Урок: Супер проста система за регистрация с PHP и MySQL Влезте или се регистрирайте

Въведете вашия имейл адрес по-горе и ние ще изпратим
вие връзка за вход.

Вход/Регистрация

В секцията head (между таговете и) включих основните стилове (те не са обхванати в този урок, така че можете да ги разгледате сами. Папка активи/css/style.css). Преди затварящия таг включих библиотеката jQuery и файла script.js, които ще напишем и анализираме по-долу.


JavaScript

jQuery проследява състоянието на бутона "Регистрация/Вход", използвайки функцията e.preventDefault()и изпраща AJAX заявки. В зависимост от отговора на сървъра, той показва едно или друго съобщение и определя по-нататъшни действия/

активи/js/script.js

$(function())( var form = $("#login-register"); form.on("submit", function(e)( if(form.is(".loading, .loggedIn"))( return false ;) var email = form.find("input").val(), messageHolder = form.find("span"); $.post(this.action, (email: email), function (m)(if (m.error)( form.addClass("error"); messageHolder.text(m.message); ) else( form.removeClass("error").addClass("loggedIn"); messageHolder. text(m.message ); )); $(document).ajaxStart(function())( form.addClass("loading"); )); ;

беше добавен към формуляра за показване на текущото състояние на AJAX заявката (това стана възможно благодарение на методите ajaxStart()) И ajaxComplete(), който можете да намерите към края на файла).

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

Схема на база данни

Нашата невероятно проста система за регистриране използва 2 MySQL таблици (SQL кодът е във файла tables.sql). Първият съхранява данни за потребителски акаунти. Вторият съхранява информация за броя на опитите за влизане.


Схема на потребителска таблица.

Системата не използва пароли, както се вижда от диаграмата. На него можете да видите колоната с токени с токени, съседни на колоната token_validity. Токенът се инсталира веднага щом потребителят се свърже със системата и настрои своя имейл за изпращане на съобщение (повече за това в следващия блок). Колоната token_validity задава времето 10 минути по-късно, след което токенът вече не е валиден.


Схема на таблица, която отчита броя на опитите за оторизация.

И в двете таблици IP адресът се съхранява в обработен вид, като се използва функцията ip2long в поле от тип integer.

Сега можем да напишем малко PHP код. Основната функционалност на системата е възложена на класа User.class.php, който можете да видите по-долу.

Този клас активно използва idorm (docs), тези библиотеки са минимално необходимите инструменти за работа с бази данни. Той управлява достъпа до базата данни, генерирането на токени и валидирането на токени. Той предоставя прост интерфейс, който улеснява свързването на система за регистрация към вашия сайт, ако използва PHP.

User.class.php

Class User( // Private ORM case private $orm; /** * Намерете потребител по токен. Само валидни токени се приемат за разглеждане. Токенът се генерира само за 10 минути от момента, в който е създаден * @param string $token . Това е токенът, който търсим * @return User Върнете стойността на функцията User */ public static function findByToken($token)( // намерете токена в базата данни и се уверете, че е зададен правилният времеви печат $. резултат = ORM::for_table("reg_users") ->where ("token", $token) ->where_raw("token_validity > NOW()") ->find_one(); if(!$result)( return false; ) return new User($result) /** *); Упълномощаване или регистрация на потребител * @param string $email. вече съществува, връща стойността на функцията User от посочения имейл адрес, съхранен в базата данни if(User::exists($email))( return new User($email); ) // В противен случай създайте нов потребител в база данни и връща стойността на функцията User::create от посочения имейл return User::create($email);

Токените се генерират с помощта на алгоритъма SHA1 и се съхраняват в базата данни. Използвам функциите за синхронизиране на MySQL, за да задам 10-минутен срок за валидност на токена.

Когато токенът е валидиран, ние директно казваме на манипулатора, че разглеждаме само токени, които все още не са изтекли, съхранени в колоната token_validity.

Моля, обърнете внимание, че използвам магическия метод __получи docs библиотека в края на файла, за да прихване достъпа до свойствата на потребителския обект.

Благодарение на това става възможен достъп до информация, съхранявана в базата данни, благодарение на свойствата $user->email, $user->token и т.н. В следващия кодов фрагмент ще разгледаме как да използваме тези класове като пример.


Защитена страница

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

functions.php

Функция send_email($from, $to, $subject, $message)( // Помощник, който изпраща имейл $headers = "MIME-Версия: 1.0" . "\r\n"; $headers .= "Content-type: text /plain; charset=utf-8" . "\r\n"; $headers .= "От: ".$from . "\r\n"; върната поща($to, $subject, $message, $headers ); ) функция get_page_url())( // Определяне на URL адреса на PHP файла $url = "http".(empty($_SERVER["HTTPS"])?"":"s")."://" .$_SERVER ["SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")( $url.= $_SERVER["REQUEST_URI"]; ) else( $url. = $_SERVER["PATH_INFO"]; return $url; function rate_limit($ip, $limit_hour = 20, $limit_10_min = 10)( // Брой опити за влизане през последния час за този IP адрес $count_hour = ORM: :for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"1:00" )") ->count(); // Брой опити за влизане през последните 10 минути за този IP адрес $count_10_min = ORM::for_table("reg_login_attempt") ->where("ip", sprintf("%u" , ip2long($ ip))) ->where_raw("ts > SUBTIME(NOW(),"0:10")") ->count();

if($count_hour > $limit_hour || $count_10_min > $limit_10_min)( throw new Exception("Твърде много опити за влизане!"); ) ) function rate_limit_tick($ip, $email)( // Създаване на нов запис в таблицата който отчита броя опити за влизане $login_attempt = ORM::for_table("reg_login_attempt")->create(); $login_attempt->email = $login_attempt->ip = sprintf("%u", ip2long($ip )); $login_attempt->save(); ) function redirect($url)(header("Местоположение: $url"); изход; ) Функциискорост_лимит Искорост_лимит_отметка

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

index.php

Try( if(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))( // Изведе JSON header header("Content-type: application/json"); // Този имейл адрес валиден ли е, ако (!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))( throw new Exception("Моля, въведете валиден имейл."); ) // Проверете потребителят има право да влиза, превишил ли е броя на разрешените връзки (файл functions.php за повече информация) rate_limit($_SERVER["REMOTE_ADDR"]); , $ _POST["email"]); // Изпратете имейл до потребителя $message = ""; Благодарим ви за регистрацията!"; $message = "Благодарим ви за регистрацията в нашия сайт!\n\n"; ) // Опит за оторизиране или регистриране на потребител $user = User::loginOrRegister($_POST[ "email"] ); $message.= "Можете да влезете от този URL:\n";

$message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "Връзката ще изтече автоматично след 10 минути.";$result = send_email($fromEmail, $_POST["email"], $subject, $message);

index.php

if(!$result)( throw new Exception("Възникна грешка при изпращането на вашия имейл. Моля, опитайте отново."); ) die(json_encode(array("message" => "Благодарим ви! Изпратихме връзка във входящата си поща. Проверете и папката си със спам."))); ) ) catch(Exception $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage() )));

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

$_GET

с ткн маркер

index.php

If(isset($_GET["tkn"]))( // Този токен валиден ли е за оторизация? $user = User::findByToken($_GET["tkn"]); if($user)( // Да, е. Пренасочване към защитената страница $user->redirect("protected.php"); // Пренасочване към страницата с формуляра за авторизация/регистрация ("index.php )."); )

В края на кода отново задавам пренасочване към index.php, така че параметърът ?изход=1не се изисква предаване чрез URL.

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

index.php

$потребител = нов потребител(); if($user->loggedIn())( redirect("protected.php"); )

И накрая, ето част от кода, който ви позволява да защитите страниците на вашия сайт и да ги направите достъпни само след оторизация.

защитен.php

// За да защитите всяка страница на вашия сайт, включете файл main.php // и създайте нов потребителски обект. Ето колко е лесно! require_once "includes/main.php"; $потребител = нов потребител(); if(!$user->loggedIn())( redirect("index.php"); )

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

Echo "Вашият имейл: ".$user->email; echo "Вашият ранг: ".$user->rank();

Метод ранг ()се използва тук, защото базата данни обикновено съхранява числа (0 за обикновен потребител, 1 за администратор) и ние трябва да преобразуваме тези данни в статусите, за които се отнасят, с което този метод ни помага.

За да направите обикновен потребител администратор, просто редактирайте потребителския запис чрез phpMyAdmin (или всяка друга програма, която ви позволява да управлявате бази данни). Статусът на администратор не дава никакви привилегии; в този пример страницата ще показва, че сте администратор - и това е всичко.

Но какво да правите с това зависи от вас; можете сами да напишете и съставите код, който задава определени привилегии и възможности за администраторите.

Ние сме готови!

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

Материалът е подготвен от Денис Малишок специално за уебсайта

P.S.

Искате ли да продължите напред в овладяването на PHP и ООП? Обърнете внимание на премиум уроците по различни аспекти на изграждането на уебсайтове, включително програмиране в PHP, както и безплатен курс за създаване на ваша собствена CMS система в PHP от нулата с помощта на OOP:
Хареса ли ви материала и искате да ми благодарите?


През последните няколко години уеб хостингът претърпя драматична промяна. Уеб хостинг услугите промениха начина, по който функционират уебсайтовете. Има няколко вида услуги, но днес ще говорим за опциите, които са налични за дистрибутори на хостинг доставчици. Те са Linux Reseller Hosting и Windows Reseller Hosting. Преди да разберем основните разлики между двете, нека разберем какво е хостинг на дистрибутори.

Реселър хостинг

С прости думи, дистрибуторският хостинг е форма на уеб хостинг, при която собственикът на акаунт може да използва своето специално място на твърдия диск и разпределената честотна лента за целите на препродаването на уебсайтове на трети страни. Понякога дистрибутор може да вземе специален сървър от хостинг компания (Linux или Windows) под наем и да го предостави на трети страни.

Повечето потребители на уебсайтове са с Linux или Windows. Това е свързано с продължителността на работа. И двете платформи гарантират, че вашият уебсайт работи през 99% от времето.

1.Персонализиране

Една от основните разлики между Linux Reseller Hostingplan и този, предоставен от Windows, е персонализирането. Въпреки че можете да експериментирате и с двата играча по няколко начина, Linux е много по-персонализиран от Windows. Последният има повече функции от аналога си и затова много разработчици и администратори намират Linux за много удобен за клиентите.

2. Приложения

Различните дистрибуторски хостинг услуги имат различни приложения. Linux и Windows имат свой собствен набор от приложения, но последният има предимство, когато става въпрос за числа и гъвкавост. Това е свързано с природата на Linux с отворен код. Всеки разработчик може да качи приложението си на платформата Linux и това го прави привлекателен хостинг доставчик за милиони собственици на уебсайтове.

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

3. Стабилност

Докато и двете платформи са стабилни, Linux Reseller Hosting е по-стабилна от двете. Тъй като е платформа с отворен код, тя може да работи в няколко среди. Тази платформа може да бъде модифицирана и развивана от време на време.

4. .NET съвместимост

Не че Linux превъзхожда Windows във всички възможни начини. Когато става въпрос за .NET съвместимост, Windows открадва светлината на прожекторите. Уеб приложенията могат лесно да бъдат разработени на Windows хостинг платформа.

5. Разходни предимства

И двете хостинг платформи са достъпни. Но ако чувствате финансова криза, тогава трябва да изберете Linux. Той е безплатен и затова е избран от толкова много разработчици и системни администратори по целия свят.

6. Лесна настройка

Windows е по-лесен за настройка от неговия аналог. Всичко казано и направено, Windows все още запазва удобството си за потребителя през всичките тези години.

7.Сигурност

Изберете дистрибуторски хостинг на Linux, защото е по-сигурен от Windows. Това важи особено за хората, управляващи своя бизнес за електронна търговия.

Заключение

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



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

Честно казано, имам този блог от дълго време и съм обикалял в различни рекламни мрежи в миналото. След като премахнах рекламните елементи от тази компания, която ме сковаваше, се върнах на изходна позиция. Трябва също да отбележа, че Никога не съм харесвал продукта на Google AdSense, само защото се чувства като „дъното на цевта“ на дисплейните реклами Не от гледна точка на качеството, а от гледна точка на приходите.

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

След моя негативен опит трябва да препоръчам компания, наречена Newor Media. И ако трябва да съм честен, първоначално не бях продаден най-вече защото не можах да намеря много информация за тях. Намерих няколко прилични отзива в други сайтове и след като говорих с някой там, реших да опитам Ще кажа, че те са СУПЕР полезни. Всяка мрежа, с която някога съм работил, беше доста кратка по отношение на отговорите и започването. Те отговориха на всеки въпрос и това беше наистина окуражаващ процес.

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

Избутаха ми първото плащане навреме с Paypal. Но тъй като не съм в САЩ (а това се случва на всеки, който мисля), взех такса от Paypal. Изпратих имейл на моя представител за това, питайки дали има начин да избегна това в бъдеще.

Те казаха, че не могат да избегнат таксата, но че ще ВЪЗСТАНОВЯТ ВСИЧКИ ТАКСИ... ВКЛЮЧИТЕЛНО ПОСЛЕДНОТО ПЛАЩАНЕ, но и възстановяването е получено в рамките на 10 МИНУТИ! подобна заявка, без да се налага да бъде препратена до „финансовия отдел“, за да не получи отговор никога.

Основното е, че обичам тази компания. Може да успея да направя повече някъде другаде, не съм много сигурен, но те имат издател за цял живот с мен. Не съм огромен сайт и не генерирам много приходи, но се чувствам като много важен клиент, когато говоря с тях, това е честна глътка свеж въздух в индустрия, която е узряла с измами и неотзивчивост.

Микрокомпютрите, създадени от Raspberry Pi Foundation през 2012 г., постигнаха огромен успех в предизвикването на нива на креативност при малките деца и тази компания, базирана в Обединеното кралство, започна да предлага стартиращи програми за научаване на код като pi-top и Kano. Вече има ново стартиране, което използва електрониката на Pi и устройството е известно като Pip, ръчна конзола, която предлага сензорен екран, множество портове, бутони за управление и високоговорители. Идеята зад устройството е да ангажира по-младите хора с игрово устройство, което е ретро, ​​но също така ще предлага опит за изучаване на код чрез уеб базирана платформа.

Удивителната софтуерна платформа, която се предлага с Pip, ще предложи шанса да започнете да кодирате на Python, HTML/CSS, JavaScript, Lua и PHP. Устройството предлага уроци стъпка по стъпка, за да накарат децата да започнат да кодират и им позволява дори да карат светодиодите да мигат. Въпреки че Pip все още е прототип, той със сигурност ще бъде огромен хит в индустрията и ще ангажира деца, които имат интерес към кодирането, и ще им предостави образованието и ресурсите, необходими, за да започнат да кодират в ранна възраст.

Бъдещето на кодирането Кодирането има голямо бъдеще и дори ако децата няма да използват кодирането като кариера, те могат да се възползват от това да се научат как да кодират с това ново устройство, което го прави по-лесно от всякога. С Pip дори най-младите ентусиасти по програмиране ще научат различни езици и ще бъдат на път да създадат свои собствени кодове, собствени игри, собствени приложения и много други. Това е бъдещето на електронната ера и Pip позволява да се усвоят основните градивни елементи на кодирането.
Компютърните науки се превърнаха във важна част от образованието и с устройства като новия Pip децата могат да започнат да подобряват образованието си у дома, докато се забавляват. Кодирането далеч надхвърля простото създаване на уебсайтове или софтуер. Може да се използва за подобряване на безопасността в града, за подпомагане на изследванията в областта на медицината и много повече. Тъй като сега живеем в свят, който е доминиран от софтуер, кодирането е бъдещето и е важно всички деца да имат поне основно разбиране за това как работи, дори ако никога не използват тези умения като кариера. По отношение на бъдещето кодирането ще бъде критичен компонент от ежедневието. Това ще бъде езикът на света и непознаването на компютрите или как работят те може да създаде предизвикателства, които са също толкова трудни за преодоляване, колкото и неграмотността.
Кодирането също така ще осигури големи промени в света на игрите, особено когато става дума за онлайн игри, включително достъпа до онлайн казина. За да видите как кодирането вече е подобрило света на игрите, разгледайте няколко най-високо оценени казино сайта, които разчитат на кодиране. Надникнете бързо, за да го проверите и вижте как кодирането може да представи реалистични среди онлайн. Как Pip ангажира децата Когато става въпрос за възможността да научат кодиране, децата имат много възможности. Има редица устройства и хардуерни gizmos, които могат да бъдат закупени, но Pip използва различен подход с тяхното устройство. Преносимостта на устройството и сензорния екран предлагат предимство пред другите кодиращи устройства, които са на пазара. Pip ще бъде напълно съвместим с електронни компоненти в допълнение към системата Raspberry Pi HAT. Устройството използва стандартни езици и има основни инструменти и е перфектно устройство за всеки начинаещ кодер. Целта е да се премахнат всички бариери между идеята и творението и инструментите да бъдат незабавно достъпни за използване. Едно от другите големи предимства на Pip е, че използва SD карта, така че може да се използва и като настолен компютър, когато е свързан към монитор и мишка.
Устройството Pip би помогнало на децата и заинтересованите начинаещи програмисти с ентусиазъм да учат и практикуват кодиране. Като предлага комбинация от изпълнение на задачи и бърникане за решаване на проблеми, устройството със сигурност ще ангажира по-младото поколение. След това устройството позволява на тези млади програмисти да преминат към по-напреднали нива на кодиране на различни езици като JavaScript и HTML/CSS. Тъй като устройството копира конзола за игри, то веднага ще привлече вниманието на децата и ще ги ангажира да научат кодирането в ранна възраст. Той също така идва с някои предварително инсталирани игри за задържане на вниманието, като Pac-Man и Minecraft. Предстоящи иновации Бъдещите иновации до голяма степен зависят от текущата способност на детето да кодира и цялостното му разбиране на процеса. Тъй като децата се учат да кодират в ранна възраст, като използват устройства като новия Pip, те ще придобият умения и знания, за да създават невероятни неща в бъдеще. Това може да бъде въвеждането на нови игри или приложения или дори идеи, които могат да оживеят, за да помогнат при медицински изследвания и лечения. Има безкрайни възможности. Тъй като бъдещето ни ще се контролира от софтуер и компютри, да започнем млад е най-добрият начин, поради което новият Pip е насочен към младата тълпа. Предлагайки конзолно устройство, което може да играе игри, докато преподава умения за програмиране, младите членове на обществото са на път да бъдат създатели на софтуер в бъдещето, който ще промени живота на всички ни. Това е само началото, но е нещо, което милиони деца по целия свят започват да учат и овладяват. С използването на устройства като Pip се покриват основите на кодирането и децата бързо ще научат различните езици за кодиране, които могат да водят по невероятни пътища, когато навлязат в зряла възраст.