Php-kirjautuminen ja rekisteröintilomake. Uskomattoman yksinkertaisen rekisteröintijärjestelmän rakentaminen PHP:ssä ja MySQL:ssä

Kiinnitän huomionne erittäin yksinkertaisen ja toimivan skriptin rekisteröintiä ja valtuutusta varten sivustolla, joka koostuu 3:sta PHP-tiedostoja kahden java-skriptin yhdistämisellä, joiden avulla virheet näytetään itse lomakkeessa lataamatta sivua uudelleen.

Skripti on testattu onnistuneesti PHP versiot 5.3.3 ja PHP 5.6.3.

Mitä käsikirjoitus voi tehdä ja mitä sillä on

  • Rekisteröi uusia käyttäjiä;
  • Valtuuta käyttäjiä ja tallenna evästeitä tietyksi ajaksi (ei tarvitse kirjautua sisään joka kerta);
  • Näytä ja piilota tietyt tiedot valtuutetuille ja luvattomille käyttäjille;
  • Siinä on HALLINTOPANEELI, jossa voit muokata kaikkia tietoja ja poistaa käyttäjiä.

DEMO- ja hallintapaneelit ovat myös siellä

VAIHE 1.
Jos käytät paikallista rekisteröinti- ja valtuutuskomentosarjaa DENWER:n avulla, sinun ei tarvitse tehdä muutoksia tiedostoihin muodostaaksesi yhteyden tietokantaan.
Muussa tapauksessa avaa tiedostot stayt.php, classes/Auth.class.php ja adminka/connect.php ja korvaa aivan ylhäällä tietokantayhteyden tiedot omallasi.

VAIHE 2.
Mene (jos käytät DENWERiä) osoitteeseen: http://localhost/Tools/phpmyadmin/, jos käytössäsi on isännöinti, napsauta Tietokannat ja luo uusi tietokanta, jonka nimi on rekisteri ja vertailu: utf8_general_ci.
Voit tietysti asettaa oman nimesi, mutta muista sitten korvata se tiedostoissa muodostaaksesi yhteyden tietokantaan (katso vaihe 1).

VAIHE 3.
Napsauta luotua rekisteritietokantaa ja sitten ylimmässä SQL-välilehdessä ja liitä tämä koodi näkyviin tulevaan syöttöikkunaan ja napsauta OK. LUO TAULUKO, JOS EI OLE OLEMASSA `my_users` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `names` varchar(15) NOT NULL, `salasana` varchar(255) NOT NULL `salt` varchar(100) EI NULL, ENSISIJAINEN AVAIN (`id`)) ENGINE=MyISAM OLETUSMERKKI=utf8; Kaikki! Mene osoitteeseesi selaimessa, kokeile ja kokeile.

Ylläpitäjän paneeli

Kun olet suorittanut vähintään yhden rekisteröinnin, voit siirtyä JÄRJESTELMÄNVALVOJA-osioon.
Kirjaudu HALLINTAPANEELIIN:

http://your_site.ru/adminka/

Älä unohda suojata tätä kansiota ja voit myös nimetä sen uudelleen.
Kun avaat hallintapaneelin, napsauta HAE-painiketta ja kaikki rekisteröityneet käyttäjät tulevat näkyviin, missä napsautat tietty numero ID, näet käyttäjätiedot muokkausta varten.

Voit myös löytää käyttäjän nopeasti hänen sähköpostiosoitteestaan ​​tehdäksesi tämän, kirjoita vain tunnettu nimi HAKU-kenttään sähköposti ja paina painiketta.
En suosittele ADD-painikkeen käyttöä, koska käyttäjä lisätään järjestelmään ilman salasanaa. Ja minulla ei ole aavistustakaan, miksi he edes tekivät sen.

Siinä kaikki, jos se ei toimi tai on epäselvä, esitä kysymyksiä.

Samalla voi kokeilla

Ohjeet

Aloita rekisteröintilomakkeen luominen tunnisteella, jonka väliin sinun on asetettava lisätunnisteita, joiden avulla käyttäjät voivat syöttää omat tietonsa lomakkeeseen.

Avaa html-tiedosto ja aloita koodin syöttäminen. Lomakkeen luomisesta vastaava tunniste on "form". Kirjoitamme tunnisteen muistiin attribuuttien kanssa “form action=”obrabotka.php” method=”post” name”forma1””. Aloitetaan lomakeelementtien luominen. Lähes kaikki elementit on tehty käyttämällä tagia ja sen "type"-attribuuttia, joka vastaa tiedon tyypistä, esimerkiksi tekstistä, salasanasta jne. Asetamme aina nimeksi "nimi" mille tahansa määritteelle.

Kirjoita: "br" Kirjoita nimesi: "br"

"input type="text" name="fio""

"br" Anna salasana: "br"

"input type="password" name="pass""

"br"Anna sähköpostiosoite:l"br"

"input type="text" name="email"".

Seuraavaksi luomme valintanapin valintaelementin. Valintanappi on lomakeelementti, jota kun napsautat sitä kohdistimella, muut valintanapit sammuvat. Selitetäänpä esimerkillä lomakkeestamme. Kurssia tilattaessa valinta koostuu joko CD:stä tai DVD:stä, joten sinun on valittava yksi. Attribuutin "type" elementti - "radio" on vastuussa tällaisen painikkeen luomisesta. Määritämme mediatyypille saman nimen, joten määritämme "value"-attribuutin, jotta käsittelijä voi määrittää tarkasti muuttujan arvon. Kirjoitamme koodin: "br"Valitse tallennusvälinevaihtoehto: "br"

"input type="radio" name="disc" value="cd"" CD "br"!}

"input type="radio" name="disc" value="dvd"" DVD "br"!}

Jos tekstiin lisätään attribuutti "arvo", lomake näyttää välittömästi arvon, jonka määritimme tälle attribuutille. Esimerkiksi niin, että koko nimilomake sisältää jo jonkinlaisen nimen (arvo = "nimi").

