Käsikirjoitus lomakkeen lähettämiseen sähköpostitse. Yksinkertaisin tapa lähettää tietoja sähköpostitse HTML:n ja PHP:n avulla

Yksi yleisimmistä käytännön tehtävistä on palautelomakkeen toteuttaminen. Tarkoitatko sen HTML-koodin kirjoittamista, sen suunnittelua CSS:ssä, PHP-skriptin luomista, joka käsittelee käyttäjältä saadut tiedot ja lähettää sen postitse, JS-komentosarjan kirjoittamista, joka tarkistaisi syötettyjen tietojen riittävyyden lomakkeesta, suojaa ideamme roskapostista, jotta postilaatikkomme ei romahtanut bot-hyökkäyksiltä.

Kaikkia yllä olevia kohtia käsitellään katsauksessamme ja kommentoimme niitä yksityiskohtaisesti.

Joten aloitetaan palautelomakkeen luominen:

HTML

Ensinnäkin kirjoitamme HTML-koodin, joka määrittää kentät, jotka käyttäjä täyttää. Ne virallistetaan tulevaisuudessa. Lomakekoodi näyttää tältä:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" >Nimi:< input maxlength= "30" type= "text" name= "name" /> < label for = "phone" >Puhelin:< input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" >Sähköposti:< input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" >Viesti:< textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Lähettää" />

Ja visuaalisesti se näyttää nyt tältä:

Olen samaa mieltä, toistaiseksi kaikki on rumaa eikä mikään ole selvää, mutta olemme vasta aloittaneet.

Katsotaanpa yllä olevaa koodia yksityiskohtaisesti:

  • < form method= "post" action= "mail.php" > …


    Lomakkeen luomiseksi sinun on käytettävä lomaketunnistetta. Hän määrittää kooditulkin lomakkeen alun ja lopun. Sillä, kuten millä tahansa tunnisteella, on koko joukko attribuutteja, mutta lomakkeen toimimiseen tarvitaan vain kaksi, nämä ovat metodi (tapa, jolla pyyntö lähetetään palvelimelle, viestiä käytetään vakiona lomakkeissa) ja toiminta ( osoittaa polun lomakkeenkäsittelijätiedostoon, nimittäin Tämä tiedosto sisältää PHP-skriptin, joka lähettää sitten käyttäjän syöttämät arvot meille sähköpostitse Tässä tapauksessa näemme, että tämä tiedosto on nimeltään mail.php ja se sijaitsee samassa sivustohakemistossa kuin tarkastelemamme sivu).
  • < input maxlength= "30" type= "text" name= "name" />


    Seuraavaksi meillä on syötteet. Nämä ovat itse asiassa itse lomakekenttiä, joihin käyttäjät syöttävät tarvitsemamme tiedot (type="text" tarkoittaa, että tämä on tekstiä). Maxlength-attribuutti määrittää, kuinka monta merkkiä käyttäjä voi kirjoittaa tiettyyn lomakekenttään. Tärkein määrite on nimi - se määrittää tietyn kentän nimen. Näillä nimillä PHP-skripti käsittelee myöhemmin siihen syöttämät tiedot. Halutessasi voit myös asettaa paikkamerkkiattribuutin, joka näyttää kentän sisällä tekstiä, joka katoaa, kun kohdistin asetetaan sen sisään. Yksi paikkamerkkien ongelmista on, että jotkin vanhemmat selaimet eivät tue sitä.
  • < label for = "name" >Nimi:


    Käytetään, jos olemme hylänneet paikkamerkit. Tavallinen kentän allekirjoitus, for-attribuutti kertoo mihin kenttään tämä allekirjoitus viittaa. Arvo ilmaisee meitä kiinnostavan kentän nimen.
  • < textarea rows= "7" cols= "50" name= "message" >


    Kuten syöttö, se on tarkoitettu käyttäjälle tietojen syöttämiseen, vain tällä kertaa kenttä on räätälöity pitkille viesteille. Rivit määrittää kentän koon riveinä, sarakkeet merkeissä. Yleensä ne määrittävät kenttämme korkeuden ja leveyden.
  • < input type= "submit" value= "Lähettää" />


    Type="submit" kertoo, että tämä on painike lomakkeen lähettämistä varten, ja arvo määrittää tekstin, joka tulee tämän painikkeen sisällä.
  • < div class = "right" >


    käytetään vain lomakkeen visuaaliseen jatkosuunnitteluun.
CSS

Jotta palautelomakkeemme näyttäisi edustavalta, se on muotoiltava. Saadaksesi seuraavan tuloksen:

Käytimme tätä koodia:

lomake ( tausta: #f4f5f7; täyte: 20px; ) lomake . vasen, muoto . oikea (näyttö: rivi-lohko; pystytasaus: yläreuna; leveys: 458px; ) muoto . oikea ( täyttö- vasen: 20px; ) etiketti ( näyttö: lohko; kirjasinkoko: 18px; teksti- tasaus: keskellä; marginaali: 10px 0px 0px 0px; ) syöttö, tekstialue ( reunus: 1px kiinteä #82858D; täyte: 10px; kirjasinkoko: 16 kuvapistettä; leveys: 436 kuvapistettä väri: #fff; tekstin muunnos: isot kirjaimet;

En näe järkeä kuvailla CSS:ää yksityiskohtaisesti. Kiinnitän huomiosi vain tärkeisiin kohtiin:

  • Lomakkeen jokaiselle tunnisteelle ei tarvitse kirjoittaa mallia. Yritä rakentaa valitsimet niin, että voit suunnitella kaikki tarvitsemasi elementit muutamalla koodirivillä.
  • Älä käytä tarpeettomia tyyppitunnisteita viivojen katkaisemiseen ja sisennysten luomiseen< br>, < p>jne. CSS näytön kanssa: lohko ja marginaali täyteominaisuuksilla selviää hyvin näistä tehtävistä. Lisää siitä, miksi sinun ei pitäisi käyttää sitä< br>asettelussa yleensä voit lukea artikkelista Tag br, mutta onko se todella välttämätöntä? .
  • Älä käytä lomakkeissa taulukkoasettelua. Tämä on ristiriidassa tämän tunnisteen semantiikan kanssa, ja hakukoneet rakastavat semanttista koodia. Dokumentin visuaalisen rakenteen muodostamiseksi tarvitsemme vain div-tageja ja CSS:ssä määritellyt näyttöominaisuudet: inline-block (järjestää lohkot riviin) ja vertical-align: top (estää niitä leviämästä näytölle) , aseta ne halutulle korkeudelle ja voila, ei mitään ylimääräistä ja kaikki on sijoittuneena haluamallamme tavalla.
  • Niille, jotka haluavat säästää aikaa verkkosivujen suunnittelussa, voin suositella CSS-kehysten käyttöä verkkosivustojen luomisessa, erityisesti itse kirjoitettujen. Valintani tässä suhteessa on Twitter Bootstrap. Voit katsoa oppitunnin lomakkeiden suunnittelusta sen avulla.

    PHP

    No, on aika saada muoto toimimaan.

    Siirrymme sivuston juurihakemistoomme ja luomme sinne mail.php-tiedoston, jolle määritimme aiemmin polun lomaketunnisteen action-attribuutissa.

    Lopulta hänen koodinsa näyttää tältä:

    Viestisi on lähetetty onnistuneesti

    Voit ohittaa tämän asiakirjan HTML- ja CSS-osien keskustelun. Pohjimmiltaan tämä on tavallinen verkkosivusto, jonka voit suunnitella toiveidesi ja tarpeidesi mukaan. Katsotaanpa sen tärkeintä osaa - PHP-skriptiä lomakkeen käsittelyyn:

    $takaisin = "

    tule takaisin

    " ;

    Tällä rivillä luomme linkin palataksemme edelliselle sivulle. Koska emme tiedä etukäteen, miltä sivulta käyttäjä pääsee tälle sivulle, tämä tehdään pienellä JS-toiminnolla. Tulevaisuudessa yksinkertaisesti käytämme tätä muuttujaa näyttääksemme sen tarvitsemissamme paikoissa.

    if (! tyhjä ($_POST [ "nimi" ] ) ja ! tyhjä ($_POST [ "puhelin" ] ) ja ! tyhjä ($_POST [ "posti" ] ) ja ! tyhjä ($_POST [ "viesti" ] ) ) ( //käsittelijän sisäinen osa ) else ( echo "Lähetäksesi viestin, täytä kaikki kentät! $back " ; exit ; )

    Lisäämme tähän lomaketarkistuksen varmistaaksemme, että kentät ovat täynnä. Kuten arvasit, $_POST["nimi"]-osaan lainausmerkeissä kirjoitamme syötteidemme name-attribuutin arvon.

    Jos kaikki kentät on täytetty, skripti alkaa käsitellä tietoja sisäisessä osassaan, mutta jos vähintään yksi kenttä ei ole täytetty, tulee käyttäjän näytölle viesti, jossa häntä pyydetään täyttämään kaikki tiedot. lomakkeen kentät toistavat "Jos haluat lähettää viestin, täytä kaikki kentät $back" ja linkki palataksesi edelliselle sivulle, jonka loimme aivan ensimmäisellä rivillä.

    Seuraavaksi liitämme lomakkeenkäsittelijän sisäosaan:

    $nimi = trimma(kaistale_tunnisteet($_POST["nimi"])); $puhelin = trimma(nauhat_tunnisteet($_POST["puhelin"])); $posti = trim(nauhat_tunnisteet($_POST["posti"])); $viesti = trim(nauhat_tunnisteet($_POST["viesti"]));

    Siten tyhjensimme käyttäjän syöttämät tiedot html-tunnisteista ja ylimääräisistä välilyönneistä. Näin voimme suojautua haitallisen koodin vastaanottamiselta meille lähetetyissä viesteissä.

    Tarkistuksista voidaan tehdä monimutkaisempia, mutta tämä on sinun harkintasi. Olemme jo asentaneet minimaalisen suojauksen palvelinpuolelle. Teemme loput asiakaspuolella JS:n avulla.

    En suosittele palvelinpuolen lomakesuojauksen kokonaan luopumista JS:n hyväksi, koska vaikka se on erittäin harvinaista, on olemassa ainutlaatuisia, joissa JS on poistettu käytöstä selaimessa.

    Tunnisteiden puhdistamisen jälkeen lisää viestin lähettäminen:

    mail ("[email protected]" , "Kirje osoitteesta_sivustosi_osoite" , "Kirjoitin sinulle: " . $nimi . "
    Hänen numeronsa: " . $phone ."
    Hänen sähköpostiosoitteensa: " . $mail ."
    Hänen viestinsä: " . $message, "Content-type:text/html;charset=windows-1251" ) ;

    Tämä linja on vastuussa viestin luomisesta ja lähettämisestä meille. Se täytetään seuraavasti:

  • "[email protected]" – tähän laitat sähköpostisi lainausten väliin
  • "Kirje sivustosi_osoitteesta" on sähköpostiisi lähetettävän viestin aihe. Voit kirjoittaa tänne mitä tahansa.
  • "Kirjoitti sinulle: ".$name."< br />Hänen numeronsa: ".$phone."< br />Hänen sähköpostiosoitteensa: ".$mail."< br />Hänen viestinsä: ".$message – muodostamme itse viestin tekstin. $nimi – lisäämme käyttäjän täyttämät tiedot siirtymällä edellisen vaiheen kenttiin, lainausmerkeissä kuvataan mitä tämä kenttä tarkoittaa, tagilla< br />Katkaisemme linjan niin, että viesti kokonaisuudessaan on luettavissa.
  • Content-type:text/html;charset=windows-1251 - lopussa on selkeä osoitus viestissä lähetetystä tietotyypistä ja sen koodauksesta.
  • TÄRKEÄ!

    Asiakirjan "päässä" määritetty koodaus (< meta http- equiv= "Content-Type" content= "text/html; charset=windows-1251" />), koodauksen viestistä Content-type:text/html;charset=windows-1251 ja yleensä PHP-tiedoston koodauksen on vastattava, muuten postitse tulleissa viesteissä näytetään "hulluja sanoja" venäjän tai Englanninkieliset kirjaimet.

    Monet eivät ilmoita suoraan lähetettävän viestin koodausta, mutta joissakin sähköpostiohjelmissa tämä voi aiheuttaa ongelmia jatkossa (postiin lähetetään lukukelvottomia sähköposteja), joten suosittelen sen määrittämistä kuitenkin.

    Lomakkeesta tarkistetaan syötettyjen tietojen riittävyys

    Jotta käyttäjät eivät vahingossa unohda kenttiä ja täyttävät kaiken oikein, on syytä tarkistaa syötetyt tiedot.

    Tämä voidaan tehdä sekä PHP:ssä palvelinpuolella että JS:ssä asiakaspuolella. Käytän toista vaihtoehtoa, koska näin ihminen voi heti selvittää, mitä on tehnyt väärin, ja korjata virheen ilman ylimääräisiä sivusiirtymiä.

    Liitämme komentosarjakoodin samaan tiedostoon, jossa meillä on lomakkeen HTML-osa. Meidän tapauksessamme se näyttää tältä:

    < script>funktio checkForm(form) ( var nimi = muoto. nimi. arvo; var n = nimi. match(/ ^[ A- Za- zA- Jaa- z ] * [ A- Za- zA- Ja- z ] + $/ ) ; if (! n) ( alert("Nimi on annettu väärin, korjaa virhe") ; return false ; ) var phone = lomake vastaa ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ; if (! p) ( alert("Puhelin syötetty väärin") ; return false ; ) var mail = lomake. A- Za- z0- 9 ] [ A- Za- z0- 9 \ _- ] * [ A- Za- z0- 9 _] *@ ([ A- Za- z0- 9 ] + ([ A- Za. - z0- 9 - ] * [ A- Za- z0- 9 ] + ) * \ ) + [ A- Za- z] + $/ ) ( alert("Sähköposti on syötetty väärin , korjaa virhe" ) ; return false;) return true;)

    No, nyt tavallinen analyysi:

    Jotta voimme tarkistaa lomakkeen, kun napsautamme Lähetä-painiketta, liitämme skriptimme käynnistyksen lomaketunnisteeseen:

    < form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

    Otetaan nyt tarkistuslista kohta kohdalta:


    Kuten näet, tällainen minisekki on kirjoitettu jokaiselle kentällemme. Olen korostanut yhden kentän tarkistusta kuvakaappauksessa punaisella ruudulla, sillä muiden kenttien rakenne on samanlainen, ja jos on tarvetta lisätä kenttä tai poistaa se, voit nyt tehdä tämän helposti.

    Tässä artikkelissa tarjoamme kokemuksemme lomakkeiden yleisestä lähettämisestä sähköpostiin ja täydellisyyden tarkistamiseen PHP:n ja Jqueryn avulla. Laajennus voidaan helposti integroida mihin tahansa verkkosivustoon ilman koodin ja arkkitehtuurin syvällistä analysointia. Tässä artikkelissa tarkastellaan laajennuksen toimintaperiaatetta, alustusta, konfigurointia ja asennusta.

    Universaalin lomakkeen lähetyslaajennuksen erityisominaisuudet ja ominaisuudet:

    • Lomakkeiden täydellisyyden tarkistaminen mahdollisuudella ryhmitellä elementtejä ja näyttää vihjeitä käyttäjälle
    • Monet lähetettävät mallit, joissa on mahdollisuus valita malli automaattisesti
    • Lomakekäyttö ilman uudelleenlatausta - AJAX
    • Onnistuneiden ja epäonnistuneiden lähetysten käsittely
    • Ainutlaatuiset sähköpostin otsikot
    • Tiedostojen lähettäminen sähköpostitse

    Universaali laajennus lomakkeiden lähettämiseen sähköpostivahvistuksella koostuu pääosista:

    • HTML-lomake täytettäväksi
    • JQuery-skripti AJAXin tarkistamiseen ja lähettämiseen
    • PHP-skripti lomakkeesta lähetettyjen tietojen käsittelyn automatisoimiseen, kirjemallien yhdistämiseen ja lähetystuloksen käsittelyyn
    • PHPMailer smtp-asiakkaana kirjeen lähettämiseen
    • Sähköpostin lähetysmallien TPL-tiedostot
    Esimerkkilaajennuksen asentaminen verkkopalvelimeen ja lomakkeen lähettäminen sähköpostiin ensimmäistä kertaa

    Kun olet ladannut ja purkanut laajennuksen, näemme seuraavan tiedosto- ja hakemistopuun:

    /css/style.css // Päätyylitiedosto /css/font-awesome.css // Fonttityylitiedosto FontAwesome /fonts/* // Fonttitiedostot /js/script.js // JQuery-skripti tarkistusta ja AJAX-lomakkeen lähettämistä varten / mail -tpl/* // Mallitiedostohakemisto /php/phpmailer/* // PHPMailer-tiedostohakemisto /php/config.php // SMTP-yhteyden määritykset /php/function-send-form.php // Prosessointi- ja yleislähetystoiminto postitse Sähköposti index.html // HTML-lähetyslomake

    Jotta voimme saada lisää kokemusta esittelylomakkeen lähettämisestä, meidän on määritettävä /php/config.php-tiedosto:

    $__smtp = array("host" => "smtp.host.ru", "debug" => 0, "auth" => true, "port" => "465", "username" => " [sähköposti suojattu]", "password" => "123456", "adreply" => " [sähköposti suojattu]", "replyto" => " [sähköposti suojattu]", "secure" => "ssl");

    Emme viipyy yksityiskohtaisesti config.php-tiedoston määritysmenettelyssä.

    Onnistuneen ja oikean määritystiedoston muokkauksen jälkeen meidän on sijoitettava arkistotiedostot mille tahansa verkkopalvelimelle. Tämä komentosarja ei toimi selaintilassa paikallisten tiedostojen katseluun. Lataa kaikki sisältö mihin tahansa verkkopalvelimen kansioon ja avaa linkki selaimen osoitepalkin kautta:

    http(https)://domen.domen/path/to/dir/index.html

    Jos avaamme esittelysivun kuvauksella ja lomakkeella, kaikki on tehty oikein. Seuraavaksi täytämme lomakkeen ja odotamme "Lähetä"-painiketta. Jos lomake on lähetetty onnistuneesti, näytämme vastaavan viestin. Jos lähetyksen aikana tapahtuu virheitä, virhetiedot näytetään. Emme myöskään harkitse PHPMailer-virheenkorjausmenettelyä.

    Laajennuksen asennus ja integrointi yleistä lomakkeiden lähettämistä varten sähköpostitse verkkosivustolle

    Laajennuksen asentaminen olemassa olevaan sivustoon tarvitset:

    1. Kopioi seuraava luettelo tiedostoista ja hakemistoista: /js/script.js // JQuery-skripti tarkistusta ja AJAX-lomakkeiden lähettämistä varten /mail-tpl/* // Mallitiedostohakemisto /php/phpmailer/* // PHPMailer-tiedostohakemisto / php/config .php // SMTP-yhteyden määritykset /php/function-send-form.php // Toiminto käsittelyä ja yleistä sähköpostiin lähettämistä varten2. Luo uusi tai muokkaa olemassa olevaa lomaketta seuraavan esimerkin avulla: PALAUTE radio 1 radio 2 radio 3 Olen lukenut ja hyväksyn säännöt Lähetä

    Avainlomakemääritteiden kuvaus ja määrittäminen, jotta komentosarja toimii oikein. Valinnaiset komentosarjaparametrit on korostettu lihavoidulla kursiivilla:

    2.1. muototunniste:

    nimi - Määrittää tpl-mallin nimen, kun vastaanotettu POST-taulukko käsitellään funktio-send-form.php-komentosarjalla. Kirjainmallin nimen on vastattava name-attribuutin arvoa ja se muodostetaan maskilla ".tpl"

    menetelmä- määritteen arvo on aina POST. Muuten PHP-lomakkeen käsittelytoiminto ei toimi. Oletusarvoisesti tietojenkäsittelykomentofunktio-send-form.php keskittyy vain POST-lomakkeen parametreihin.

    class - attribuutti voi sisältää minkä tahansa määrän luokkia, mutta jotta JQuery-skripti toimisi oikein, lähettäjäluokan on oltava läsnä. Tämä luokka seuraa lomakkeen lähetystapahtumaa sivustollasi.

    2.2. Lomakkeen sisällä täytettävät kentät voivat sisältää seuraavat attribuutit:

    nimi - määrittää POST-parametrin nimen

    tyyppi - lomakkeen oikean toiminnan ja lomakeelementtityyppien tunnistamisen vuoksi attribuutin käyttöä suositellaan pakolliseksi

    otsikko- näyttää tagissa vihjeen, jonka luokat määrittävät nykyisen tunnisteen vahvistus-attribuutissa

    luokkaa- kaikkien täytettävien ja tarkistettavien kenttien on sisällettävä attribuutin arvossa luokka "Y-required", "group000_Y-required". group000_Y-required - ryhmittelee vaaditut elementit ryhmiin tarkistaakseen, onko jokin ryhmäelementeistä täynnä. Radiota ei tarvitse ryhmitellä, ryhmittely tapahtuu name-attribuutilla, kuten tyypin kehittäjät ovat halunneet

    vahvista tiedot- attribuutin arvo määrittää tunnisteen luokan, jossa varoitus tyhjästä lomakeelementistä näytetään

    2.3. Luokkavastauksen sisältävä tunniste on oletusarvoisesti määritetty luokaksi, joka näyttää järjestelmäviestejä lomakkeen toiminnan tuloksista, näyttää viestit laajennuksen virheenkorjaustilassa ja varoituksia väärin täytettyistä lomakeelementeistä.

    Tämän lomakkeen tyylitelmä voidaan ottaa esimerkistä tai voit kehittää omasi.

    3. Lomakkeen muokkaamisen tai luomisen seurauksena JQueryn on käsiteltävä lomake AJAX-toiminnolla. Lomakkeen tulos tulee palauttaa tunnisteeseen, jossa on "response"-luokka. Jos jokin ei toimi oikein, katso esimerkkiä, joka on liitetty tämän artikkelin arkistona. Universaalin laajennuksen toimintaperiaate lomakkeen lähettämiseksi sähköpostiin vahvistuksen kanssa

    Lisäosa lomakkeen lähettämiseen sähköpostiin toimii useassa vaiheessa ja seuraavan periaatteen mukaisesti.

    1. Lomakkeen lähetystapahtuma, jossa on lähettäjäluokka, käynnistyy.

    2. Lomakkeen lähetystapahtuma sieppaa JQuery-komentosarjan ja käynnistää prosessin lomakkeen oikean täytön tarkistamiseksi.

    3. Mikäli lomakkeen täyttösääntöjä rikotaan, skripti lisää väärän luokan pakollisiin kenttiin ja, jos tarvittavat otsikko- ja vahvistus-attribuutit ovat olemassa, näyttää viestejä, joissa on täyttövihjeitä.

    4. Jos lomakkeen tarkistus onnistuu, AJAX-lomakkeen lähetystoiminto käynnistetään pyynnöllä action-attribuutissa määritetylle käsittelijälle (linkille).

    5. Palvelimen käsittelijä vastaanottaa AJAX-pyynnön tarvittavat parametrit, yhdistää vaaditun kirjemallin (lomakkeen name-attribuutin perusteella - POST-malliparametri). Seuraavaksi alustetaan PHPMailer-luokka, muodostetaan kirjeen runko, otsikot ja menettely kirjeen lähettämiseksi sähköpostiin.

    6. Jos kirjeen lähetys onnistuu tai epäonnistuu, palvelimen käsittelijä palauttaa vastaavan viestin JQuery-komentosarjan sivulle.

    Säännöt tpl-kirjemallien luomiseen ja muokkaamiseen

    Emme ota huomioon html-kirjainten asettelua koskevia sääntöjä. Katsotaanpa kirjemallin vaadittuja tpl-parametreja ja periaatetta mallien luomisesta skriptille lomakkeen yleistä lähettämistä varten sähköpostiin.

    Katsotaanpa esimerkkiä arkistosta:

    Pyydä takaisinsoittoa numerosta:

    Palautetiedot:

    Takaisinsoittoaika:

    Viestin teksti:

    // sisältää kirjaimen alatunnisteen, joka on samanlainen kuin otsikko

    Kuten voit korvata, lomaketunnisteiden nimiattribuuttien arvot ovat identtisiä tpl-kirjainmallin muuttujien nimien kanssa. Aivan oikein, näin se on!

    Laitoimme kaikki äskettäin luodut mallit mail-tpl-hakemistoon tiedostotunnisteella .tpl.

    tpl-asiakirjan nimen on vastattava sivuston lähetyslomakkeen name-attribuutin arvoa.

    Valmistuminen

    Ehkä tämä on kaikki tarvittavat tiedot, jotta voit käyttää tehokkaasti yleislaajennusta lomakkeiden lähettämiseen sähköpostiin vahvistuksen kanssa. Kiitos kaikille huomiosta!

    Tällä oppitunnilla tutustumme mail()-toimintoon esimerkkinä palautelomakkeen luomisesta PHP:llä ja sen jälkeen vastaanotetun tiedon lähettämisestä sähköpostitse.

    Tätä varten luomme kaksi tiedostoa - forma.php ja mail.php. Ensimmäinen tiedosto sisältää vain lomakkeen, jossa on kenttiä, joihin käyttäjä voi syöttää tietoja. Lomaketunnisteen sisällä on painike "Lähettää" ja action-attribuutti, joka viittaa käsittelijään - mail.php, josta pääsee käsiksi lomakkeen tietoihin, kun painiketta napsautetaan "Lähettää". Esimerkissämme lomaketiedot lähetetään web-sivulle nimeltä "/mail.php". Tämä sivu sisältää PHP-skriptin, joka käsittelee lomaketiedot:


    Lomaketiedot lähetetään POST-menetelmällä (käsitelty muodossa $_POST). $_POST on joukko muuttujia, jotka välitetään nykyiseen skriptiin POST-menetelmän kautta.

    Alta näet forma.php-tiedoston sisällön, jonka kentät käyttäjä itse täyttää jollain sivustolla. Kaikilla tiedonsyöttökentillä on oltava nimi-attribuutti; kirjoitamme arvot itse logiikan perusteella.




    PHP-kielinen palautelomake sähköpostitse


    Palautelomake PHP:llä





    Jätä viesti:
    Sinun nimesi:



    Sähköposti:

    Puhelinnumero:

    Viesti:

    Tekstialue voi sisältää rajoittamattoman määrän merkkejä-->







    Tältä lomake näyttää visuaalisesti selaimessa.

    Seuraavaksi kirjoitamme koodin mail.php-tiedostolle. Keksimme omat nimemme muuttujille. PHP:ssä muuttuja alkaa $-merkillä ja sitten muuttujan nimellä. Muuttujan tekstiarvo on lainausmerkeissä. Muuttujien avulla lomakkeen sisältö lähetetään järjestelmänvalvojan sähköpostiin sijoittamalla lomakeelementin nimi hakasulkeisiin - nimen arvo.

    Siten $_POST-taulukon tiedot siirretään vastaaviin muuttujiin ja lähetetään sähköpostiin käyttämällä postitoimintoa. Täytä lomake ja napsauta Lähetä-painiketta. Muista lisätä sähköpostiosoitteesi. Kirje saapui heti perille.

    Tässä artikkelissa opit luomaan palautelomakkeen (saamme käyttäjän sähköpostin), joka tarjoaa käyttäjälle mahdollisuuden liittää ja lähettää tiedostonsa palvelimelle. Myös tässä artikkelissa opit tarkistamaan ladatun tiedoston tyypin ja koon.

    Html-lomake tiedoston lähetyskentällä

    Alla on esitetty HTML-lomake, jossa on tiedoston lähetyskenttä. Napsauttamalla "selaa"-painiketta käyttäjä voi valita tiedoston paikalliselta koneeltaan.

    Nimi: Sähköposti: Viesti: Valitse ladattava tiedosto:

    Lomake näyttää tältä:

    Huomaa, että määritimme lomakemääritteissä enctype="multipart/form-data" . Tämä kertoo selaimelle, että lomaketta voidaan käyttää tiedostojen lähettämiseen. Lisäsimme myös "nimi"- ja "sähköposti"-kentät kerätäksemme mahdollisimman paljon tietoa käyttäjästä. Seuraavaksi tulee tiedoston lähetyskenttä.

    Valitse ladattava tiedosto:

    Kun napsautat Lähetä-painiketta, tiedot, mukaan lukien tiedot lähetettävästä tiedostosta, lähetetään käsittelijätiedostoon, jonka polun määritimme lomakkeen action-attribuutissa.

    Tietojen saaminen ladatusta tiedostosta

    Tarkistamme ensin vastaanotetut tiedot, sitten, jos vahvistus onnistuu, lähetämme tiedot sähköpostitse.

    Kaikki tiedot ladatuista tiedostoista voidaan saada käyttämällä $_FILES-taulukkoa.

    Esimerkkimme $_FILES-taulukon sisältö on esitetty alla. Huomaa, että name-attribuutin arvo (meille se on uploaded_file) tiedostovalintakentässä voi olla mikä tahansa.

    • $_FILES["ladattu_tiedosto"]["nimi"]
      Tiedoston alkuperäinen nimi käyttäjän tietokoneessa.
    • $_FILES["ladattu_tiedosto"]["tyyppi"]
      Mime-tiedostotyyppi, jos selain on antanut tällaiset tiedot. Esimerkki: "image/gif". Tätä mime-tyyppiä ei tarkisteta PHP:ssä, joten älä luota sen arvoon tarkistamatta.
    • $_FILES["ladattu_tiedosto"]["koko"]
      Vastaanotetun tiedoston koko tavuina.
    • $_FILES["ladattu_tiedosto"]["tmp_nimi"]
      Väliaikainen nimi, jolla vastaanotettu tiedosto tallennettiin palvelimelle.
    • $_FILES["ladattu_tiedosto"]["virhe"]
      Virhekoodi, joka voi ilmetä tiedostoa ladattaessa. Tämä elementti lisättiin PHP 4.2.0:aan

    Saamme ladatun tiedoston nimen, tyypin ja koon:

    //Hae ladatun tiedoston nimen viimeinen komponentti $name_of_uploaded_file = perusnimi($_FILES["ladattuna_tiedosto"]["nimi"]); // esimerkiksi index.php //hae tiedostopääte (ilman pistettä) $ladatun_tiedoston_tyyppi = substr($ladatun_tiedoston_nimi, // pisteen sijainti + 1 strrpos($ladatun_tiedoston_nimi, ".") + 1); $size_of_uploaded_file = $_FILES["ladattu_tiedosto"]["koko"]/1024; //koko kilotavuina

    Kuten näet, tiedot ladatusta tiedostosta ovat saatavilla $_FILES-taulukon kautta.

    Ladatun tiedoston koon ja laajennustyypin tarkistaminen

    Oletetaan, että tuloksena olevan tiedoston tulee olla kuva ("jpg", "jpeg", "gif", "bmp") eikä se saa ylittää 100 kb. Sitten koodimme näyttää tältä:

    //Asetukset $max_allowed_file_size = 100; // koko kilotavuina $allowed_extensions = array("jpg", "jpeg", "gif", "bmp"); //Tarkistaa if($size_of_uploaded_file > $max_allowed_file_size) ( $errors .= "\n Tiedoston koon on oltava pienempi kuin $max_allowed_file_size"; ) //------ Tarkista tiedostopääte ----- $allowed_ext = väärä; for($i=0; $isetTXTBody($teksti); $viesti->lisääAttachment($ladatun_tiedoston_polku); $body = $viesti->get(); $extraheaders = array("From"=>$from, "Aihe "=>$subject,"Reply-To"=>$vieraan_sähköposti); $headers = $viesti->headers($extraheaders); $posti = Posti::factory("posti"); $posti->lähetä($ to, $headers, $body);

    Mail_mime()-luokka auttaa sinua luomaan MIME-viestin. Yllä olevassa koodissa loimme Mail_mime-objektin, päivitimme viestin rungon ($message->setTXTBody($text);) ja lisäsimme liitetiedoston ($message->addAttachment(file)).

    Ennen kuin voit käyttää PEAR-luokkia, sinun on asennettava PEAR palvelimellesi. Tässä on nopea tapa asentaa PEAR:
    Lataa PEAR-asennusohjelma

    Tallenna tiedosto nimellä "pear-installer.php". Lataa tämä tiedosto palvelimellesi missä tahansa hakemistossa. Kirjoita sitten tiedoston polku selaimeesi:
    http://www.yourdomain.com/pear-installer.php
    Näkyviin tulee verkkokäyttöliittymä PEARin asentamiseksi sivustollesi. Noudata asennusohjeita. Kun olet asentanut Pear, etsi ja asenna paketit "mail" ja "mail_mime".

    Yksinkertainen lomake lataus, lataus

    Arkisto sisältää yksinkertaisen lomakkeen ladatun tiedoston lähettämistä varten sähköpostitse.

    Lisäyspäivä: 12.12.2011

    

    Katsotaanpa esimerkkiä viestin lähettämisestä verkkosivustolta sähköpostiosoitteeseesi. Miksi tämä on välttämätöntä? Oletetaan, että sivullasi on kommenttikenttä, ja sinun on nopeasti tiedettävä, kun joku on jättänyt kommentin. Et mene verkkosivustollesi joka minuutti ja tarkista uusia kommentteja.

    Lomakkeen luominen ja kirjeen lähettäminen on yksinkertaista. Mutta on hetkiä, jotka voivat pilata mielialan koko päiväksi.

    Ensimmäinen vaikeus on typerä ja vanhentunut standardi venäjänkielisille kirjeille. Tämän vuoksi saatat saada postilaatikkoosi kirjeitä, joissa on "hulluja" viestejä. Tämä ongelma on erityisen havaittavissa sähköpostiohjelmissa, kuten Windows Mail, Outlook Express jne. Jos luet kirjeitä verkkokäyttöliittymän kautta, ongelma ei ole niin painava. Monet sähköpostipalvelimet ovat tarpeeksi älykkäitä näyttämään sähköpostin oikein.

    Toinen ongelma on ei-toivotut sähköpostit. Jotkut "vaihtoehtoisesti" lahjakkaat yksilöt voivat painaa loputtomasti lähetyspainiketta (tulva). Näihin voi kuulua myös botteja – erityisesti kirjoitettuja ohjelmia, jotka painavat itse painikkeita.

    Kolmas ongelma on suojautuminen haavoittuvuuksilta. Jos voit syöttää jotain sivustolle, on olemassa hakkerointimahdollisuus. Pyydät esimerkiksi syöttämään sähköpostiosoitteen rekisteröintiä varten kenttään, ja hakkeri syöttää erityisesti valmistetun haitallisen skriptin, joka voi pilata sivustosi.

    Jos kuvatut vaikeudet eivät pelota sinua ja haluat saada viestejä sivustolta, jatka...

    Aloitetaan yksinkertaisella esimerkillä ilman kelloja ja pillejä.

    Luodaan tiedosto forms.php, joka sisältää lomakkeen viestin lähettämistä varten.

    Olemme juuri luoneet lomakkeen, jossa on kaksi tekstikenttää ja painike. Huomaa, että määritimme lomakkeelle post-menetelmän ja määritimme polun lomakkeenkäsittelijään - mail.php - toimintoparametrissa. Voit luonnollisesti määrittää osoitteesi ja toisen nimen tiedostolle.

    Luodaan nyt tiedosto mail.php (esimerkissämme sen pitäisi olla samassa kansiossa).

    Periaatteessa tämä riittää kirjeen lähettämiseen. Tärkeintä on varmistaa, että sinulla on lupa käyttää mail()-toimintoa sivustollasi, koska jotkut isännöitsijät poistavat sen käytöstä tai asettavat erilaisia ​​rajoituksia lähetettyjen sähköpostien määrään.

    Puolustuksen vahvistaminen

    Kuvatussa esimerkissä suojaus on minimaalinen htmlspecialchars-funktion muodossa. Toinen suojamuoto voi olla istuntojen käyttö.

    Kirjoita heti ensimmäisen tiedoston alkuun seuraava.