HTML-lomakkeet php:ssä. PHP-skriptit HTML-lomakkeiden käsittelyyn. Selain kommunikoi palvelimen kanssa

Yksi PHP:n hienoista asioista on se, miten se toimii HTML-lomakkeiden kanssa. Tärkeintä tässä on, että jokainen lomakeelementti tulee automaattisesti PHP-ohjelmiesi käyttöön. Lisätietoja lomakkeiden käytöstä PHP:ssä on kohdassa. Tässä on esimerkki HTML-lomakkeesta:

Esimerkki #1 Yksinkertaisin HTML-lomake

Sinun nimesi:

Ikäsi:

Tässä lomakkeessa ei ole mitään erikoista. Tämä on tavallinen HTML-lomake ilman erityisiä tunnisteita. Kun käyttäjä täyttää lomakkeen ja napsauttaa Lähetä-painiketta, action.php-sivu kutsutaan. Tässä tiedostossa voi olla jotain tällaista:

Esimerkki #2 Lomaketietojen näyttäminen

Hei, .
Sinä olet vanha.

Tämän ohjelman esimerkkitulostus:

Hei, Sergey. Olet 30-vuotias.

Jos et ota huomioon koodinpätkiä htmlspecialchars() ja (int), tämän koodin toimintaperiaatteen tulee olla yksinkertainen ja ymmärrettävä. htmlspecialchars() varmistaa, että "erityiset" HTML-merkit on koodattu oikein, jotta sivullesi ei lisätä haitallista HTML:ää tai Javascriptiä. Ikäkentän, jonka tiedämme olevan numero, voimme yksinkertaisesti muuntaa kokonaisluvuksi, joka poistaa automaattisesti ei-toivotut merkit. PHP voi tehdä tämän myös automaattisesti käyttämällä suodatinlaajennusta. PHP määrittää automaattisesti muuttujat $_POST["nimi"] ja $_POST["age"]. Aikaisemmin käytimme $_SERVER superglobaalimuuttujaa, mutta tässä myös $_POST superglobaalimuuttujaa, joka sisältää kaikki POST-tiedot. huomaa, että lähetystapa(menetelmä) on POST. Jos käytimme menetelmää SAADA, silloin lomaketietomme olisivat superglobaalisessa muuttujassa $_GET . Vaihtoehtoisesti voit käyttää muuttujaa $_REQUEST, jos tietolähteellä ei ole väliä. Tämä muuttuja sisältää yhdistelmän GET-, POST- ja COOKIE-tietoja.

15 vuotta sitten

HTTP-määrityksen mukaan sinun tulee käyttää POST-menetelmää, kun käytät lomaketta muuttaaksesi jonkin palvelinpään tilaa. Esimerkiksi jos sivulla on lomake, jolla käyttäjät voivat lisätä omia kommenttejaan, kuten tämä Jos napsautat "Lataa uudelleen" tai "Päivitä" sivulla, jonka saavutit POST-testin kautta, se on melkein aina virhe – sinun ei pitäisi lähettää samaa kommenttia kahdesti. Tästä syystä näitä sivuja ei ole merkitty kirjanmerkkeihin tai välimuistiin.

Sinun tulisi käyttää GET-menetelmää, kun lomakkeesi saa jotain pois palvelimelta eikä muuta mitään. Esimerkiksi hakukoneen lomakkeen tulisi käyttää GET:tä, koska Web-sivuston haun ei pitäisi muuttaa mitään, mistä asiakas saattaa välittää, ja hakukonekyselyn tulosten kirjanmerkki tai välimuisti on yhtä hyödyllinen kuin kirjanmerkki tai välimuisti. staattinen HTML-sivu.

2 vuotta sitten

Selvennyksen arvoinen:

POST ei ole turvallisempi kuin GET.

Syyt valita GET vs POST liittyvät useisiin tekijöihin, kuten pyynnön tarkoitukseen ("lähetätkö" tietoja?), pyynnön kokoon (URL-osoitteen pituudelle on rajoituksia ja GET-parametrit lähetetään URL-osoite) ja kuinka helposti haluat toiminnon olevan jaettavissa – Esimerkiksi Google-haut GET, koska sen avulla on helppo kopioida ja jakaa hakukysely jonkun muun kanssa yksinkertaisesti jakamalla URL-osoite.