Anna eri elementti ja aseta tyypiksi "valintaruutu", jotta käyttäjät voivat valita useamman kuin yhden lomakkeen vaihtoehdon. Esimerkiksi:
(Ota yhteyttä lähetyksen yhteydessä)
(Tilata )

Luo "Lähetä"-painike kirjoittamalla tag ja kirjoittamalla "lähetä" arvoksi "Lähetä". Tee lisäksi toisessa tunnisteessa "Reset"-painike ja aseta tyypiksi "reset" ja arvoksi "Reset". Esimerkiksi näin:


Lähetä-painike on tietojen lähettämistä varten ja Palauta-painike lomakkeen tyhjentämiseen tarvittaessa.

Täytä lomake kirjoittamalla sulkeva tagi. Tallenna sivu.

Lähteet:

  • W3C Consortiumin verkkosivut
  • tuotteen tilauslomake verkkosivustolle

Ilmoittautumislomake on sisäänrakennettu Joomla-paneelimoduuli. Sinun ei tarvitse olla web-ohjelmoinnin asiantuntija lisätäksesi sen. Jos kuitenkin päätät muuttaa sitä, voit ottaa sen käyttöön Community Builder -komponentilla tai manuaalisesti. Sinun tarvitsee vain muokata tarvittavia elementtejä tutkimalla verkkosivustojen rakentamisen perusteita.

Ohjeet

Siirry Joomlan hallintapaneeliin ja avaa sisäänrakennettujen moduulien asetukset. Siirry "Lisäasetukset" -välilehteen ja napsauta "Luo" -painiketta. Näkyviin tulee "Moduulien hallinta" -ikkuna, jossa sinun on valittava ja aktivoitava rekisteröintilomake. Määritä otsikolle haluamasi otsikko ja valitse "Näytä otsikko" -rivin vieressä oleva valintaruutu.

Avaa ilmoittautumislomakemoduulin "Alkuteksti" -osio ja muokkaa vierailijoiden vakiotekstiä, jos se ei sovi sinulle. "Kirjaudu" -kohdassa voit valita, kuinka käyttäjää kutsutaan sivustolla: nimelläsi tai kirjautumistunnuksellasi. Napsauta "Tallenna" -painiketta, jotta muutokset tulevat voimaan.

Lataa Community Builder -komponentti sivustollesi. Voit tehdä tämän siirtymällä "Lataa pakettitiedosto" -osioon ja napsauttamalla "Selaa" -painiketta. Valinnan jälkeen tarvittavat asiakirjat Napsauta "Lataa ja asenna" -painiketta. Siirry hallintapaneeliin ja suorita asennettu komponentti.

Avaa "Rekisteröityminen"-välilehti ja tee kaikki tarvittavat muutokset rekisteröintilomakkeeseen. Tämä sovellus on erittäin kätevä käyttää, mutta jos haluat muuttaa vain yhtä tai kahta kenttää, sitä on helpompi muokata manuaalisesti.

Luoda varmuuskopio tiedostot, joita muokkaat tehdäksesi muutoksia rekisteröintilomakkeeseen. Tämän avulla voit peruuttaa kaikki toiminnot ja palauttaa sivuston toimintakuntoon epäonnistuessa. Määritä, mitä kenttiä haluat muokata tai lisätä. Haluat esimerkiksi lisätä "Kaupunki"-kentän rekisteröintilomakkeeseen.

Avaa default.php-tiedosto, joka sijaitsee osoitteessa komponentit/com_user/views/register/tmpl. Lisää "Cities"-näyttö lisäämällä asianmukainen HTML-koodi rekisteröintilomakkeeseen. Voit tehdä tämän kopioimalla minkä tahansa muun kohteen ja muokata sitä kaupungin mukaan. Tee nämä muutokset jos_users-taulukkoon. Avaa user.php-tiedosto, joka sijaitsee osoitteessa libraries/joomla/database/table. Lisää siihen uusi muuttuja. Tallenna asetukset ja käynnistä sivusto uudelleen.

Lähteet:

  • kuinka vaihtaa moduulia joomlassa
Vinkki 7: Kuinka tehdä väliaikainen rekisteröinti ilman omistajaa

Onnelliset uudet asukkaat eivät aina pysty täyttämään lain vaatimusta asuinpaikkarekisteröimisestä (tee tilapäinen rekisteröinti) asetetussa 90 päivän määräajassa. Joskus syynä tähän voi olla asunnon omistajan haluttomuus tai kyvyttömyys saapua asiaankuuluvaan organisaatioon suorittamaan rekisteröintitoimia.

Tietenkin, jos omistaja ei ole ilmaissut halua laillistaa tilapäistä oleskeluasi asuintiloissaan, et voi rekisteröityä. Poikkeuksena on, kun rekisteröit alaikäisen lapsesi ilmoittautumispaikallasi. Tällöin omistajan suostumusta ei tarvita.

Mutta jos tilapäisen rekisteröinnin ongelma on vain omistajan haluttomuus vierailla kanssasi työntekijöiden kanssa, jotka ovat vastuussa asiakirjojen hyväksymisestä rekisteröintiä varten, säännökset tarjoavat mahdollisuuden tilapäiseen rekisteröintiin ilman omistajan läsnäoloa.

Jos muuton perusteena on vuokrasopimus, voit lähettää notaarin vahvistaman sopimuksen postitse ja liitteenä loput asiakirjat (passikopio, täytetty hakemus). Tällaisessa tilanteessa asiakirjojen vastaanottamisesta vastaavilla henkilöillä ei ole velvollisuutta todistaa kopiota tästä sopimuksesta, eikä tilan omistaja allekirjoita hakemusta.

