Skripti on testattu onnistuneesti PHP 5.3.3 ja PHP 5.6.3 versioissa.
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).
Kun olet suorittanut vähintään yhden rekisteröinnin, voit siirtyä JÄRJESTELMÄNVALVOJA-osioon. Kirjaudu HALLINTAPANEELIIN:
Voit myös löytää käyttäjän nopeasti hänen sähköpostiosoitteestaan tehdäksesi tämän kirjoittamalla tunnetun sähköpostiosoitteen HAKU-kenttään ja napsauttamalla 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ä.
. Jokainen osa voidaan nimetä elementin avulla .
Yhteystiedot
Nimi
Sähköposti
Riisi. 1. Lomakekenttien ryhmittelyJotta lomake olisi helpompi ymmärtää käyttäjille, lomakkeen kenttiin lisätään tekstiä, joka antaa esimerkin syöttötiedoista. Tämän tyyppistä tekstiä kutsutaan jokerimerkkitekstiksi, ja se luodaan käyttämällä paikkamerkkiattribuuttia.
Pakolliset kentät on myös korostettava. Ennen HTML5:tä kentän nimen vieressä käytettiin tähti * -symbolia. Uusi spesifikaatio ottaa käyttöön erityisen pakollisen attribuutin, jonka avulla voit merkitä pakollisen kentän merkintätasolla. Tämä määrite ohjeistaa selainta (olettaen, että se tukee HTML5:tä) olemaan lähettämättä tietoja sen jälkeen, kun käyttäjä on napsauttanut Lähetä, ennen kuin määritetyt kentät on täytetty.
Ulkonäön muuttamiseksi tekstikenttä Tarkennusta vastaanotettaessa käytetään tarkennuksen pseudoluokkaa. Voit esimerkiksi tummentaa nykyisen kentän taustaa tai lisätä värillisen reunuksen, jotta se erottuu muista:
Input:focus ( tausta: #eaeaea; )
Toinen hyödyllinen HTML5-attribuutti on automaattitarkennus. Sen avulla voit automaattisesti asettaa tarkennuksen haluttuun alkukenttään elementeille Ja
Esimerkki rekisteröintilomakkeen luomisesta
HTML-merkintä
Huomautus action="form.php" - linkki lomakkeenkäsittelytiedostoon. Luo tiedosto UTF-8-koodauksella, lähetä se palvelimelle ja korvaa action="form.php" palvelimellasi olevan tiedoston polulla.
Riisi. 2. Ulkomuoto oletuslomakkeet Kuten kuvasta näkyy, jokaisella lomakeelementillä on oletusselaimen tyylit. Tyhjennetään tyylit ja tyylitetään lomakeelementit.
Form-wrap (leveys: 550px; tausta: #ffd500; reunuksen säde: 20px; ) .form-wrap *(siirtymä: .1s lineaarinen) .profile (leveys: 240px; float: vasemmalle; tekstin tasaus: keskellä; täyte 30 kuvapistettä form div:after ( sisältö: ""; näyttö: taulukko; tyhjennä: molemmat; ) form div ( marginaali-ala: 15px; sijainti: suhteellinen; ) h1 ( font-koko: 24px; font-weight: 400; sijainti: suhteellinen ; margin-top: 50px %); ) /******************* lomakeelementtien tyyli ******************** ** / label, span ( näyttö: block; font-size: 14px; margin-bottom: 8px; ) input, input (reunuksen leveys: 0; ääriviivat: ei mitään; marginaali: 0; leveys: 100%; täyte: 10px 15px; tausta: #e6e6e6 ) .radio label ( sijainti: suhteellinen; täyte-vasen: 50px; kohdistin: osoitin; leveys: 50 %; float: vasen; rivin korkeus: 40px; ) .radio input ( sijainti: absoluuttinen; peittävyys: 0; ) .radio -ohjaus ( sijainti: absoluuttinen; ylhäällä: 0; vasen: 0; korkeus: 40px; leveys: 40px; tausta: #e6e6e6; reunuksen säde: 50%; tekstin tasaus: keskellä; ) .male:before (sisältö: " \f222"; font-family: FontAwesome; font-weight: bold; ) .female:before (sisältö: "\f221"; font-family: FontAwesome; font-weight: bold; ) .radio label:hover input ~ . radio-ohjaus, .radiol input:focus ~ .radio-control ( box-shadow: inset 0 0 0 2px rgba(0,0,0,.2); ) .radio input:checked ~ .radio-control ( väri: punainen */ -moz-appearance: none; /*poista valinta Mozilla Firefoxissa*/ ) select::-ms-expand ( näyttö: ei mitään; /*poista valinta IE:ssä*/ ) .select-arrow ( sijainti: absoluuttinen ; yläreuna: 38px; oikea: 15px; leveys: 0; korkeus: 0; osoitintapahtumat: ei mitään; /*aktivoi luettelon näyttö, kun napsautat nuolta*/ border-style: solid; reunan leveys: 8px 5px 0 5px; border-color: #7b7b7b läpinäkyvä läpinäkyvä läpinäkyvä; ) -painike ( täyte: 10px 0; reunuksen leveys: 0; näyttö: lohko; leveys: 120px; marginaali: 25px automaattinen 0; tausta: #60e6c5; väri: valkoinen; fontin koko: 14px; ääriviivat: ei mitään; tekstin muunnos : isot kirjaimet ) /*********************** lisää mukautuvuutta muotoon ****************** ** **/ @media (enintään leveys: 600 pikseliä) ( .form-wrap (marginaali: 20px automaattinen; enimmäisleveys: 550px; leveys: 100%;) .profiili, muoto (kelluke: ei mitään; leveys: 100 % ;) h1 (margin-top: auto; täyttö-ala: 50px;) muoto (reunuksen säde: 0 0 20px 20px;) )
Form.php tiedosto
" . "\r\n"; $headers .= "Piilokopio: sähköpostisi." "\r\n"; if(!empty($nimi) && !empty($sex) && !empty($email) && ! empty($country) && filter_var($email, FILTER_VALIDATE_EMAIL))( mail($sähköposti, $aihe, $msg, $headers); echo "Kiitos! Rekisteröidyt onnistuneesti."; ) ?>
Huomautus Määritä $subject-muuttujassa teksti, joka näytetään kirjeen otsikkona; Your_name - tässä voit määrittää nimen, joka näytetään keneltä kirje on -kentässä; korvaa sivustosi_osoite rekisteröintilomakkeen sivuston osoitteella; korvaa_sähköpostiosoitteesi sähköpostiosoitteellasi; $headers .= "Bcc: your_email". "\r\n"; lähettää Piilokopio sähköpostiosoitteeseesi.
Jäsenyyteen perustuvan sivuston luominen tuntuu aluksi pelottavalta tehtävältä. Jos olet joskus halunnut tehdä tämän itse, mutta luovutit, kun aloit miettimään, kuinka aiot koota sen PHP-taitojasi käyttämällä, tämä artikkeli on sinua varten. Aiomme opastaa sinut jäsenyyteen perustuvan sivuston luomisen kaikilla osa-alueilla turvallisilla jäsenillä suojattu alue salasanalla.
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 sisäänkirjautumislomake ja käytä sitä salliaksesi 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:
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änimeä"); 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:
function CreateTable() ( $qry = "Luo taulukko $this->tablename (". "id_user INT NOT NULL AUTO_INCREMENT ," "nimi VARCHAR(128) NOT NULL ," "sähköposti VARCHAR(64) NOT NULL ," " "puhelinnumero VARCHAR(16) NOT NULL ," "käyttäjänimi VARCHAR(16) NOT NULL ", "salasana VARCHAR(32) NOT NULL ", "vahvistuskoodi VARCHAR(32) ," " ")"; this->connection)) ( $this->HandleDBERror("Virhe luotaessa taulukkoa \nkysely oli\n $qry"); return false; ) return true )
id_user -kenttä sisältää käyttäjän yksilöllisen tunnuksen, ja se on myös pääavain pöydästä. 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 sinun rekisteröityminen ".$this->sitename."\r\n". "Klikkaa alla olevaa linkkiä vahvistaaksesi rekisteröitymisesi.\r\n". "$confirm_url\r\n". "\r\n". "Terveisin,\r\n". "$this->sitename;" return false ;
Päivitykset 9. tammikuuta 2012 Nollaa salasana/Vaihda salasana -ominaisuudet on lisätty Koodi on nyt jaettu GitHubissa.
Tervetuloa takaisin= $fgmembersite->UserFullName(); ?>!
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 eniten yksinkertainen rekisteröinti sivustolla PHP + MySQL:llä. 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/ ). Luo taulukko käyttäjiä , siinä on 3 kenttää.
Luon sen sisään mysql-tietokanta , voit luoda toisessa tietokannassa. Aseta seuraavaksi arvot kuvan mukaisesti:
2. Yhteys tähän taulukkoon vaaditaan. Luodaan tiedosto bd.php . Sen sisältö:
$db = mysql_connect("oma MySQL-palvelimesi","kirjautuminen tälle palvelimelle","salasana tälle palvelimelle"); mysql_select_db ("tietokannan nimi, johon muodostamme yhteyden", $db); ?>
Minun tapauksessani se näyttää tältä:
$db = mysql_connect("localhost","käyttäjä","1234"); mysql_select_db("mysql",$db); ?>
Tallentaa 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
4. Luo tiedosto , joka syöttää tiedot tietokantaan ja tallentaa käyttäjän. save_user.php (kommentit sisällä):
{ } //jos kirjautumistunnus ja salasana syötetään, käsittelemme ne niin, että tagit ja skriptit eivät toimi, et koskaan tiedä mitä ihmiset saattavat syöttää //poista ylimääräiset välilyönnit $sisäänkirjautuminen = trim($login); $salasana = trimma($salasana); // muodostaa yhteyden tietokantaan // tarkista, onko käyttäjä samalla kirjautumistunnuksella $result = mysql_query("SELECT id FROM käyttäjiltä WHERE login="$kirjautuminen"",$db); if (!empty($myrow["id"])) ( exit("Anteeksi, antamasi kirjautumistunnus on jo rekisteröity. Anna toinen kirjautumistunnus."); } // jos näin ei ole, tallenna tiedot $result2 = mysql_query("LISÄÄ käyttäjiin (sisäänkirjautuminen,salasana) VALUES("$kirjautuminen","$salasana")"); // Tarkista, onko virheitä jos ($tulos2=="TRUE") { echo "Olet onnistuneesti rekisteröitynyt! Nyt voit siirtyä sivustolle. Kotisivu"; } muu( echo "Virhe! Et ole rekisteröitynyt."; } ?>
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ä):
// koko menettely toimii istunnoissa. Se on paikka, jossa käyttäjän tiedot tallennetaan hänen ollessaan sivustolla. On erittäin tärkeää käynnistää ne heti sivun alussa!!! session_start(); ?>
Kotisivu Kotisivu // Tarkista, ovatko kirjautumis- ja käyttäjätunnuksen muuttujat tyhjiä jos (tyhjä($_SESSION["kirjautuminen"]) tai tyhjä($_SESSION["id"])) { // Jos tyhjä, emme näytä linkkiä echo "Olet kirjautunut sisään vieraana Tämä linkki on vain rekisteröityneiden käyttäjien käytettävissä"; } muu {Tiedostossa index.php Näytämme linkin, joka on avoinna vain rekisteröityneille käyttäjille. Tämä on skriptin koko pointti - pääsyn rajoittaminen mihin tahansa tietoon.
6. Jäljellä on tiedosto, jossa vahvistetaan syötetty käyttäjätunnus ja salasana. testreg.php (kommentit sisällä):
session_start();// koko menettely toimii istunnoissa. Se on paikka, johon käyttäjän tiedot tallennetaan hänen ollessaan sivustolla. On erittäin tärkeää käynnistää ne heti sivun alussa!!! if (isset($_POST["kirjautuminen"])) ( $login = $_POST["kirjautuminen"]; if ($login == "") ( unset($login);) ) //kirjoita käyttäjän antama kirjautumistunnus käyttäjä $login-muuttujaan, jos se on tyhjä, tuhoa muuttuja if (isset($_POST["salasana"])) ( $salasana=$_POST["salasana"]; if ($salasana =="") ( unset($salasana);) ) //laita käyttäjän syöttämä salasana $password-muuttujaan, jos se on tyhjä, tuhoa muuttuja if (tyhjä($login) tai tyhjä($salasana)) //jos käyttäjä ei antanut kirjautumistunnusta tai salasanaa, annamme virheilmoituksen ja pysäytämme komentosarjan { exit("Et ole syöttänyt kaikkia tietoja, mene takaisin ja täytä kaikki kentät!"); } //jos kirjautumistunnus ja salasana syötetään, käsittelemme ne niin, että tagit ja skriptit eivät toimi, et koskaan tiedä mitä ihmiset saattavat syöttää $kirjautuminen = viivat($kirjautuminen); $kirjautuminen = htmlspecialchars($login); $salasana = viivat($salasana); $salasana = htmlerikoismerkit($salasana); //poista ylimääräiset välilyönnit $sisäänkirjautuminen = trim($login); $salasana = trimma($salasana); // muodostaa yhteyden tietokantaan include("bd.php");// bd.php-tiedoston on oltava samassa kansiossa kaikkien muiden kanssa, jos se ei ole, vaihda polku
$result = mysql_query("SELECT * FROM käyttäjiltä WHERE login="$kirjautuminen"",$db); //hakea tietokannasta kaikki tiedot käyttäjästä syötetyllä kirjautumistunnuksella $myrow = mysql_fetch_array($tulos); if (tyhjä($myrow["salasana"])) { //jos käyttäjää, jolla on syötetty kirjautumistunnus, ei ole olemassa } muu( //jos on, tarkista salasanat if ($myrow["salasana"]==$salasana) ( //jos salasanat täsmäävät, käynnistämme istunnon käyttäjälle! Voit onnitella häntä, hän pääsi sisään! $_SESSION["kirjautuminen"]=$myrow["kirjautuminen"]; $_SESSION["id"]=$myrow["id"];//näitä tietoja käytetään hyvin usein, joten sisäänkirjautunut käyttäjä "kultaa ne mukanaan" echo "Olet onnistuneesti saapunut sivustolle! Kotisivu"; } muu( //jos salasanat eivät täsmää
Exit("Anteeksi, antamasi kirjautumistunnus tai salasana on virheellinen."); } } ?>
OK, nyt kaikki on ohi! Oppitunti voi olla tylsä, mutta erittäin hyödyllinen. Tässä näkyy vain ajatus rekisteröinnistä, jonka jälkeen voit parantaa sitä: lisää suojausta, suunnittelua, tietokenttiä, lataa avatareja, kirjaudu ulos tilistä (tämän tekee vain tuhoamalla muuttujat istunnosta toiminnolla pois päältä ) ja niin edelleen. Onnea!
Tarkistin kaiken, toimii oikein!