Turvallisuus on tässä huomioitava vain siksi, että GET on helpompi jakaa kuin POST. Esimerkki: et halua GET:n lähettävän salasanaa, koska käyttäjä saattaa jakaa tuloksena olevan URL-osoitteen ja paljastaa salasanansa vahingossa.

GET:n ja POST:n on kuitenkin yhtä helppo siepata hyvässä asemassa olevalle pahantahtoiselle henkilölle, jos et ota TLS/SSL:ää käyttöön suojataksesi itse verkkoyhteyttä.

Kaikki HTTP:n kautta lähetetyt lomakkeet (yleensä portti 80) ovat epävarmoja, ja nykyään (2017) ei ole monia hyviä syitä sille, miksi julkinen verkkosivusto ei käytä HTTPS:ää (joka on periaatteessa HTTP + Transport Layer Security).

Bonuksena, jos käytät TLS:ää, minimoit riskin siitä, että käyttäjät saavat koodia (AD) ruiskutettua liikenteeseen, jota et ole itse lisännyt sinne.

Viimeisin päivitys: 1.11.2015

Yksi tärkeimmistä tavoista, joilla verkkosivusto siirtää tietoja, on lomakkeiden käsittely. Lomakkeet edustavat erityisiä HTML-merkintäelementtejä, jotka sisältävät erilaisia ​​​​syöttöelementtejä - tekstikenttiä, painikkeita jne. Ja näiden lomakkeiden avulla voimme syöttää tietoja ja lähettää ne palvelimelle. Ja palvelin jo käsittelee näitä tietoja.

Lomakkeiden luominen koostuu seuraavista osista:

    Elementin luominen HTML-merkinnöissä

    Lisää tähän elementtiin yksi tai useampi syöttökenttä

    Tiedonsiirtotavan asettaminen: GET tai POST

    Osoitteen asettaminen, johon syötetyt tiedot lähetetään

Luodaan siis uusi lomake. Tätä varten määritämme uuden tiedoston form.php, johon sijoitamme seuraavan sisällön:

Kirjaudu sivustolle Kirjautuminen:

Salasana:

Lomakeelementin action="login.php"-attribuutti osoittaa, että komentosarja käsittelee lomaketiedot login.php, joka sijaitsee tiedoston mukana form.php yhdessä kansiossa. Ja method="POST"-attribuutti osoittaa, että POST-menetelmää käytetään tiedonsiirtomenetelmänä.

Luodaan nyt tiedosto login.php, jossa on seuraava sisältö:

Lomaketietojen saamiseksi käytetään globaalia muuttujaa $_POST. Se edustaa assosiatiivista datajoukkoa, joka lähetetään POST-menetelmällä. Näppäinten avulla saamme lähetetyt arvot. Tämän taulukon avaimet ovat lomakkeen syöttökenttien nimiattribuuttien arvoja.

Koska sisäänkirjautumiskentän name-attribuutilla on arvo login(), niin $_POST-taulukossa tämän kentän arvo edustaa "login"-avainta: $_POST["login"]

Ja koska voi olla tilanteita, joissa syöttökenttää ei aseteta, esimerkiksi siirryttäessä suoraan komentosarjaan: http://localhost:8080/login.php. Tässä tapauksessa on suositeltavaa tarkistaa tietojen saatavuus isset()-funktiolla ennen tietojen käsittelyä. Ja jos muuttuja on asetettu, isset()-funktio palauttaa true .

Nyt pääsemme lomakkeeseen:

Ja kun painiketta painetaan, syötetyt tiedot lähetetään skriptiin POST-menetelmällä. login.php:

Lomaketietoja ei tarvitse lähettää toiseen komentosarjaan, voit käsitellä lomaketietoja samassa lomaketiedostossa. Tehdään tämä muuttamalla tiedostoa form.php seuraavalla tavalla:

Kirjaudu sivustolle Kirjautuminen:

Salasana:

Tietoturva

Tietoturva on erittäin tärkeää PHP:ssä. Katsotaanpa muutamia yksinkertaisia ​​mekanismeja, jotka voivat parantaa verkkosivustomme turvallisuutta.

Mutta ensin otetaan lomake edellisestä aiheesta ja yritetään syöttää siihen tietoja. Kirjoita kirjautumiskenttään esimerkiksi "alert(hi);" ja salasanakenttään "salasana":

Kun tiedot on lähetetty html-merkintään, siihen lisätään javascript-koodi, joka näyttää ikkunan, jossa on viesti.

Tällaisten tietoturvaongelmien välttämiseksi sinun tulee käyttää htmlentities()-funktiota:

If(isset($_POST["kirjautuminen"]) && isset($_POST["salasana"]))( $login=htmlentities($_POST["kirjautuminen"]); $salasana = htmlentiteetit($_POST["salasana" ]); echo "Kirjautumistunnuksesi: $kirjautuminen
Salasanasi: $password";)

Ja jopa html- tai javascript-koodin syöttämisen jälkeen kaikki tagit pakotetaan ja saamme seuraavan tulosteen:

Toinen toiminto - strip_tags() -funktio mahdollistaa html-tunnisteiden sulkemisen kokonaan pois:

If(isset($_POST["kirjautuminen"]) && isset($_POST["salasana"]))( $login=strip_tags($_POST["kirjautuminen"]); $salasana = strip_tags($_POST["salasana" ]); echo "Kirjautumistunnuksesi: $kirjautuminen
Salasanasi: $password";)

Sen toiminnan tulos samalla tulolla on seuraava lähtö.

Usein Web-sivustoilta löytyy sivuja, joihin on sijoitettu HTML-lomakkeita. Verkkolomakkeet ovat kätevä tapa saada tietoja sivustosi vierailijoilta. Esimerkki tästä on vieraskirja, joka antaa palautetta vierailijoille ja sivuston kehittäjille. Lomakkeet ovat myös käteviä sivuston kehittäjille, kun he kehittävät sisällönhallintajärjestelmää, jonka avulla he voivat ylläpitää sivuston pääominaisuutta - relevanssia. Tämä artikkeli on omistettu HTML-lomakkeiden luomisen perusteisiin, niiden käsittelyyn ja tapoihin siirtää tietoja näyttölomakkeista PHP-skripteihin.

1) Luo yksinkertainen lomake

Tunnisteet Ja määrittää lomakkeen alun ja lopun. Aloituslomaketunniste sisältää kaksi attribuuttia: toiminta Ja menetelmä. Action-attribuutti sisältää komentosarjan URL-osoitteen, joka on kutsuttava skriptin käsittelemiseksi. Attribuutti menetelmä kertoo selaimelle, minkä tyyppistä HTTP-pyyntöä tulee käyttää lomakkeen lähettämiseen; mahdollisia arvoja LÄHETTÄÄ Ja SAADA.

Kommentti

Suurin ero POST- ja GET-menetelmien välillä on tiedonsiirtotapa. GET-menetelmässä parametrit kuljetetaan osoitepalkin kautta, ts. oleellisesti HTTP-pyynnön otsikossa, kun taas POST-menetelmässä parametrit välitetään HTTP-pyynnön rungon kautta, eivätkä ne näy millään tavalla osoiterivillä.

Tehtävä: Oletetaan, että sinun on luotava avattava luettelo vuosista 2000-2050.
Ratkaisu: Sinun on luotava HTML-lomake, jossa on SELECT-elementti ja PHP-skripti lomakkeen käsittelyä varten.

Keskustelu:

Luodaan ensin kaksi tiedostoa: form.html ja action.php. Form.html-tiedosto sisältää html-lomakkeen, jossa on avattava luettelo. Lisäksi luettelon arvot voidaan määrittää kahdella tavalla:

I. Manuaalinen tietojen syöttö:


2000
2001
2002
……………………………………………
2050

II. Tietojen syöttäminen silmukan kautta:



Kuten näet, toinen esimerkki silmukalla on kompaktimpi. Käsittelijän komentosarjaa ei mielestäni tarvitse antaa tälle lomakkeelle, koska se käsitellään täsmälleen samalla tavalla kuin tekstikenttä, ts. lista-arvot voidaan hakea superglobaalisesta taulukosta $_POST.

Kuvaus:

Luodaan HTML-lomake tiedoston lähettämiseksi palvelimelle.




Tämä html-lomake sisältää elementin selata, joka avaa valintaikkunan palvelimelle ladattavan tiedoston valitsemiseksi. Kun painat painiketta "Siirrä tiedosto", tiedosto välitetään käsittelijän komentosarjalle.

Sitten sinun on kirjoitettava käsittelijä action.php . Ennen kuin kirjoitat käsittelijän, meidän on päätettävä, mihin hakemistoon kopioimme tiedoston:

Kommentti

Jos luotat siihen, että käyttäjät lataavat tiedostoja palvelimellesi, sinun on oltava erittäin varovainen. Hyökkääjät voivat upottaa "huonon" koodin kuvaan tai tiedostoon ja lähettää sen palvelimelle. Tällaisissa tapauksissa sinun on valvottava tiukasti tiedostojen lataamista.

Tämä esimerkki osoittaa hakemiston luomisen ja tiedoston kopioimisen kyseiseen hakemistoon palvelimelle.

Haluaisin myös esittää esimerkin elementistä valintaruutu. Tämä elementti eroaa hieman muista elementeistä siinä mielessä, että jos ei yksikään elementeistä valintaruutu'a ei ole valittu, niin superglobaalimuuttuja $_POST palauttaa tyhjän arvon:


Sininen
Musta
Valkoinen




Jos sinulla on muita kysymyksiä tai jokin on epäselvää - tervetuloa palveluumme

Usein Web-sivustoilta löytyy sivuja, joihin on sijoitettu HTML-lomakkeita. Verkkolomakkeet ovat kätevä tapa saada tietoja sivustosi vierailijoilta. Esimerkki tästä on -, - joka antaa palautetta sivuston vierailijoille ja kehittäjille. Lomakkeet ovat myös käteviä sivuston kehittäjille, kun he kehittävät sisällönhallintajärjestelmää, jonka avulla he voivat ylläpitää sivuston pääominaisuutta - relevanssia. Tämä artikkeli on omistettu HTML-lomakkeiden luomisen perusteisiin, niiden käsittelyyn ja tapoihin siirtää tietoja näyttölomakkeista PHP-skripteihin.

1) Luo yksinkertainen lomake

