Mag-download ng mga yari na php registration file. Paglikha ng isang simpleng sistema ng pagpaparehistro ng user sa PHP at MySQL. Matagumpay kang naka-log in

1. Magsimula tayo sa paglikha ng talahanayan ng mga gumagamit sa database.

Maglalaman ito ng data ng gumagamit (pag-login at password). Pumunta tayo sa phpmyadmin (kung gumagawa ka ng database sa iyong PC http://localhost/phpmyadmin/). Lumilikha kami ng mga gumagamit ng talahanayan, magkakaroon ito ng 3 mga patlang.

Ginagawa ko ito sa mysql database, maaari mo itong gawin sa ibang database. Susunod, itakda ang mga halaga tulad ng sa figure:
I-click ang "I-save". So, may table kami.

2. Kinakailangan ang koneksyon sa talahanayang ito.

Gumawa tayo ng bd.php file. Ang nilalaman nito:
Sa aking kaso, ganito ang hitsura:
I-save ang bd.php.
Mahusay! Mayroon kaming isang talahanayan sa database at isang koneksyon dito. Ngayon ay maaari ka nang magsimulang lumikha ng isang pahina kung saan iiwan ng mga user ang kanilang data.

3. Gumawa ng reg.php file na may nilalaman (lahat ng komento sa loob):

Pagpaparehistro ng Pagpaparehistro


Ang iyong login:

Ang iyong password:
4. Gumawa ng file na maglalagay ng data sa database at i-save ang user. save_user.php (mga komento sa loob):

3. Gumawa ng reg.php file na may nilalaman (lahat ng komento sa loob):

Pagpaparehistro ng Pagpaparehistro


5. Ngayon ang aming mga gumagamit ay maaaring magparehistro!



Susunod, kailangan mong lumikha ng isang "pinto" para sa mga nakarehistrong user na makapasok sa site. index.php (mga komento sa loob):
Home page Home page

Magrehistro

Sa index.php file magpapakita kami ng link na magbubukas lamang sa mga rehistradong user. Ito ang buong punto ng script - upang limitahan ang pag-access sa anumang data.

6. May natitira pang file na may verification ng inilagay na login at password. testreg.php (mga komento sa loob):

Well yun lang! Ang aralin ay maaaring mayamot, ngunit lubhang kapaki-pakinabang. Ang ideya lamang ng pagpaparehistro ay ipinapakita dito, pagkatapos ay maaari mong pagbutihin ito: magdagdag ng seguridad, disenyo, mga patlang ng data, pag-load ng mga avatar, pag-log out sa iyong account (upang gawin ito, sirain lamang ang mga variable mula sa session gamit ang hindi nakatakdang function) at iba pa. Good luck!

Sinuri ko ang lahat, gumagana ito nang maayos!

Upang maipatupad ang pagpaparehistro ng gumagamit, una sa lahat kailangan namin ng isang Database. Kung mayroon ka na nito, mahusay, kung hindi, kailangan mong likhain ito. Sa artikulo, ipinapaliwanag ko nang detalyado kung paano ito gagawin.

At kaya, mayroon kaming isang Database (pinaikling DB), ngayon kailangan naming lumikha ng isang talahanayan mga gumagamit kung saan idaragdag namin ang aming mga nakarehistrong user.

Ipinaliwanag ko rin kung paano lumikha ng isang talahanayan sa isang database sa artikulo.

Bago lumikha ng isang talahanayan, kailangan nating matukoy kung anong mga patlang ang nilalaman nito. Ang mga field na ito ay tumutugma sa mga field mula sa registration form. mga gumagamit Kaya, naisip namin, naisip kung anong mga patlang ang mayroon ang aming form at lumikha ng isang talahanayan

  • kasama ang mga field na ito: id kasama ang mga field na ito:- Identifier. Patlang
  • Ang bawat talahanayan sa database ay dapat magkaroon nito. unang_pangalan
  • - Upang i-save ang pangalan. apelyido
  • - Upang mapanatili ang apelyido. email
  • - Upang i-save ang postal address. Gagamitin namin ang e-mail bilang login, kaya ang field na ito ay dapat na natatangi, ibig sabihin, mayroong NATATANGING index. email_status
  • - Isang field upang ipahiwatig kung ang mail ay nakumpirma o hindi. Kung nakumpirma ang mail, magkakaroon ito ng halaga na 1, kung hindi, ang halaga ay 0. password


- Upang i-save ang password.

Kung gusto mong magkaroon ng ibang field ang iyong registration form, maaari mo ring idagdag ang mga ito dito. mga gumagamit Ayan, table namin

handa na. Lumipat tayo sa susunod na yugto.

Koneksyon sa Database

Nagawa namin ang database, ngayon kailangan naming kumonekta dito. Kami ay kumonekta gamit ang PHP extension MySQLi. Sa folder ng aming site, lumikha ng isang file na may pangalan dbconnect.php

, at isulat ang sumusunod na script dito: Sa folder ng aming site, lumikha ng isang file na may pangalan Ang file na ito

ay kailangang konektado sa mga humahawak ng form. Pansinin ang variable$address_site

, dito ko ipinahiwatig ang pangalan ng aking test site na aking gagawin. Mangyaring ipahiwatig ang pangalan ng iyong site nang naaayon.

Istraktura ng site

Ngayon tingnan natin ang istruktura ng HTML ng aming site. Ililipat namin ang header at footer ng site sa magkahiwalay na mga file, header.php At footer.php . Isasama namin sila sa lahat ng pahina. Lalo na sa pangunahing pahina (file index.php ), sa page na may registration form (file form_register.php ) at sa pahinang may form ng pahintulot (file).

form_auth.php I-block gamit ang aming mga link, header.php pagpaparehistro awtorisasyon ), sa page na may registration form (file, idagdag ang mga ito sa header ng site upang maipakita ang mga ito sa lahat ng pahina. Isang link ang papasok sa page na may registration form (file ) at sa pahinang may form ng pahintulot (file).

) at ang isa pa sa page na may authorization form (file

Mga nilalaman ng header.php file:

Pangalan ng aming site


Siyempre, maaaring may ganap na kakaibang istraktura ang iyong site, ngunit hindi ito mahalaga para sa amin ngayon. Ang pangunahing bagay ay mayroong mga link (mga pindutan) para sa pagpaparehistro at awtorisasyon.

Ngayon ay lumipat tayo sa form ng pagpaparehistro. Tulad ng naiintindihan mo na, mayroon kami nito sa file ), sa page na may registration form (file.

Pumunta sa Database (sa phpMyAdmin), buksan ang istraktura ng talahanayan mga gumagamit at tingnan kung anong mga field ang kailangan natin. Nangangahulugan ito na kailangan namin ng mga field para sa pagpasok ng una at apelyido, isang field para sa pagpasok ng postal address (Email) at isang field para sa pagpasok ng password. At para sa mga layuning pangseguridad, magdaragdag kami ng field para sa pagpasok ng captcha.

Sa server, bilang isang resulta ng pagproseso ng form ng pagpaparehistro, iba't ibang mga error ang maaaring mangyari dahil sa kung saan ang gumagamit ay hindi makakapagrehistro. Samakatuwid, upang maunawaan ng user kung bakit nabigo ang pagpaparehistro, kinakailangang magpakita ng mga mensahe tungkol sa mga error na ito.

Bago ipakita ang form, magdagdag ng block upang ipakita ang mga mensahe ng error mula sa session.

At isa pang bagay, kung awtorisado na ang user, at dahil sa kuryusidad ay direktang pumunta siya sa pahina ng pagpaparehistro sa pamamagitan ng pagsulat sa address bar ng browser site_address/form_register.php, pagkatapos sa kasong ito, sa halip na ang form ng pagpaparehistro, magpapakita kami ng isang header na nagsasaad na siya ay nakarehistro na.

Sa pangkalahatan, ang file code ), sa page na may registration form (file nakuha namin ito:

Nakarehistro ka na

Sa browser, ganito ang hitsura ng page na may registration form:


Gamit ang kinakailangang attribute, ginawa naming mandatory ang lahat ng field.

Bigyang-pansin ang code ng registration form kung saan ipinapakita ang captcha:


Tinukoy namin ang path sa file sa halaga ng src attribute para sa imahe captcha.php, na bumubuo ng captcha na ito.

Tingnan natin ang file code captcha.php:

Ang code ay mahusay na nagkomento, kaya ako ay tumutok sa isang punto lamang.

Sa loob ng isang function imageTtfText(), ang path sa font ay tinukoy verdana.ttf. Kaya para gumana ng tama ang captcha, dapat tayong gumawa ng folder mga font, at ilagay ang font file doon verdana.ttf. Maaari mong mahanap ito at i-download ito mula sa Internet, o kunin ito mula sa archive na may mga materyales ng artikulong ito.

Tapos na kami sa HTML structure, oras na para magpatuloy.

Sinusuri ang bisa ng email gamit ang jQuery

Kailangang suriin ng anumang form ang bisa ng inilagay na data, kapwa sa panig ng kliyente (gamit ang JavaScript, jQuery) at sa panig ng server.

Dapat nating bigyan ng espesyal na pansin ang field ng Email. Napakahalaga na valid ang inilagay na postal address.

Para sa input field na ito, itinakda namin ang uri ng email (type="email"), ito ay bahagyang nagbabala sa amin laban sa mga maling format. Ngunit hindi ito sapat, dahil sa pamamagitan ng inspektor ng code na ibinibigay sa atin ng browser, madali nating mababago ang halaga ng katangian uri Sa - Upang mapanatili ang apelyido. sa text, at iyon nga, hindi na magiging valid ang aming tseke.


At sa kasong ito, dapat tayong gumawa ng mas maaasahang pagsusuri. Upang gawin ito, gagamitin namin ang library ng jQuery mula sa JavaScript.

Upang ikonekta ang jQuery library, sa file Ililipat namin ang header at footer ng site sa magkahiwalay na mga file, sa pagitan ng mga tag , bago ang pansarang tag , idagdag ang linyang ito:

Kaagad pagkatapos ng linyang ito, idaragdag namin ang email validation code. Dito ay magdaragdag kami ng isang code upang suriin ang haba ng ipinasok na password. Dapat ay hindi bababa sa 6 na character ang haba nito.

Gamit ang script na ito, sinusuri namin ang inilagay na email address para sa bisa. Kung nagpasok ang user ng maling Email, nagpapakita kami ng mensahe ng error tungkol dito at hindi pinagana ang button na isumite ang form. Kung maayos ang lahat, aalisin namin ang error at i-activate ang button na isumite ang form.

At kaya, tapos na kami sa pagpapatunay ng form sa panig ng kliyente. Ngayon ay maaari na naming ipadala ito sa server, kung saan gagawa din kami ng ilang mga pagsusuri at magdagdag ng data sa database.

Pagpaparehistro ng user

Ipinapadala namin ang form sa file para sa pagproseso magparehistro.php, sa pamamagitan ng POST method. Ang pangalan ng handler file na ito ay tinukoy sa attribute value aksyon. At ang paraan ng pagpapadala ay tinukoy sa halaga ng katangian paraan.

Buksan ang file na ito magparehistro.php at ang unang bagay na kailangan nating gawin ay magsulat ng function ng paglulunsad ng session at ikonekta ang file na ginawa natin kanina Sa folder ng aming site, lumikha ng isang file na may pangalan(Sa file na ito gumawa kami ng koneksyon sa database). At saka, agad nating ideklara ang mga cell error_messages header.php tagumpay_mensahe sa global session array. SA error_mesages itatala namin ang lahat ng mga mensahe ng error na nangyayari sa pagpoproseso ng form, at sa tagumpay_mensahe, magre-record kami ng mga masasayang mensahe.

Bago tayo magpatuloy, kailangan nating suriin kung naisumite ba ang form. Maaaring tingnan ng isang attacker ang value ng attribute aksyon mula sa form, at alamin kung aling file ang nagpoproseso ng form na ito. At maaaring may ideya siyang direktang pumunta sa file na ito sa pamamagitan ng pag-type ng sumusunod na address sa address bar ng browser: http://site_address/register.php

Kaya kailangan nating suriin para sa isang cell sa pandaigdigang POST array na ang pangalan ay tumutugma sa pangalan ng aming "Register" na button mula sa form. Sa ganitong paraan, tinitingnan namin kung ang "Register" na buton ay na-click o hindi.

Kung susubukan ng isang umaatake na direktang pumunta sa file na ito, makakatanggap sila ng mensahe ng error. Hayaan akong ipaalala sa iyo na ang $address_site variable ay naglalaman ng pangalan ng site at ito ay idineklara sa file Sa folder ng aming site, lumikha ng isang file na may pangalan.

Ang halaga ng captcha sa session ay idinagdag noong ito ay nabuo, sa file captcha.php. Bilang paalala, ipapakita ko sa iyo muli ang piraso ng code na ito mula sa file captcha.php, kung saan idinaragdag ang halaga ng captcha sa session:

Ngayon ay magpatuloy tayo sa mismong pag-verify. Nasa file magparehistro.php, sa loob ng if block, kung saan sinusuri namin kung na-click ang "Register" button, o sa halip, kung saan ang komento " // (1) Space para sa susunod na piraso ng code"nagsusulat kami:

//Suriin ang natanggap na captcha //Trim ang mga puwang mula sa simula at dulo ng linya $captcha = trim($_POST["captcha"]);

if(isset($_POST["captcha"]) && !empty($captcha))( //Ihambing ang natanggap na value sa value mula sa session. if($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Kung hindi tama ang captcha, ibabalik namin ang user sa pahina ng pagpaparehistro, at doon kami magpapakita ng mensahe ng error sa kanya na mali ang captcha niyang ipinasok . $error_message = "

Error! Maling captcha ang ipinasok mo

"; // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] = $error_message; // Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: " .$address_site ."/form_register.php"); //Ihinto ang script exit(); // (2) Ilagay para sa susunod na piraso ng code )else( //Kung ang captcha ay hindi naipasa o ito ay walang laman na exit( "

"); }

Error! Walang verification code, iyon ay, isang captcha code. Maaari kang pumunta sa pangunahing pahina.

Susunod, kailangan nating iproseso ang natanggap na data mula sa POST array. Una sa lahat, kailangan nating suriin ang mga nilalaman ng pandaigdigang POST array, iyon ay, kung mayroong mga cell doon na ang mga pangalan ay tumutugma sa mga pangalan ng mga input field mula sa aming form.

Kung umiiral ang cell, pagkatapos ay pinuputol namin ang mga puwang mula sa simula at dulo ng linya mula sa cell na ito, kung hindi, ire-redirect namin ang user pabalik sa pahina na may form ng pagpaparehistro.

Susunod, pagkatapos naming i-trim ang mga puwang, idagdag namin ang linya sa variable at suriin ang variable na ito para sa kawalan ng laman, pagkatapos ay magpatuloy kami, kung hindi, ire-redirect namin ang gumagamit pabalik sa pahina na may form ng pagpaparehistro. I-paste ang code na ito sa tinukoy na lokasyon"".

// (2) Space para sa susunod na piraso ng code

/* Suriin kung mayroong data na ipinadala mula sa form sa pandaigdigang array $_POST at balutin ang isinumiteng data sa mga regular na variable.*/ if(isset($_POST["first_name"]))( //Trim ang mga puwang mula sa simula at dulo ng string na $first_name = trim ($_POST["first_name"]); //Suriin ang variable para sa emptiness if(!empty($first_name))( // Para sa kaligtasan, i-convert ang mga espesyal na character sa HTML entity $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Ilagay ang iyong pangalan

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) if( isset($_POST["apelyido"]))( //Puwang sa simula at dulo ng linya $last_name = trim($_POST["apelyido"]); if(!empty($last_name)) ( // Para sa seguridad , i-convert ang mga espesyal na character sa HTML entity $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Pakilagay ang iyong apelyido

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) )iba ( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Nawawala ang field ng apelyido

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) if( isset($_POST["email"]))( //Trim space mula sa simula at dulo ng linya $email = trim ($_POST["email"]); if(!empty($email)) ($email = htmlspecialchars ($email, ENT_QUOTES); // (3) Lokasyon ng code para sa pagsuri sa format ng email address at sa pagiging natatangi nito )else( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .="

Ilagay ang iyong email

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) )iba ( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) if( isset($_POST["password"]))( //Trim space mula sa simula at dulo ng string $password = trim ($_POST["password"]); if(!empty($password)) ($password = htmlspecialchars ($password, ENT_QUOTES); //I-encrypt ang password $password = md5($password."top_secret");else( //I-save ang mensahe ng error sa session. $_SESSION["error_messages"] . = "

Ipasok ang iyong password

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) )iba ( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) // (4) Lugar para sa code para sa pagdaragdag ng user sa database