Jos sopimus on mahdollista toimittaa vain yksinkertaisessa kirjallisessa muodossa, on vastuuhenkilöiden velvollisuus todistaa hakemuksessa omistajan ja rekisteröidyn allekirjoitus. Tässä tilanteessa et voi tehdä ilman omistajan läsnäoloa.

Todistuksen asuinpaikan rekisteröinnistä saa myös postitse.

Vaikka omistajan läsnäoloa tilapäistä rekisteröintiä hankittaessa ei vaadita, sinun ei pitäisi toivoa, että hän ei saa tietää uusista asukkaista. Kun rekisteröintitoimenpiteet on suoritettu, FMS-viranomaiset lähettävät hänelle ilmoituksen asuintilaansa rekisteröidystä henkilöstä.

Vinkki 8: 3-NDFL-lomakkeen täyttäminen auton myyntiä varten

Jos myit yli kolme vuotta omistamasi auton, sinun ei tarvitse lukea enempää: vuodesta 2011 alkaen oikeutesi kiinteistöveron vähennykseen tunnustetaan automaattisesti. Tämä tarkoittaa, että sinun ei tarvitse tehdä palautusta. Mutta jos olet omistanut sen lyhyemmän aikaa, sinun on täytettävä tarvittavat paperit. Helpoin tapa tehdä tämä on käyttää Declaration-ohjelmaa.

Tarvitset

  • - tietokone;
  • - Internet-yhteys;
  • - Venäjän federaation liittovaltion veropalvelun GNIIVS:n "ilmoitus"-ohjelma;
  • - auton osto- ja myyntisopimus;
  • - asiakirjat, jotka vahvistavat muut tulosi ja niistä maksetun tuloveron kuluneen vuoden ajalta.

Ohjeet

Voit ladata ohjelman uusimman version Venäjän liittovaltion veropalvelun (GNIVC FTS) päätutkimuskeskuksen verkkosivustolta. Se leviää

Jäsenyyteen perustuvan sivuston luominen tuntuu aluksi pelottavalta tehtävältä. Jos olet joskus halunnut tehdä tämän itse, mutta sitten vain luovutit, kun aloit miettiä, kuinka aiot koota sen PHP-taitojasi käyttämällä, tämä artikkeli on sinua varten. Aiomme opastaa sinut jäsenyyteen perustuvan sivuston luomisen kaikissa vaiheissa, joissa on salasanalla suojattu suojattu jäsenalue.

Koko prosessi koostuu kahdesta suuresta osasta: käyttäjän rekisteröinnistä ja käyttäjän todentamisesta. Ensimmäisessä osassa käsittelemme rekisteröintilomakkeen luomista ja tietojen tallentamista MySQL-tietokantaan. Toisessa osassa luomme kirjautumislomakkeen ja annamme sen avulla käyttäjien pääsyn suojatulle alueelle.

Lataa koodi

Voit ladata koko lähteen koodi rekisteröinti-/kirjautumisjärjestelmä alla olevasta linkistä:

Määritys ja lataus
ReadMe-tiedosto sisältää yksityiskohtaiset ohjeet.

Avaa source\include\membersite_config.php tiedosto tekstissä toimittaja ja päivitä kokoonpano. (Tietokantaan kirjautuminen, verkkosivustosi nimi, sähköpostiosoitteesi jne.).

Lataa koko hakemiston sisältö. Testaa register.php:tä lähettämällä lomake.

Ilmoittautumislomake

Luodakseen a käyttäjätili, meidän on kerättävä käyttäjältä mahdollisimman vähän tietoa. Tarvitsemme hänen nimensä, sähköpostiosoitteensa ja halutun käyttäjätunnuksensa ja salasana. Tietysti voimme tässä vaiheessa kysyä lisätietoja, mutta pitkä lomake on aina sammutus. Joten rajoittukaamme vain näihin aloihin.

Tässä ilmoittautumislomake:

Rekisteröi koko nimesi*: Sähköpostiosoite*: Käyttäjätunnus*: Salasana*:

Joten meillä on tekstikentät nimelle, sähköpostiosoitteelle ja salasanalle. Huomaa, että käytämme käytettävyyden parantamiseksi.

Lomakkeen vahvistus

Tässä vaiheessa on hyvä idea laittaa lomakkeen vahvistuskoodi paikalleen, joten varmistamme, että meillä on kaikki käyttäjätilin luomiseen tarvittavat tiedot. Meidän on tarkistettava, että nimi, sähköpostiosoite ja salasana on täytetty ja että sähköposti on oikeassa muodossa.

Lomakkeen lähetyksen käsittely

Nyt meidän on käsiteltävä lähetetyt lomaketiedot.

Tässä on järjestys (katso tiedosto fg_membersite.php ladatusta lähteestä):

function RegisterUser() ( if(!isset($_POST["lähetetty"])) ( 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($) muotovarsit);

Ensin vahvistamme lomakkeen lähetyksen. Sitten keräämme ja "puhdistamme" lomakkeen lähetystiedot (tee tämä aina ennen sähköpostin lähettämistä, tietokantaan tallentamista jne.). Lomakkeen lähetys tallennetaan sitten tietokantataulukkoon. Lähetämme käyttäjälle sähköpostin, jossa pyydetään vahvistusta. Sitten kerromme järjestelmänvalvojalle, että käyttäjä on rekisteröitynyt.

Tietojen tallentaminen tietokantaan

Nyt kun olemme keränneet kaikki tiedot, meidän on tallennettava ne tietokantaan.
Näin tallennamme lomakkeen lähetyksen tietokantaan.

function SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ( $this->HandleError("Tietokantaan kirjautuminen epäonnistui!"); return false; ) if(!$this->Varmistettava()) ( return false $formvars,"käyttäjänimi")) ( $this->HandleError("Tämä käyttäjänimi on jo käytössä. Yritä toista käyttäjätunnusta"); return false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("Lisääminen tietokantaan epäonnistui!" return false;

Huomaa, että olet määrittänyt tietokannan kirjautumistiedot Membersite_config.php-tiedostossa. Useimmissa tapauksissa voit käyttää "localhostia" tietokantaisäntänä.
Sisäänkirjautumisen jälkeen varmistamme, että taulukko on olemassa. (Jos ei, skripti luo tarvittavan taulukon).
Sitten varmistamme, että käyttäjätunnus ja sähköpostiosoite ovat yksilöllisiä. Jos se ei ole ainutlaatuinen, palautamme virheen takaisin käyttäjälle.

Tietokantataulukon rakenne

Tämä on taulukon rakenne. CreateTable()-funktio fg_membersite.php-tiedostossa luo taulukon. Tässä on koodi:

funktio CreateTable() ( $qry = " Luo taulukko$this->tablename (". "id_user INT NOT NULL AUTO_INCREMENT ," "nimi VARCHAR(128) NOT NULL ," "email VARCHAR(64) NOT NULL ," "phone_number VARCHAR(16) NOT NULL ," " "käyttäjänimi VARCHAR (16) NOT NULL ," "salasana VARCHAR(32) NOT NULL ", "confirmcode VARCHAR(32) ", "PRIMARY KEY (id_user)". ,$this->connection)) ( $this->HandleDBERror("Virhe" taulukon luominen \nkysely oli\n $qry"); return false; ) return true )