Tunnisteet Ja määrittää lomakkeen alun ja lopun. Aloituslomaketunniste sisältää kaksi attribuuttia: toiminta Ja menetelmä. Action-attribuutti sisältää komentosarjan URL-osoitteen, joka on kutsuttava skriptin käsittelemiseksi. Attribuutti menetelmä kertoo selaimelle, minkä tyyppistä HTTP-pyyntöä tulee käyttää lomakkeen lähettämiseen; mahdollisia arvoja LÄHETTÄÄ Ja SAADA.

Kommentti

Suurin ero POST- ja GET-menetelmien välillä on tiedonsiirtotapa. GET-menetelmässä parametrit kuljetetaan osoitepalkin kautta, ts. oleellisesti HTTP-pyynnön otsikossa, kun taas POST-menetelmässä parametrit välitetään HTTP-pyynnön rungon kautta, eivätkä ne näy millään tavalla osoiterivillä.

Tehtävä: Oletetaan, että sinun on luotava avattava luettelo vuosista 2000-2050.
Ratkaisu: Sinun on luotava HTML-lomake, jossa on SELECT-elementti ja PHP-skripti lomakkeen käsittelyä varten.

Keskustelu:

Luodaan ensin kaksi tiedostoa: form.html ja action.php. Form.html-tiedosto sisältää html-lomakkeen, jossa on avattava luettelo. Lisäksi luettelon arvot voidaan määrittää kahdella tavalla:

I. Manuaalinen tietojen syöttö:


2000
2001
2002
……………………………………………
2050

II. Tietojen syöttäminen silmukan kautta:



Kuten näet, toinen esimerkki silmukalla on kompaktimpi. Käsittelijän komentosarjaa ei mielestäni tarvitse antaa tälle lomakkeelle, koska se käsitellään täsmälleen samalla tavalla kuin tekstikenttä, ts. lista-arvot voidaan hakea superglobaalisesta taulukosta $_POST.

Kuvaus:

Luodaan HTML-lomake tiedoston lähettämiseksi palvelimelle.




Tämä html-lomake sisältää elementin selata, joka avaa valintaikkunan palvelimelle ladattavan tiedoston valitsemiseksi. Kun painat painiketta "Siirrä tiedosto", tiedosto välitetään käsittelijän komentosarjalle.

Sitten sinun on kirjoitettava käsittelijä action.php . Ennen kuin kirjoitat käsittelijän, meidän on päätettävä, mihin hakemistoon kopioimme tiedoston:

Kommentti

Jos luotat siihen, että käyttäjät lataavat tiedostoja palvelimellesi, sinun on oltava erittäin varovainen. Hyökkääjät voivat upottaa "huonon" koodin kuvaan tai tiedostoon ja lähettää sen palvelimelle. Tällaisissa tapauksissa sinun on valvottava tiukasti tiedostojen lataamista.

Tämä esimerkki osoittaa hakemiston luomisen ja tiedoston kopioimisen kyseiseen hakemistoon palvelimelle.

Haluaisin myös esittää esimerkin elementistä valintaruutu. Tämä elementti eroaa hieman muista elementeistä siinä, että jos ei yksikään elementeistä valintaruutu'a ei ole valittu, niin superglobaalimuuttuja $_POST palauttaa tyhjän arvon:


Sininen
Musta
Valkoinen

tai kuinka lähettää viesti sähköpostitse HTML-lomakkeella

Sinulla on oma verkkosivusto ja haluat vastaanottaa käyttäjiltäsi kirjeitä tai viestejä, kysymyksiä, neuvoja tai vain toiveita sähköpostitse, niin tämä oppitunti on sinua varten!

Kuinka lähettää viesti sähköpostitse

Tarvitsemme seuraavat tiedostot:

  • form.html - sivu lomakkeella.
  • form_processing.php - tiedosto, jossa on komentosarja, joka käsittelee HTML-lomakkeen.
  • Katsotaanpa form.html-koodia:

    HTML-lomakkeiden käsittely PHP:llä



    Sinun nimesi:


    Sähköposti:


    Aihe:


    Viesti:





    HTML-lomake sisältää kentät käyttäjän nimen, sähköpostiosoitteen, viestin aiheen, viestin tekstin ja "Lähetä"-painikkeen syöttämistä varten, jolloin tiedot lähetetään käsiteltäväksi PHP-skriptiin form_processing.php-tiedostossa.

    Hypertekstin siirtoprotokollamenetelmällä on kaksi arvoa: get (oletus) ja post. Postitusmenetelmää käytetään useammin, koska sen avulla voidaan siirtää suuria tietomääriä. Kaikki post-menetelmällä prosessointiskriptiin välitetyt arvot tallennetaan assosiatiiviseen taulukkoon $_POST (tämä taulukko on natiivisti sisäänrakennettu PHP-tulkkiin), joka koostuu $_POST-muuttujista, jossa nimi on syötteen todellinen nimi kenttä - attribuutin name="" arvo:

    Luodaan prosessoritiedosto form_processing.php:


    Viestisi on lähetetty onnistuneesti!


    Kotiin >>>





    Korjaa seuraava virhe:





    Koodiosio:

    — näyttää määritetyn tekstin, jos HTML-lomakkeen kentät on täytetty oikein. index.php - sivustosi pääsivu.

    Koodiosio:

    - osoittaa tehdyn virheen luonteen.

    Muuttujan arvo:

    - näyttää automaattisesti käyttäjän sähköpostin vaaditulla rivillä, kun kirjoitat vastausta.