Ang partikular na kahalagahan ay ang larangan - Upang mapanatili ang apelyido.. Dapat nating suriin ang format ng natanggap na postal address at ang pagiging natatangi nito sa database. Ibig sabihin, mayroon bang user na may parehong email address na nakarehistro na?

Sa tinukoy na lokasyon" // (3) Code location para tingnan ang format ng postal address at ang uniqueness nito" idagdag ang sumusunod na code:

//Suriin ang format ng natanggap na email address gamit ang isang regular na expression $reg_email = "/^**@(+(*+)*\.)++/i";

//Kung ang format ng natanggap na email address ay hindi tumutugma sa regular na expression kung(!preg_match($reg_email, $email))( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Naglagay ka ng maling email

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); //Ihinto ang script exit(); ) // Sinusuri namin kung ang naturang address ay nasa database na = $mysqli->query("PUMILI `email` MULA sa `users` WHERE `email`="".$email."""); ay eksaktong isang row, na nangangahulugang ang user na may ganitong email address ay nakarehistro na if($result_query->num_rows == 1)( //Kung hindi false ang nakuhang resulta kung(($row = $result_query->fetch_assoc() ) != false) ( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Nakarehistro na ang isang user na may ganitong email address

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); )else( // I-save ang mensahe ng error sa session na $_SESSION["error_messages"] .="

Error sa query sa database

"; //Ibalik ang user sa header ng pahina ng pagpaparehistro("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_register.php"); ) /* pagsasara ng seleksyon */ $ result_query-> close(); //Stop the script exit() /* closing the selection */ $result_query->close(); At kaya, tapos na kami sa lahat ng mga pagsusuri, oras na para idagdag ang user sa database. Sa tinukoy na lokasyon"" idagdag ang sumusunod na code:

// (4) Lugar para sa code para sa pagdaragdag ng user sa database

//Query para magdagdag ng user sa database $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password) VALUES ("".$first_name."", "".$last_name ." ", "".$email.", "".$password."")");

if(!$result_query_insert)( // I-save ang mensahe ng error sa session. $_SESSION["error_messages"] .= "

Error sa kahilingang magdagdag ng user sa database
Ngayon ay maaari kang mag-log in gamit ang iyong username at password.

"; //Ipadala ang user sa header ng pahina ng awtorisasyon("HTTP/1.1 301 Permanenteng Inilipat"); header("Lokasyon: ".$address_site."/form_auth.php"); ) /* Pagkumpleto ng kahilingan */ $ result_query_insert-> close(); //Isara ang koneksyon sa database $mysqli->close();

Kung may naganap na error sa kahilingang magdagdag ng user sa database, nagdaragdag kami ng mensahe tungkol sa error na ito sa session at ibabalik ang user sa pahina ng pagpaparehistro.

Kung hindi, kung naging maayos ang lahat, nagdaragdag din kami ng mensahe sa session, ngunit sa pagkakataong ito ay mas kaaya-aya, ibig sabihin, sasabihin namin sa user na matagumpay ang pagpaparehistro. At nire-redirect namin ito sa page na may authorization form.

Ang script para sa pagsuri sa format ng email address at haba ng password ay nasa file Ililipat namin ang header at footer ng site sa magkahiwalay na mga file,, kaya malalapat din ito sa mga field mula sa form na ito.

Sinimulan din ang session sa file Ililipat namin ang header at footer ng site sa magkahiwalay na mga file,, kaya sa file ) at sa pahinang may form ng pahintulot (file Hindi na kailangang magsimula ng session, dahil magkakaroon tayo ng error.


Tulad ng nasabi ko na, gumagana din dito ang script para sa pagsuri sa format ng email address at haba ng password. Samakatuwid, kung ang gumagamit ay nagpasok ng maling email address o maikling password, agad siyang makakatanggap ng mensahe ng error. Isang buton login magiging hindi aktibo.

Pagkatapos ayusin ang mga error, ang pindutan login nagiging aktibo, at magagawa ng user na isumite ang form sa server, kung saan ito ipoproseso.

Pahintulot ng user

Upang i-attribute ang halaga aksyon ang kapansanan sa pahintulot ay may tinukoy na file auth.php, nangangahulugan ito na ipoproseso ang form sa file na ito.

At kaya, buksan ang file auth.php at sumulat ng code upang iproseso ang form ng pahintulot. Ang unang bagay na kailangan mong gawin ay magsimula ng isang session at ikonekta ang file Sa folder ng aming site, lumikha ng isang file na may pangalan upang kumonekta sa database.

Kapag nag-click ka sa exit link mula sa site, dadalhin kami sa isang file logout.php, kung saan sinisira lang namin ang mga cell na may email address at password mula sa session. Pagkatapos nito, ibabalik namin ang gumagamit pabalik sa pahina kung saan na-click ang link labasan.

File code logout.php:

Iyon lang. Ngayon alam mo na kung paano ipatupad at iproseso ang mga form ng pagpaparehistro at awtorisasyon ng user sa iyong website. Ang mga form na ito ay matatagpuan sa halos bawat website, kaya dapat malaman ng bawat programmer kung paano gawin ang mga ito.

Natutunan din namin kung paano i-validate ang data ng input, kapwa sa panig ng kliyente (sa browser, gamit ang JavaScript, jQuery) at sa panig ng server (gamit ang PHP). Natutunan din namin kung paano magpatupad ng pamamaraan para sa pag-alis sa site.

Ang lahat ng mga script ay nasubok at gumagana. Maaari mong i-download ang archive gamit ang mga file ng maliit na site na ito mula sa link na ito.

Sa hinaharap susulat ako ng isang artikulo kung saan ilalarawan ko. At plano ko ring magsulat ng isang artikulo kung saan ako ay magpapaliwanag (nang hindi nagre-reload ng pahina). Kaya, upang manatiling alam tungkol sa pagpapalabas ng mga bagong artikulo, maaari kang mag-subscribe sa aking website.

Kung mayroon kang anumang mga katanungan, mangyaring makipag-ugnay sa akin, at kung mapansin mo ang anumang error sa artikulo, mangyaring ipaalam sa akin.

Lesson Plan (Bahagi 5):

  • Paglikha ng HTML structure para sa authorization form
  • Pinoproseso namin ang natanggap na data
  • Ipinapakita namin ang pagbati ng user sa header ng site
  • Nagustuhan mo ba ang artikulo?

    Sa nakalipas na ilang taon, ang web hosting ay sumailalim sa isang malaking pagbabago. Binago ng mga serbisyo sa web hosting ang paraan ng pagganap ng mga website. Mayroong ilang mga uri ng mga serbisyo ngunit ngayon ay pag-uusapan natin ang tungkol sa mga opsyon na magagamit para sa reseller hosting provider. Ang mga ito ay Linux Reseller Hosting at Windows Reseller Hosting. Bago natin maunawaan ang mga pangunahing pagkakaiba sa pagitan ng dalawa, alamin natin kung ano ang pagho-host ng reseller.

    Reseller Hosting

    Sa madaling salita, ang pagho-host ng reseller ay isang anyo ng web hosting kung saan maaaring gamitin ng isang may-ari ng account ang kanyang nakalaang puwang sa hard drive at inilaan na bandwidth para sa layunin ng muling pagbebenta sa mga website ng mga third party. Minsan, ang isang reseller ay maaaring kumuha ng isang dedikadong server mula sa isang kumpanya ng pagho-host (Linux o Windows) sa upa at higit pang ipaalam ito sa mga third party.

    Karamihan sa mga gumagamit ng website ay alinman sa Linux o Windows. Ito ay may kinalaman sa uptime. Tinitiyak ng parehong mga platform na ang iyong website ay 99% ng oras.

    1.Pagpapasadya

    Ang isa sa mga pangunahing pagkakaiba sa pagitan ng isang Linux Reseller Hostingplan at ang ibinigay ng Windows ay tungkol sa pagpapasadya. Bagama't maaari kang mag-eksperimento sa parehong mga manlalaro sa maraming paraan, ang Linux ay mas napapasadya kaysa sa Windows. Ang huli ay may mga tampok na higit pa sa katapat nito at iyon ang dahilan kung bakit maraming mga developer at administrator ang nakakahanap ng Linux na napaka-customer-friendly.

    2. Mga aplikasyon

    Ang iba't ibang mga serbisyo sa pagho-host ng reseller ay may iba't ibang mga aplikasyon. Ang Linux at Windows ay parehong may sariling hanay ng mga application ngunit ang huli ay may kalamangan pagdating sa mga numero at versatility. Ito ay may kinalaman sa open source na kalikasan ng Linux. Maaaring i-upload ng sinumang developer ang kanyang app sa Linux platform at ginagawa itong isang kaakit-akit na hosting provider sa milyun-milyong may-ari ng website.

    Gayunpaman, pakitandaan na kung gumagamit ka ng Linux para sa web hosting ngunit sa parehong oras ay gumagamit ng Windows OS, maaaring hindi lang gumana ang ilang application.

    3.Katatagan

    Habang ang parehong mga platform ay stable, ang Linux Reseller Hosting ay mas matatag sa dalawa. Ito ay isang open source na platform, ay maaaring gumana sa ilang mga kapaligiran. Ang platform na ito ay maaaring mabago at mabuo paminsan-minsan.

    4. .NET compatibility

    Hindi iyon ang Linux ay higit na mataas sa Windows sa lahat ng posibleng paraan. Pagdating sa .NET compatibility, inagaw ng Windows ang limelight. Ang mga web application ay madaling mabuo sa isang Windows hosting platform.

    5. Mga kalamangan sa gastos

    Parehong abot-kaya ang hosting platform. Ngunit kung nakakaramdam ka ng cash crunch, dapat kang mag-opt para sa Linux. Ito ay libre at iyon ang dahilan kung bakit ito ay pinili ng napakaraming developer at system administrator sa buong mundo.

    6. Dali ng pag-setup

    Ang Windows ay mas madaling i-set up kaysa sa katapat nito. Lahat ng mga bagay na sinabi at ginawa, ang Windows ay nananatili pa rin ang pagiging kabaitan ng gumagamit sa lahat ng mga taon na ito.

    7.Seguridad

    Mag-opt para sa Linux reseller hosting dahil mas secure ito kaysa sa Windows. Totoo ito lalo na para sa mga taong nagpapatakbo ng kanilang mga negosyong E-commerce.

    Konklusyon

    Ang pagpili sa pagitan ng dalawa ay depende sa iyong pangangailangan at sa flexibility ng gastos. Ang parehong mga serbisyo sa pagho-host ay may natatanging mga pakinabang. Bagama't madaling i-set up ang Windows, ang Linux ay epektibo sa gastos, secure at mas maraming nalalaman.



    Noong Marso ng taong ito, nagkaroon ako ng napakasamang karanasan sa isang kumpanya ng media na tumatangging bayaran ako at sagutin ang aking mga email. Libu-libong dolyar pa rin ang utang nila sa akin at ang galit na nararamdaman ko araw-araw. Lumalabas na hindi ako nag-iisa, at daan-daang iba pang mga may-ari ng website ang nasa parehong bangka. Ito ay uri ng par para sa kurso na may digital advertising.

    Sa totoo lang, matagal na akong nagkaroon ng blog na ito at naka-bounce na ako sa iba't ibang network ng ad sa nakaraan. Pagkatapos alisin ang mga unit ng ad mula sa kumpanyang iyon na nanigas sa akin, bumalik ako sa dati. Dapat ko ring tandaan na Hindi ko kailanman nagustuhan ang produkto ng Googles AdSense, dahil ito ay parang "ibaba ng barrel" ng mga display ad Hindi mula sa isang pananaw sa kalidad, ngunit mula sa isang kita.

    Sa pagkakaintindi ko, gusto mo ang pag-advertise ng Google sa iyong site, ngunit gusto mo ring gawin din ito ng iba pang malalaking kumpanya at ahensya. Sa ganoong paraan, ma-maximize mo ang demand at kita.

    Pagkatapos ng aking negatibong karanasan, kailangan kong magrekomenda ng kumpanyang tinatawag na Newor Media. At kung tapat ako, hindi ako nabenta sa una dahil hindi ako makahanap ng maraming impormasyon tungkol sa mga ito. Nakahanap ako ng ilang disenteng review sa ibang mga site, at pagkatapos makipag-usap sa isang tao doon, nagpasya akong subukan ito . Sasabihin ko na ang mga ito ay SUPER kapaki-pakinabang Ang bawat network na aking nakatrabaho ay medyo maikli sa mga tuntunin ng mga sagot at pagpunta.

    Ilang buwan ko nang pinapatakbo ang mga ad at halos naaayon ang mga kita sa kinikita ko sa kabilang kumpanya. Kaya hindi ko talaga masasabi kung mas mahusay sila kaysa sa iba, ngunit kung saan sila namumukod-tangi ay isang punto na talagang gusto kong gawin. Ang komunikasyon sa kanila ay hindi katulad ng ibang network na nagawa ko na. Narito ang isang kaso kung saan sila ay talagang naiiba:

    Itinulak nila ang unang pagbabayad sa akin sa oras gamit ang Paypal. Ngunit dahil wala ako sa U.S (at nangyayari ito para sa lahat ng iniisip ko), nakakuha ako ng bayad mula sa Paypal. Nag-email ako sa aking kinatawan tungkol dito, nagtatanong kung may paraan para maiwasan iyon sa hinaharap.

    Hindi daw nila maiiwasan ang bayad, pero IREIMBURSE nila ang LAHAT NG MGA BAYAD.... KASAMA ANG PINAKA-KAKAKAILANG PAGBAYAD Hindi lang yan, natanggap ang reimbursement sa loob ng 10 MINUTES Kailan ka pa nakakagawa! isang request na ganyan nang hindi na kailangang ipasa sa "finance department" para hindi na masagot.

    Ang bottomline ay mahal ko ang kumpanyang ito. Maaari akong gumawa ng higit pa sa ibang lugar, hindi ako sigurado, ngunit mayroon silang isang publisher habang buhay na kasama ko. Hindi ako isang malaking site at hindi ako nakakakuha ng isang toneladang kita, ngunit pakiramdam ko ay isang napakaimportanteng kliyente kapag kausap ko sila, Sa totoo lang, hininga ito ng sariwang hangin sa isang industriya na hinog na sa pandaraya at hindi pagtugon.

    Ang mga microcomputer na nilikha ng Raspberry Pi Foundation noong 2012 ay naging napakalaking matagumpay sa pagpapasiklab ng mga antas ng pagkamalikhain sa mga bata at ang kumpanyang ito na nakabase sa UK ay nagsimulang mag-alok ng mga programang startup na learn-to-code tulad ng pi-top at Kano. Mayroon na ngayong bagong startup na gumagamit ng Pi electronics, at ang device ay kilala bilang Pip, isang handheld console na nag-aalok ng touchscreen, maraming port, control button at speaker. Ang ideya sa likod ng device ay makipag-ugnayan sa mga nakababatang indibidwal gamit ang isang game device na retro ngunit mag-aalok din ng karanasan sa pag-aaral ng code sa pamamagitan ng isang web based na platform.

    Ang kamangha-manghang software platform na inaalok kasama ng Pip ay mag-aalok ng pagkakataong magsimulang mag-coding sa Python, HTML/CSS, JavaScript, Lua at PHP. Nag-aalok ang device ng mga step-by-step na tutorial para makapagsimula ang mga bata sa coding at nagbibigay-daan sa kanila na gawing flash ang mga LED. Bagama't isa pa ring prototype ang Pip, tiyak na magiging malaking hit ito sa industriya at makikisali sa mga bata na may interes sa coding at magbibigay sa kanila ng edukasyon at mga mapagkukunang kailangan upang magsimulang mag-coding sa murang edad.

    Ang Kinabukasan ng Coding Coding ay may magandang kinabukasan, at kahit na ang mga bata ay hindi gagamit ng coding bilang isang karera, maaari silang makinabang sa pag-aaral kung paano mag-code gamit ang bagong device na ito na ginagawang mas madali kaysa dati. Sa Pip, kahit na ang pinakabatang mahilig sa coding ay matututo ng iba't ibang wika at magiging mahusay sa kanilang paraan sa paggawa ng sarili nilang mga code, sariling mga laro, sariling mga app at higit pa. Ito ang kinabukasan ng elektronikong panahon at pinapayagan ng Pip ang mga pangunahing bloke ng pagbuo ng coding na ma-master.
    Ang computer science ay naging isang mahalagang bahagi ng edukasyon at sa mga device tulad ng bagong Pip, maaaring simulan ng mga bata na pahusayin ang kanilang edukasyon sa bahay habang nagsasaya. Ang coding ay higit pa sa paggawa ng mga website o software. Magagamit ito para mapahusay ang kaligtasan sa isang lungsod, para tumulong sa pananaliksik sa larangang medikal at marami pang iba. Dahil nakatira na tayo ngayon sa isang mundo na pinangungunahan ng software, ang coding ay ang hinaharap at mahalaga para sa lahat ng mga bata na magkaroon man lang ng pangunahing pag-unawa sa kung paano ito gumagana, kahit na hindi nila kailanman ginagamit ang mga kasanayang ito bilang isang karera. Sa mga tuntunin ng hinaharap, ang coding ay magiging isang kritikal na bahagi ng pang-araw-araw na buhay. Ito ang magiging wika ng mundo at ang hindi pag-alam sa mga computer o kung paano gumagana ang mga ito ay maaaring magdulot ng mga hamon na mahirap lagpasan gaya ng hindi marunong bumasa at sumulat.
    Magbibigay din ang coding ng malalaking pagbabago sa mundo ng paglalaro, lalo na pagdating sa online gaming, kabilang ang pag-access ng mga online casino. Upang makita kung paano napahusay na ng coding ang mundo ng paglalaro, tingnan ang ilang nangungunang mga site ng casino na umaasa sa coding. Sumilip kaagad upang tingnan ito at tingnan kung paano maipapakita ng coding ang mga makatotohanang kapaligiran online.Paano Nakikipag-ugnayan ang Pip sa mga Bata Pagdating sa pagkakataong matuto ng coding, maraming opsyon ang mga bata. Mayroong ilang mga device at hardware gizmos na maaaring mabili, ngunit ang Pip ay gumagamit ng ibang diskarte sa kanilang device. Ang portability ng device at ang touchscreen ay nag-aalok ng kalamangan sa iba pang coding device na nasa merkado. Ang Pip ay magiging ganap na katugma sa mga elektronikong sangkap bilang karagdagan sa Raspberry Pi HAT system. Gumagamit ang device ng mga karaniwang wika at may mga pangunahing tool at perpektong device para sa sinumang beginner coder. Ang layunin ay alisin ang anumang mga hadlang sa pagitan ng isang ideya at paglikha at gawing kaagad na magagamit ang mga tool para magamit. Isa sa iba pang magagandang bentahe ng Pip ay ang paggamit nito ng SD card, kaya maaari rin itong magamit bilang desktop computer kapag nakakonekta ito sa monitor at mouse.
    Ang Pip device ay makakatulong sa mga bata at interesadong baguhan sa coder na may sigasig sa pag-aaral at pagsasanay ng coding. Sa pamamagitan ng pag-aalok ng kumbinasyon ng pagkumpleto ng gawain at pag-iisip upang malutas ang mga problema, tiyak na maaakit ng device ang nakababatang henerasyon. Binibigyang-daan ng device ang mga batang coder na ito na lumipat sa mas advanced na antas ng coding sa iba't ibang wika tulad ng JavaScript at HTML/CSS. Dahil kinokopya ng device ang isang gaming console, agad nitong makukuha ang atensyon ng mga bata at hikayatin silang matuto tungkol sa coding sa murang edad. Ito rin ay may kasamang ilang preloaded na laro upang mapanatili ang atensyon, gaya ng Pac-Man at Minecraft. Mga Inobasyon na Darating Sa Hinaharap Ang inobasyon ay higit na nakadepende sa kasalukuyang kakayahan ng isang bata na mag-code at ang kanilang pangkalahatang pag-unawa sa proseso. Habang natututong mag-code ang mga bata sa murang edad sa pamamagitan ng paggamit ng mga device tulad ng bagong Pip, magkakaroon sila ng mga kasanayan at kaalaman upang lumikha ng mga kamangha-manghang bagay sa hinaharap. Ito ay maaaring ang pagpapakilala ng mga bagong laro o app o kahit na mga ideya na maaaring mabuhay upang makatulong sa medikal na pananaliksik at paggamot. May mga walang katapusang posibilidad. Dahil ang ating kinabukasan ay makokontrol ng software at mga computer, ang pagsisimula ng bata ay ang pinakamahusay na paraan, kaya naman ang bagong Pip ay nakatuon sa mga kabataan. Sa pamamagitan ng pag-aalok ng console device na maaaring maglaro habang nagtuturo ng mga kasanayan sa coding, ang mga kabataang miyembro ng lipunan ay malapit nang maging mga tagalikha ng software sa hinaharap na magbabago sa lahat ng ating buhay. Ito ay simula pa lamang, ngunit ito ay isang bagay na ang milyun-milyong mga bata sa buong mundo ay nagsisimulang matuto at makabisado. Sa paggamit ng mga device tulad ng Pip, sinasaklaw ang mga pangunahing kaalaman sa coding at mabilis na matututunan ng mga bata ang iba't ibang coding na wika na maaaring humantong sa mga kamangha-manghang landas sa pagpasok nila sa pagtanda.

    Ang proseso ng paglikha ng isang sistema ng pagpaparehistro ay medyo maraming trabaho. Kailangan mong magsulat ng code na nagdo-double check sa bisa ng mga email address, nagpapadala ng mga email ng kumpirmasyon, nag-aalok ng kakayahang mabawi ang mga password, nag-iimbak ng mga password sa isang ligtas na lugar, nagpapatunay ng mga form ng pag-input, at marami pa. Kahit na gawin mo ang lahat ng ito, ang mga gumagamit ay mag-aatubili na magparehistro, dahil kahit na ang pinakamaliit na pagpaparehistro ay nangangailangan ng kanilang aktibidad.

    Sa tutorial ngayon, bubuo kami ng isang simpleng sistema ng pagpaparehistro na hindi mangangailangan ng anumang mga password! Ang mga resulta ay magiging isang sistema na madaling mabago o maisama sa isang umiiral na website ng PHP. Kung interesado ka, ipagpatuloy ang pagbabasa.

    PHP

    Ngayon ay handa na kaming magsimula sa PHP code. Ang pangunahing pag-andar ng sistema ng pagpaparehistro ay ibinibigay ng klase ng User, na makikita mo sa ibaba. Ang klase ay gumagamit ng (), na isang minimalist na library ng database. Ang klase ng User ay responsable para sa pag-access sa mga database, pagbuo ng mga token sa pag-login at pagpapatunay sa mga ito. Nagpapakita ito sa amin ng isang simpleng interface na madaling maisama sa sistema ng pagpaparehistro ng iyong mga website na nakabase sa PHP.

    User.class.php

    // Pribadong ORM instance
    pribadong $orm;

    /**
    * Maghanap ng user sa pamamagitan ng isang token string. Ang mga wastong token lamang ang kinukuha
    * pagsasaalang-alang. Ang isang token ay may bisa sa loob ng 10 minuto pagkatapos itong mabuo.
    * @param string $token Ang token na hahanapin
    * @return User
    */

    Pampublikong static na function findByToken($token)(

    // hanapin ito sa database at tiyaking tama ang timestamp


    -> where("token", $token)
    ->where_raw("token_validity > NOW()")
    -> find_one();

    Kung(!$result)(
    ibalik ang mali;
    }

    Ibalik ang bagong User($result);
    }

    /**
    * Mag-login o magrehistro ng user.
    * @return User
    */

    Pampublikong static function loginOrRegister($email)(

    // Kung mayroon nang ganoong user, ibalik ito

    Kung(User::exists($email))(
    ibalik ang bagong User($email);
    }

    // Kung hindi, likhain ito at ibalik ito

    Return User::create($email);
    }

    /**
    * Lumikha ng bagong user at i-save ito sa database
    * @param string $email Ang email address ng user
    * @return User
    */

    Gumawa ng pribadong static function ($email)(

    // Sumulat ng bagong user sa database at ibalik ito

    $result = ORM::for_table("reg_users")->create();
    $result->email = $email;
    $result->save();

    Ibalik ang bagong User($result);
    }

    /**
    * Suriin kung ang naturang user ay umiiral sa database at magbalik ng boolean.
    * @param string $email Ang email address ng user
    * @ibalik ang boolean
    */

    Umiiral ang pampublikong static function ($email)(

    // Umiiral ba ang user sa database?
    $result = ORM::for_table("reg_users")
    -> where("email", $email)
    ->bilang();

    Ibalik ang $result == 1;
    }

    /**
    * Lumikha ng bagong object ng user
    * @param $param ORM instance, id, email o null
    * @return User
    */

    Pampublikong function __construct($param = null)(

    If($param instanceof ORM)(

    // Isang ORM instance ang naipasa
    $this->orm = $param;
    }
    else if(is_string($param))(

    // Isang email ang naipasa
    $ito->
    -> where("email", $param)
    -> find_one();
    }
    iba pa(

    If(is_numeric($param))(
    // Ang isang user id ay naipasa bilang isang parameter
    $id = $param;
    }
    else if(isset($_SESSION["loginid"]))(

    // Walang naipasa na user ID, tingnan ang session
    $id = $_SESSION["loginid"];
    }

    $this->orm = ORM::for_table("reg_users")
    -> where("id", $id)
    -> find_one();
    }

    /**
    * Bumubuo ng bagong SHA1 login token, isinusulat ito sa database at ibinabalik ito.
    * @return string
    */

    Pampublikong function generateToken())(
    // bumuo ng token para sa naka-log in na user. I-save ito sa database.

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

    // I-save ang token sa database,
    // at markahan ito bilang wasto para sa susunod na 10 minuto lamang

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

    Ibalik ang $token;
    }

    /**
    *Login ang user na ito
    * Walang bisa ang @pagbabalik
    */

    Public function login()

    // Markahan ang user bilang naka-log in
    $_SESSION["loginid"] = $this->orm->id;

    // I-update ang last_login db field
    $this->orm->set_expr("last_login", "NOW()");
    $this->orm->save();
    }

    /**
    * Wasakin ang session at i-logout ang user.
    * Walang bisa ang @pagbabalik
    */

    Public function logout()
    $_SESSION = array();
    unset($_SESSION);
    }

    /**
    * Suriin kung naka-log in ang user.
    * @ibalik ang boolean
    */

    Pampublikong function na naka-logIn())(
    return isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id;
    }

    /**
    * Suriin kung ang gumagamit ay isang administrator
    * @ibalik ang boolean
    */

    Ang pampublikong function ayAdmin())(
    return $this->rank() == "administrator";
    }

    /**
    * Hanapin ang uri ng user. Maaari itong maging admin o regular.
    * @return string
    */

    Ranggo ng pampublikong function())(
    if($this->orm->rank == 1)(
    ibalik ang "administrator";
    }

    Ibalik ang "regular";
    }

    /**
    * Magic na paraan para sa pag-access sa mga elemento ng pribado
    * $orm instance bilang mga katangian ng object ng user
    * @param string $key Pangalan ng na-access na property
    * @return mixed
    */

    Pampublikong function __get($key)(
    if(isset($this->orm->$key))(
    ibalik ang $this->orm->$key;
    }

    Ibalik ang null;
    }
    }
    Ang mga token ay nabuo gamit ang isang algorithm at nakaimbak sa isang database. Ginagamit namin ang MySQL upang itakda ang column ng token_validity sa 10 minuto. Kapag nagpapatunay ng token, sasabihin namin sa makina na kailangan namin ng token, hindi pa nag-e-expire ang field ng token_validity. Sa ganitong paraan, nililimitahan namin ang oras kung kailan magiging wasto ang token.

    Pansinin na ginagamit namin ang __get() magic method sa dulo ng dokumento upang ma-access ang mga katangian ng object ng user. Nagbibigay-daan ito sa amin na ma-access ang data na nakaimbak sa database bilang mga katangian: $user->email, $user->token. Bilang halimbawa, tingnan natin kung paano natin magagamit ang klase na ito sa sumusunod na snippet ng code:


    Ang isa pang file na nag-iimbak ng kinakailangang functionality ay functions.php. Mayroon kaming ilang mga function ng helper na nagpapahintulot sa amin na panatilihing mas malinis ang natitirang bahagi ng code.

    Functions.php

    Function send_email($from, $to, $subject, $message)(

    // Helper function para sa pagpapadala ng email

    $headers = "MIME-Bersyon: 1.0" . "\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8" . "\r\n";
    $headers .= "Mula kay: ".$mula sa . "\r\n";

    Ibalik ang mail($to, $subject, $message, $headers);
    }

    function get_page_url())(

    // Alamin ang URL ng isang PHP file

    $url = "http".(walang laman($_SERVER["HTTPS"])?"":"s"."://".$_SERVER["SERVER_NAME"];

    If(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")(
    $url.= $_SERVER["REQUEST_URI"];
    }
    iba pa(
    $url.= $_SERVER["PATH_INFO"];
    }

    Ibalik ang $url;
    }

    function rate_limit ($ip, $limit_hour = 20, $limit_10_min = 10)(

    // Ang bilang ng mga pagtatangka sa pag-log in para sa huling oras ng IP address na ito

    $count_hour = ORM::for_table("reg_login_attempt")
    ->
    ->where_raw("ts > SUBTIME(NOW(),"1:00")")
    ->bilang();

    // Ang bilang ng mga pagtatangka sa pag-log in sa huling 10 minuto ng IP address na ito

    $count_10_min = ORM::for_table("reg_login_attempt")
    -> where("ip", sprintf("%u", ip2long($ip)))
    ->where_raw("ts > SUBTIME(NOW(),"0:10")")
    ->bilang();

    Kung($count_hour > $limit_hour || $count_10_min > $limit_10_min)(
    throw new Exception("Masyadong maraming pagsubok sa pag-login!");
    }
    }

    function rate_limit_tick($ip, $email)(

    // Lumikha ng bagong tala sa talahanayan ng pagsubok sa pag-login

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

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

    $login_attempt->save();
    }

    function redirect($url)(
    header("Lokasyon: $url");
    labasan;
    }
    Ang mga function na rate_limit at rate_limit_tick ay nagbibigay-daan sa amin na limitahan ang bilang ng mga pagtatangka sa pahintulot para sa isang tiyak na tagal ng panahon. Ang mga pagtatangka ng pahintulot ay naitala sa database ng reg_login_attempt. Nati-trigger ang mga function na ito kapag na-verify ang form sa pag-log in, gaya ng makikita mo sa sumusunod na snippet ng code.

    Ang code sa ibaba ay kinuha mula sa index.php at responsable para sa pagpapatunay ng form sa pag-login. Nagbabalik ito ng tugon ng JSON na hinihimok ng jQuery code na nakita namin sa assets/js/script.js.

    . Isasama namin sila sa lahat ng pahina. Lalo na sa pangunahing pahina (file

    Kung(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))(

    // Mag-output ng JSON header

    Header("Uri ng nilalaman: application/json");

    // Wasto ba ang email address?

    If(!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))(
    throw new Exception("Mangyaring magpasok ng wastong email.");
    }

    // Magbibigay ito ng exception kung nasa itaas ang tao
    // ang pinapayagang mga limitasyon sa pagsubok sa pag-login (tingnan ang functions.php para sa higit pa):
    rate_limit($_SERVER["REMOTE_ADDR"]);

    // Itala ang pagsubok na ito sa pag-log in
    rate_limit_tick($_SERVER["REMOTE_ADDR"], $_POST["email"]);

    // Ipadala ang mensahe sa user

    $mensahe = "";
    $email = $_POST["email"];
    $subject = "Ang Iyong Login Link";

    If(!User::exists($email))(
    $subject = "Salamat Sa Pagrehistro!";
    $message = "Salamat sa pagrehistro sa aming site!\n\n";
    }

    // Subukang mag-login o irehistro ang tao
    $user = User::loginOrRegister($_POST["email"]);

    $message.= "Maaari kang mag-log in mula sa URL na ito:\n";
    $message.= get_page_url()."?tkn=".$user->generateToken().."\n\n";

    $message.= "Ang link ay awtomatikong mawawalan ng bisa pagkatapos ng 10 minuto.";

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

    Kung(!$result)(
    throw new Exception("Nagkaroon ng error sa pagpapadala ng iyong email. Pakisubukang muli.");
    }

    Die(json_encode(array(
    "message" => "Salamat! Nagpadala kami ng link sa iyong inbox. Suriin din ang iyong spam folder."
    )));
    }
    }
    catch(Exception $e)(

    Die(json_encode(array(
    "error" => 1,
    "mensahe" => $e->getMessage()
    )));
    }
    Sa matagumpay na pagpapahintulot o pagpaparehistro, ang code sa itaas ay nagpapadala ng email sa taong may link para sa awtorisasyon. Ang token ay ginawang available bilang $_GET variable na "tkn" dahil sa nabuong URL.

    . Isasama namin sila sa lahat ng pahina. Lalo na sa pangunahing pahina (file

    If(isset($_GET["tkn"]))(

    // Ito ba ay isang wastong token sa pag-log in?
    $user = User::findByToken($_GET["tkn"]);

    // Oo! Mag-login sa user at mag-redirect sa protektadong pahina.

    $user->login();
    redirect("protected.php");
    }

    // Di-wastong token. I-redirect pabalik sa login form.
    redirect("index.php");
    }
    Ang pagpapatakbo ng $user->login() ay lilikha ng mga kinakailangang variable ng session, na magbibigay-daan sa user na manatiling naka-log in sa mga kasunod na pag-login.

    Ang pag-log out sa system ay ipinapatupad sa halos parehong paraan:

    Index.php

    If(isset($_GET["logout"]))(

    $user = bagong User();

    If($user->login())(
    $user->logout();
    }

    I-redirect("index.php");
    }
    Sa dulo ng code, nire-redirect namin ang user sa index.php muli, kaya ang ?logout=1 parameter sa URL ay maalis.

    Ang aming index.php file ay mangangailangan din ng proteksyon - hindi namin nais na naka-log in na ang mga user na makita ang form. Upang gawin ito ginagamit namin ang $user->loggedIn() na paraan:

    Index.php

    $user = bagong User();

    if($user->login())(
    redirect("protected.php");
    }
    Panghuli, tingnan natin kung paano mo mapoprotektahan ang iyong pahina ng website at gawin itong naa-access lamang pagkatapos ng pahintulot:

    protected.php

    // Para protektahan ang anumang php page sa iyong site, isama ang main.php
    // at lumikha ng bagong object ng User. Ganyan kasimple!

    require_once "includes/main.php";

    $user = bagong User();

    kung(!$user->logIn())(
    redirect("index.php");
    }
    Pagkatapos ng pagsusuring ito, makatitiyak kang matagumpay na naka-log in ang user. Magkakaroon ka rin ng access sa data na nakaimbak sa database bilang mga katangian ng $user object. Upang ipakita ang email ng user at ang kanilang ranggo, gamitin ang sumusunod na code:

    Echo "Ang iyong email: ".$user->email;
    echo "Ang iyong ranggo: ".$user->rank();
    Narito ang rank() ay ang pamamaraan dahil ang column ng ranggo sa database ay karaniwang naglalaman ng mga numero (0 para sa mga regular na user at 1 para sa mga administrator) at kailangan nating i-convert ang lahat ng ito sa mga pangalan ng ranggo, na ipinapatupad gamit ang pamamaraang ito. Upang i-convert ang isang karaniwang user sa isang administrator, i-edit lang ang entry ng user sa phpmyadmin (o anumang iba pang database program). Bilang isang administrator, ang user ay hindi bibigyan ng anumang mga espesyal na kakayahan. Ikaw mismo ang may karapatang pumili kung anong mga karapatan ang ibibigay sa mga administrator.

    handa na!

    Sa pamamagitan nito, handa na ang aming simpleng sistema ng pagpaparehistro! Maaari mo itong gamitin sa isang umiiral nang PHP site, o i-modernize ito upang umangkop sa iyong sariling mga kinakailangan.

    Huling binago noong Abril 5, 2018 ni Vincy.

    Ang pag-log in at pagpaparehistro ng user ay isang pangunahing kinakailangan para sa anumang CMS application. Ito ang unang gawain habang nagsisimula ng isang proyekto. Ang application na may user login authentication ay nagbibigay ng seguridad sa pamamagitan ng pagpigil sa hindi kilalang pag-access. Mayroong iba't ibang mga paraan upang paganahin ang pagpapatotoo sa aming application tulad ng pag-enable sa OAuth login o sa pamamagitan ng pagpapatupad ng Single Sign-on (SSO) at katulad na iba pang mga paraan. Sa isang nakaraang tutorial, nakita namin kung paano ipatupad at tungkol din.

    Kasama sa halimbawang ito ang parehong pag-login at ang pagpaparehistro. Gumamit ako ng MySQL database upang iimbak ang mga rehistradong miyembro. Ang pagpaparehistro ng user ay maglalaman ng input upang makuha ang mga detalye mula sa user. Sa pagsusumite ng form na ito, ang data ng form ay nai-post sa PHP at naka-imbak sa database. Ie-encrypt ang password ng user bago itago sa database. bago mag-post sa PHP code. Kapag ang user ay naka-log in gamit ang mga wastong kredensyal, ang user at siya ay papayagang magpatuloy pa.

    Form ng Pagpaparehistro ng User

    Ang code na ito ay para ipakita ang signup form sa user. Kapag isinumite ng user ang form kasama ang kanyang mga detalye, tatawagin ang function ng JavaScript upang patunayan ang input ng user. Pagkatapos ng matagumpay na pagpapatunay, babasahin ng PHP code ang naka-post na data ng form upang maisagawa ang database insert.