Kenttä id_user sisältää käyttäjän yksilöllisen tunnuksen ja on myös taulukon ensisijainen avain. Huomaa, että sallimme salasanakentässä 32 merkkiä. Teemme tämän, koska lisäturvatoimenpiteenä tallennamme salasanan tietokantaan MD5:llä salattuna. Huomaa, että koska MD5 on yksisuuntainen salausmenetelmä, emme voi palauttaa salasanaa, jos käyttäjä unohtaa sen.

Rekisteröinnin lisääminen taulukkoon

Tässä on koodi, jota käytämme tietojen lisäämiseen tietokantaan. Kaikki tietomme ovat saatavilla $formvars-taulukossa.

function InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "lisää kohteeseen ".$this->tablename."(nimi, sähköpostiosoite, käyttäjätunnus, salasana, vahvistuskoodi) arvot ("" . $this->SanitizeForSQL($formvars["nimi"]) . "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" $ this->SanitizeForSQL($formvars["username"]) $insert_query ,$this->connection)) ( $this->HandleDBERror("Virhe lisättäessä tietoja taulukkoon\nquery:$insert_query"); return false; ) return true )

Huomaa, että käytämme PHP-funktiota md5() salataksemme salasanan ennen sen lisäämistä tietokantaan.
Lisäksi teemme yksilöllisen vahvistuskoodin käyttäjän sähköpostiosoitteesta.

Sähköpostien lähettäminen

Nyt kun rekisteröinti on tietokannassamme, lähetämme käyttäjälle vahvistussähköpostin. Käyttäjän on napsautettava vahvistussähköpostissa olevaa linkkiä rekisteröintiprosessin viimeistelemiseksi.

function SendUserConfirmationEmail(&$formvars) ( $mailer = new PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["nimi"]) ; $mailer->Subject = "Rekisteröityminen ".$this->sitename":llä ])) $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode->Body ="Hei ".$formvars["nimi"]."\r\; n\r\n". "Kiitos rekisteröitymisestä ".$this->sitename."\r\n". "Klikkaa alla olevaa linkkiä vahvistaaksesi rekisteröitymisesi.\r\n." "$confirm_url\r \n". "\r\n". "Terveisin\r\n". "Webmaster\r\n". $this->sivuston nimi; if(!$mailer->Lähetä()) ( $this-> HandleError("Rekisteröintivahvistussähköpostin lähetys epäonnistui." return false;

Päivitykset

9. tammikuuta 2012
Nollaa salasana/Vaihda salasana -ominaisuudet on lisätty
Koodi on nyt jaettu GitHubissa.

Tervetuloa takaisin!

Lisenssi


Koodi on jaettu LGPL-lisenssillä. Voit käyttää sitä vapaasti kaupallisilla tai ei-kaupallisilla verkkosivuilla.

Ei aiheeseen liittyviä viestejä.

Tämän merkinnän kommentointi on suljettu.

Hei! Nyt yritämme toteuttaa yksinkertaisimman rekisteröinnin sivustolla PHP:n avulla+ MySQL. Tätä varten Apache on asennettava tietokoneellesi. Käsikirjoituksemme toimintaperiaate on esitetty alla.

1. Aloitetaan luomalla käyttäjätaulukko tietokantaan. Se sisältää käyttäjätiedot (kirjautumistunnus ja salasana). Siirrytään phpmyadminiin (jos olet luomassa tietokantaa tietokoneellesi http://localhost/phpmyadmin/). Luomme taulukon käyttäjät, siinä on 3 kenttää.

Luon sen mysql-tietokantaan, voit luoda sen toiseen tietokantaan. Aseta seuraavaksi arvot kuvan mukaisesti:

2. Yhteys tähän taulukkoon vaaditaan. Luodaan bd.php-tiedosto. Sen sisältö:

Minun tapauksessani se näyttää tältä:

Tallenna bd.php .
Loistava! Meillä on tietokannassa taulukko ja yhteys siihen. Nyt voit alkaa luoda sivua, jolle käyttäjät jättävät tietonsa.

3. Luo reg.php-tiedosto sisällöllä (kaikki kommentit sisällä):



Rekisteröinti


Rekisteröinti


Kirjautumistunnuksesi:




Salasanasi:








4. Luo tiedosto, joka syöttää tiedot tietokantaan ja tallentaa käyttäjän. save_user.php (kommentit sisällä):

5. Nyt käyttäjämme voivat rekisteröityä! Seuraavaksi sinun on luotava "ovi" jo rekisteröityneille käyttäjille päästäkseen sivustolle. index.php (kommentit sisällä):




Kotisivu


Kotisivu


Kirjautumistunnuksesi:


Salasanasi:






Rekisteröidy



OK, nyt kaikki on ohi! Oppitunti voi olla tylsä, mutta erittäin hyödyllinen. Tässä näkyy vain rekisteröinnin idea, jonka jälkeen voit parantaa sitä: lisätä tietoturvaa, suunnittelua, tietokenttiä, ladata avatareja, kirjautua ulos tilistäsi (tämä tehdään yksinkertaisesti tuhoamalla muuttujat istunnosta Unset-toiminnolla) ja pian. Onnea!

Tarkistin kaiken, toimii oikein!

Reg.ru: verkkotunnukset ja hosting

Venäjän suurin rekisterinpitäjä ja hosting-palvelujen tarjoaja.

Yli 2 miljoonaa verkkotunnusta käytössä.

Promootio, verkkotunnuksen sähköposti, yritysratkaisut.

Yli 700 tuhatta asiakasta ympäri maailmaa on jo tehnyt valintansa.

*Keskeytä vieritys viemällä hiiri päälle.

Takaisin eteenpäin

Yksinkertaisen käyttäjärekisteröintijärjestelmän luominen PHP:ssä ja MySQL:ssä

Rekisteröintijärjestelmän luominen on paljon työtä. Sinun on kirjoitettava koodi, joka vahvistaa sähköpostiosoitteet, lähettää rekisteröinnin vahvistavan sähköpostin ja vahvistaa myös muut lomakekentät ja paljon muuta.

Ja vaikka olet kirjoittanut tämän kaiken, käyttäjät ovat haluttomia rekisteröitymään, koska... tämä vaatii heiltä ponnistelua.

Tässä opetusohjelmassa luomme hyvin yksinkertaisen rekisteröintijärjestelmän, joka ei vaadi tai tallenna salasanoja ollenkaan! Tulosta on helppo muokata ja lisätä olemassa olevaan PHP-sivustoon. Haluatko tietää, miten se toimii? Lue alla.



Super yksinkertainen järjestelmämme toimii näin:

Yhdistämme valtuutuslomakkeen ja ilmoittautumisen. Tässä lomakkeessa on kenttä sähköpostiosoitteesi syöttämistä varten ja rekisteröintipainike;
- Kun täytät kenttää sähköpostiosoitteella, rekisteröintipainiketta napsauttamalla luodaan tietue uudesta käyttäjästä, mutta vain jos syötettyä sähköpostiosoitetta ei löydy tietokannasta.

Tämän jälkeen satunnainen ainutlaatuinen setti merkit (token), joka lähetetään käyttäjän määrittämään sähköpostiin linkin muodossa, joka on relevantti 10 minuuttia;
- Linkki vie käyttäjän verkkosivuillemme. Järjestelmä määrittää tunnuksen olemassaolon ja valtuuttaa käyttäjän;

Tämän lähestymistavan edut:

Ei tarvitse tallentaa salasanoja tai vahvistaa kenttiä;
- Salasanaa ei tarvitse palauttaa, turvallisuuskysymykset jne.;
- Siitä hetkestä lähtien, kun käyttäjä rekisteröityy/kirjautuu sisään, voit aina olla varma, että tämä käyttäjä on pääsyvyöhykkeelläsi (että sähköpostiosoite on oikea);
- Uskomattoman yksinkertainen rekisteröintiprosessi;

Virheet:

Käyttäjätilin suojaus. Jos jollakin on pääsy käyttäjän sähköpostiin, hän voi kirjautua sisään.
- Sähköposti ei ole suojattu ja se voidaan siepata. Muista, että tämä kysymys on tärkeä myös silloin, kun salasana on unohtunut ja se on palautettava, tai missä tahansa valtuutusjärjestelmässä, joka ei käytä HTTPS:ää tiedonsiirtoon (sisäänkirjautuminen/salasana);
- Kunnes asennat sen tarpeen mukaan sähköpostipalvelin, on mahdollista, että valtuutuslinkkejä sisältävät viestit päätyvät roskapostiin;

Vertaamalla järjestelmämme etuja ja haittoja voidaan todeta, että järjestelmällä on korkea käytettävyys (maksimaalinen käyttömukavuus loppukäyttäjälle) ja samalla alhainen turvallisuusindikaattori.

Siksi on suositeltavaa käyttää sitä rekisteröintiin foorumeilla ja palveluissa, jotka eivät toimi tärkeiden tietojen kanssa.

Kuinka käyttää tätä järjestelmää

Jos sinun on vain käytettävä järjestelmää käyttäjien valtuuttamiseksi sivustollasi etkä halua purkaa tätä oppituntia, sinun on tehtävä seuraava:

Sinun on ladattava oppitunnin liitteenä olevat lähteet
- Etsi tiedosto tables.sql arkistosta. Tuo se tietokantaan käyttämällä phpMyAdminin tuontivaihtoehtoa. Vaihtoehtoinen tapa: avaa tämä tiedosto tekstieditorilla, kopioi SQL-kysely ja suorita se;
- Avaa include/main.php ja täytä tietokantaan yhteyden muodostamisen asetukset (määritä tietokantaan yhdistämisen käyttäjä ja salasana sekä tietokannan isäntä ja nimi). Samassa tiedostossa tulee määrittää myös sähköposti, jota käytetään järjestelmän lähettämien viestien alkuperäisenä osoitteena. Jotkut isännät estävät lähtevät sähköpostit, ellei lomake sisällä oikeaa sähköpostiosoitetta, joka luotiin isännän ohjauspaneelista, joten anna oikea osoite.
- Lataa kaikki index.php , Protected.php -tiedostot ja -resurssit sekä kansiot FTP:n kautta isäntään;
- Lisää alla oleva koodi jokaiselle PHP-sivulle, jolla haluat näyttää kirjautumislomakkeen;

Require_once "includes/main.php"; $käyttäjä = uusi käyttäjä(); if(!$user->loggedIn())( redirect("index.php"); )
- Valmiina!

Niille, jotka ovat kiinnostuneita kuinka se kaikki toimii, lue alla!

Ensimmäinen askel on kirjoittaa valtuutuslomakkeen HTM-koodi. Tämä koodi joka sijaitsee index.php-tiedostossa. Tämä tiedosto sisältää myös PHP-koodin, joka käsittelee lomaketietoja ja muita hyödyllisiä kirjautumisjärjestelmän toimintoja. Saat lisätietoja tästä alla olevasta osiosta PHP arvostelu koodi.

index.php

Opetusohjelma: Super yksinkertainen rekisteröintijärjestelmä PHP- ja MySQL-kirjautumisella tai rekisteröinnillä

Kirjoita sähköpostiosoitteesi yllä niin lähetämme
sinulle kirjautumislinkki.

Kirjaudu / Rekisteröidy

Pääosaan (tunnisteiden ja väliin) sisällytin tärkeimmät tyylit (niitä ei käsitellä tässä opetusohjelmassa, joten voit katsoa niitä itse. Kansiovarat/css/style.css). Ennen sulkevaa tagia sisällytin jQuery-kirjaston ja script.js-tiedoston, jotka kirjoitamme ja analysoimme alla.


JavaScript

jQuery seuraa "Rekisteröidy/Kirjaudu"-painikkeen tilaa käyttämällä toimintoa e.preventDefault() ja lähettää AJAX-pyyntöjä. Palvelimen vastauksesta riippuen se näyttää yhden tai toisen viestin ja määrittää jatkotoimenpiteet/

property/js/script.js

$(function())( var form = $("#login-register"); form.on("lähetä", function(e)( if(form.is(.loading, .loggedIn"))( return false ; ) var email = form.find("syöte").val(), messageHolder = form.find("span") funktio (m)( if (m.error)( form.addClass("error"); messageHolder.text(m.message); ) else( form.removeClass("error").addClass("loggedIn"); messageHolder. text(m.message ); ) )); ;

on lisätty näytettävään lomakkeeseen nykyinen tila AJAX-pyyntö (tämä oli mahdollista menetelmien ansiosta ajaxStart()) Ja ajaxComplete(), jonka löydät tiedoston lopusta).

Tämä luokka näyttää pyörivän animoidun GIF-tiedoston (ikään kuin vihjaisikseen meille, että pyyntöä käsitellään), ja se toimii myös lippuna, joka estää lomakkeen lähettämisen uudelleen (kun rekisteröintipainiketta on jo klikattu kerran). .loggedIn-luokka on toinen lippu - se asetetaan, kun sähköposti lähetettiin. Tämä lippu estää välittömästi kaikki muut lomakkeen kanssa tehtävät toimet.

Tietokantaskeema

Uskomattoman yksinkertainen lokijärjestelmämme käyttää kahta MySQL-taulukkoa (SQL-koodi on tables.sql-tiedostossa). Ensimmäinen tallentaa tietoja käyttäjätileistä. Toinen tallentaa tiedot kirjautumisyritysten määrästä.


Käyttäjätaulukkokaavio.

Järjestelmä ei käytä salasanoja, kuten kaaviosta näkyy. Siinä näet token-sarakkeen, jonka tunnukset ovat token_validity-sarakkeen vieressä. Tunnus asennetaan heti, kun käyttäjä muodostaa yhteyden järjestelmään ja asettaa sähköpostinsa lähettämään viestin (lisää tästä seuraavassa lohkossa). Token_validity-sarake asettaa ajan 10 minuuttia myöhemmäksi, jonka jälkeen token ei ole enää voimassa.


Taulukkoskeema, joka laskee valtuutusyritysten määrän.

Molemmissa taulukoissa IP-osoite on tallennettu prosessoidussa muodossa käyttäen ip2long-funktiota kentässä, jonka tyyppi on kokonaisluku.

Nyt voimme kirjoittaa PHP-koodia. Järjestelmän päätoiminnot on määritetty luokkaan User.class.php, jonka näet alta.

Tämä luokka käyttää aktiivisesti idormia (docs), näitä kirjastoja on vähän tarvittavat työkalut, tietokantojen käsittelyyn. Se hoitaa tietokannan pääsyn, tunnuksen luomisen ja tunnuksen validoinnin. Se tarjoaa yksinkertaisen käyttöliittymän, jonka avulla rekisteröintijärjestelmän liittäminen sivustoosi on helppoa, jos se käyttää PHP:tä.

User.class.php

Luokan käyttäjä( // Private ORM case Etsimme tätä merkkiä * @return User Palauta User-funktion arvo */ public static function findByToken($token)( // etsi merkki tietokannasta ja varmista, että oikea aikaleima on asetettu $. tulos = ORM::for_table("reg_users") ->where ("tunnus", $tunnus) ->where_raw("token_validity > NOW()") ->find_one(!$tulos)( return false; ) return new User($result) /** *); on jo olemassa, palauttaa User-funktion arvon määritetystä sähköpostiosoitteesta, joka on tallennettu tietokantaan if(User::exists($email))( return new User($email); ) // Muussa tapauksessa luo uusi käyttäjä tietokanta ja palauttaa User::create-funktion arvon määritetystä sähköpostista return User::create($email ); ) /** * Luo uusi käyttäjä ja tallenna tietokantaan * @param string $sähköposti. Käyttäjän sähköpostiosoite * @return User */ yksityinen staattinen funktio Create($email)( // Kirjoita uusi käyttäjä ja palauta User-funktion tulos näistä arvoista>$result = ORM::for_table("reg_users")- >luo(); $result->save($) muuttuja * @param merkkijono $sähköposti. Käyttäjän sähköpostiosoite * @return boolean */ julkinen staattinen funktio on olemassa($email)( // Onko käyttäjä olemassa tietokannassa? $result = ORM::for_table("reg_users") ->where("email", $email ) ->count(); return $result == 1 null) ( if($param instanceof ORM)( // ORM-tarkistus läpäissyt $this->orm = $param; ) else if(is_string($param))( // Sähköpostin tarkistus läpäissyt $this->orm = ORM:: for_table ("reg_users") ->where("email", $param) ->find_one( ) else( $id = 0; if(on_numeric($param))( // muuttujan $param $ arvo id välitetään käyttäjätunnukselle = $param ) else if(isset($_SESSION["loginid"]))( // Muussa tapauksessa katso istunto $id = $_SESSION["loginid"]; ) $this->orm; = ORM::for_table( "reg_users") ->where("id", $id) ->find_one() ) ) /** * Luo uusi SHA1-valtuutustunnus, kirjoittaa sen tietokantaan ja palauttaa sen arvon * @ return string */ public function generateToken( )( // Luo tunnus valtuutetulle käyttäjälle ja tallenna se tietokantaan $token = sha1($this->email.time().rand(0, 1000000)); // Tallenna tunnus tietokantaan // Ja merkitse, että se on voimassa vain 10 seuraavat minuutit$this->orm->set("token", $token); $this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")"); $this->orm->tallenna(); palauttaa $tunnus; ) /** * Valtuuta käyttäjä * @return void */ public function login())( // Merkitse käyttäjä kirjautuneeksi sisään $_SESSION["loginid"] = $this->orm->id; // Päivitä tietokantakentän last_login arvo $this->orm->set_expr("last_login", "NOW()"); $this->orm->save() /** * Tuhoa istunto ja kirjaudu ulos * @return void */ public function logout ()( $_SESSION = array(); unset($_SESSION); ) /** * Tarkista onko käyttäjä kirjautunut sisään * @return boolean */ public function loggedIn())( return isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id ) /** * Tarkistaa onko käyttäjä järjestelmänvalvoja * @return boolean */ julkinen funktio isAdmin())( return $this->rank() = = "järjestelmänvalvoja"; ) /** * Etsi käyttäjätyyppi, voi olla joko ylläpitäjä tai tavallinen * @return string */ julkinen funktio rank())( if( $this->orm->rank == 1)( return "administrator" "; ) return "normal"; ) /** * Menetelmä, jolla voit saada käyttäjän yksityiset tiedot User-objektin * ominaisuuksina * @param string $key Ominaisuuden nimi, joka saa käyttöoikeuden * @return mix */ julkinen funktio __get($key)( if(isset($this->orm->$key))( return $this->orm->$ avain; ) palauttaa null; ) )

Tokenit luodaan SHA1-algoritmilla ja tallennetaan tietokantaan. Käytän MySQL:n ajoitustoimintoja asettaakseni 10 minuutin aikarajan tunnuksen voimassaololle.

Kun token on validoitu, kerromme suoraan käsittelijälle, että harkitsemme vain token_validity-sarakkeeseen tallennettuja tokeneja, jotka eivät ole vielä vanhentuneet.

Huomaa, että käytän taikamenetelmää __saada docs-kirjasto tiedoston lopussa siepatakseen pääsyn User-objektin ominaisuuksiin.

Tämän ansiosta on mahdollista päästä käsiksi tietokantaan tallennettuihin tietoihin ominaisuuksien $user->email, $user->token jne. ansiosta. Seuraavassa koodikatkelmassa tarkastellaan näiden luokkien käyttöä esimerkkinä .


Suojattu sivu

Toinen tiedosto, joka tallentaa hyödyllisiä ja tarpeellisia toimintoja, on functions.php-tiedosto. On olemassa useita ns. apureita - avustajatoimintoja, joiden avulla voit luoda selkeämpää ja luettavampaa koodia muihin tiedostoihin.

Functions.php

Funktio send_email($lähettäjä, $vastaanottaja, $aihe, $viesti)( // Apulainen, joka lähettää sähköpostia $headers = "MIME-versio: 1.0" . "\r\n"; $headers .= "Sisältötyyppi: teksti /plain; charset=utf-8" . "\r\n"; $headers .= "Lähettäjä: ".$from . "\r\n"; paluuposti($vastaanottaja, $aihe, $viesti, $headers ); ) funktio get_page_url())( // Määritä PHP-tiedoston URL-osoite $url = "http".(tyhjä($_SERVER["HTTPS"])?"":"s")."://" .$_SERVER ["SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")( $url.= $_SERVER["REQUEST_URI"]; ) else( $url. = $_SERVER["PATH_INFO"] ) palauttaa $url_raja = ORM: :for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"1:00") )") ->count(); // Kirjautumisyritysten määrä viimeisen 10 minuutin aikana tälle IP-osoitteelle $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("Liian monta kirjautumisyritystä!"); ) ) function rate_limit_tick($ip, $email)( // Luo uusi merkintä taulukossa, joka laskee kirjautumisyritysten määrän $login_attempt = ORM::for_table("reg_login_attempt")->create(); $login_attempt->sähköposti = $sähköposti; $login_attempt->ip = sprintf("%u", ip2long($ip)); $login_attempt->tallenna(); ) function redirect($url)( header("Sijainti: $url"); exit; )

Toiminnot rate_limit Ja rate_limit_tick valvoa valtuutusyritysten määrää ensimmäisestä yrityksestä kuluneen ajanjakson aikana. Kirjautumisyritys tallennetaan tietokannan reg_login_attempt-sarakkeeseen. Näitä toimintoja kutsutaan, kun lomaketietoja käsitellään ja lähetetään, kuten näet seuraavasta koodinpätkästä.

Alla oleva koodi on otettu index.php-tiedostosta ja se käsittelee lomakkeen lähettämisen. Se palauttaa JSON-vastauksen, jonka jQuery puolestaan ​​käsittelee aiemmin tarkastelemassamme asset/js/script.js-tiedostossa.

index.php

Try( if(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))( // Tulosta JSON-otsikon otsikko("Content-type: application/json"); // Onko tämä sähköpostiosoite kelvollinen, jos (!isset($_POST["sähköposti"]) || !filter_var($_POST["sähköposti"], FILTER_VALIDATE_EMAIL))(heite new Exception("Anna kelvollinen sähköpostiosoite."); ) // Tarkista käyttäjä saa kirjautua sisään, onko hän ylittänyt sallittujen yhteyksien määrän (lisätietoja funktiot.php-tiedostosta) rate_limit($_SERVER["REMOTE_ADDR"] // Tallenna tämä valtuutusyritys rate_limit_tick($_SERVER["REMOTE_ADDR"]) , $ _POST["sähköposti"] // Lähetä sähköposti käyttäjälle $message = ""sähköposti"] Kiitos rekisteröitymisestä!"; $message = "Kiitos rekisteröitymisestäsi sivustollemme!\n\n"; ) // Yritä valtuuttaa tai rekisteröidä käyttäjä $user = User::loginOrRegister($_POST[ "sähköposti"] ); $message.= "Voit kirjautua sisään tästä URL-osoitteesta:\n"; $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "Linkki vanhenee automaattisesti 10 minuutin kuluttua."; $tulos = lähetä_sähköposti($sähköpostista, $_POST["sähköposti"], $aihe, $viesti); if(!$result)( throw new Exception("Sähköpostin lähetyksessä tapahtui virhe. Yritä uudelleen."); ) die(json_encode(array("message" => "Kiitos! Olemme lähettäneet linkin Tarkista myös roskapostikansiosi."))); ) ) catch(Poikkeus $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage()). )));

Onnistuneen kirjautumisen/rekisteröinnin jälkeen yllä oleva koodi lähettää käyttäjälle kirjautumislinkin. Tunnus tulee saataville, koska se välitetään muuttujana generoidussa linkissä menetelmällä $_GET tkn-merkillä

index.php

If(isset($_GET["tkn"]))( // Onko tämä token kelvollinen valtuutukseen? $user = User::findByToken($_GET["tkn"]); if($user)( // Kyllä , on uudelleenohjaus suojatulle sivulle $user->login("protected.php") ).

$user->login()

luo tarvittavat muuttujat istuntoa varten, jotta käyttäjä, joka katselee sivuston myöhempiä sivuja, pysyy valtuutettuna koko ajan.

Toiminnon käsittely järjestelmästä poistumiseksi on järjestetty samalla tavalla.

index.php

If(isset($_GET["logout"]))( $user = new User(); if($user->loggedIn())( $user->logout(); ) redirect("index.php") ;)

Koodin lopussa asetin uudelleen uudelleenohjauksen index.php:hen, joten parametrin ?logout=1 URL-osoitteen kautta lähetettyä ei vaadita.

Index.php-tiedostomme vaatii lisää. suojaus - emme halua järjestelmään kirjautuneiden näkevän rekisteröintilomaketta uudelleen. Näihin tarkoituksiin käytämme menetelmää $user->loggedIn().

index.php

$käyttäjä = uusi käyttäjä(); if($user->loggedIn())( redirect("protected.php"); )

Lopuksi tässä on koodinpätkä, jonka avulla voit suojata sivustosi sivut ja tehdä niistä pääsyn vasta valtuutuksen jälkeen.

suojattu.php

// Suojaa kaikki sivustosi sivut sisällyttämällä main.php-tiedosto // ja luomalla uusi käyttäjäobjekti. Näin helppoa se on! request_once "includes/main.php"; $käyttäjä = uusi käyttäjä(); if(!$user->loggedIn())( redirect("index.php"); )

Tämän tarkistuksen jälkeen voit olla varma, että käyttäjän valtuutus onnistui. Voit myös käyttää tietokantaan tallennettuja tietoja objektin ominaisuuksien avulla $käyttäjä. Näytä käyttäjän sähköposti ja tila käyttämällä tätä koodia:

Echo "Sähköpostisi: ".$user->email; echo "Sinun sijoitussi: ".$user->rank();

Menetelmä sijoitus() käytetään tässä, koska tietokanta yleensä tallentaa numerot (0 tavalliselle käyttäjälle, 1 järjestelmänvalvojalle) ja meidän on muutettava nämä tiedot tiloihin, joihin ne kuuluvat, missä tämä menetelmä auttaa meitä.

Jos haluat tehdä tavallisesta käyttäjästä järjestelmänvalvojan, muokkaa käyttäjämerkintää phpMyAdminin (tai minkä tahansa muun ohjelman kautta, jonka avulla voit hallita tietokantoja) kautta. Järjestelmänvalvojan tila ei anna mitään oikeuksia, mukaan lukien tässä esimerkissä sivulla näkyy, että olet järjestelmänvalvoja - ja siinä kaikki.

Mutta mitä tehdä tämän kanssa, voit itse kirjoittaa ja laatia koodin, joka asettaa järjestelmänvalvojille tietyt oikeudet ja ominaisuudet.

Olemme valmiit!

Olemme valmiit tämän uskomattoman super lähes yksinkertaisen muodon kanssa! Voit käyttää sitä PHP-sivustoissasi, se on melko yksinkertaista. Voit myös muokata sitä itse ja tehdä siitä haluamallasi tavalla.

Materiaalin on laatinut Denis Malyshok erityisesti verkkosivustoa varten

P.S. Haluatko edetä PHP:n ja OOP:n hallitsemisessa? Kiinnitä huomiota premium-oppitunteihin verkkosivustojen rakentamisen eri näkökohdista, mukaan lukien ohjelmointi PHP:llä, sekä ilmainen kurssi oman CMS-järjestelmän luomisesta PHP:llä alusta alkaen OOP:n avulla:

Piditkö materiaalista ja haluatko kiittää minua?
Jaa vain ystäviesi ja kollegoidesi kanssa!