Jumalaton lähettää php. PHP-skriptit HTML-lomakkeiden käsittelyyn. Mitä menetelmää tulisi käyttää

POST- ja GET-menetelmiä käytetään pääasiassa parametrien siirtämiseen voimista. Suurin ero POST- ja GET-menetelmien välillä on tiedonsiirtotapa. GET-menetelmässä parametrit kuljetetaan osoitepalkin (URL) kautta, ts. HTTP-pyynnön otsikossa, kun taas POST-menetelmässä parametrit välitetään HTTP-pyynnön rungon kautta, eivätkä ne näy osoitepalkissa.

1. Painikkeet - Tag

Tunniste luo painikkeita verkkosivulle ja sen toiminta muistuttaa tagilla saatua tulosta (parametrilla type="button | reset | submit"). Toisin kuin tämä tunniste, se tarjoaa lisäasetuksia painikkeiden luomiseen. Esimerkiksi tällaiselle painikkeelle voit sijoittaa mitä tahansa HTML-elementtejä, mukaan lukien kuvat. Tyylien avulla voit määrittää painikkeen ulkoasun muuttamalla fonttia, taustaväriä, kokoa ja muita parametreja.

Teoriassa tagin tulisi sijaita elementin asettaman lomakkeen sisällä. Selaimet eivät kuitenkaan näytä virheilmoitusta ja toimivat oikein tunnisteen kanssa, jos se havaitaan sellaisenaan. Jos kuitenkin haluat lähettää painikkeen napsautuksen tulos palvelimelle, se on sijoitettava säiliöön. Päättävä tagi on pakollinen.

Vaihtoehdot:

pois käytöstä - estää pääsyn ja muokkaamisen elementtiin.

tyyppi - painikkeen tyyppi

arvo - Painikkeen arvo, joka lähetetään palvelimelle tai luetaan sprittien avulla.

Painike tekstillä

Parametri DISABLED Estää pääsyn ja painikkeen muokkaamisen. Tässä tapauksessa se näkyy harmaana, eikä käyttäjä voi aktivoida sitä. Lisäksi tällainen painike ei voi tarkentaa painamalla Sarkain-näppäintä, käyttämällä hiirtä tai muuten. Tätä painikkeen tilaa voidaan kuitenkin muuttaa skriptien avulla.

Aktiivinen painike Ei aktiivinen painike

TYPE-parametri Määrittää painikkeen tyypin, joka määrittää sen toiminnan lomakkeella. Erityyppiset painikkeet eivät eroa ulkonäöltään millään tavalla, mutta jokaisella painikkeella on omat toiminnonsa. Oletusarvo: painike.

Argumentit:

painike - Tavallinen painike.

nollaus - Painike syötettyjen lomaketietojen tyhjentämiseksi ja arvojen palauttamiseksi alkuperäiseen tilaan.

Lähetä - Painike lomaketietojen lähettämiseen palvelimelle.

Tyhjennä lomake Lähetä lomake

Parametri ARVO Määrittää palvelimelle lähetettävän painikkeen arvon. Palvelimelle lähetetään "nimi=arvo"-pari, jossa nimi määritetään tagin nimiparametrilla ja arvo arvoparametrilla. Merkitys voi joko olla sama kuin painikkeen teksti tai olla itsenäinen. Arvoparametria käytetään myös tietojen käyttämiseen komentosarjojen kautta.

Lähetä lomake

1.1. Painike (syöttötyyppi=painike) 1.2. Painike, jossa on kuva (syöttötyyppi=kuva) Painike kuvalla

Kuvia sisältävät painikkeet ovat toiminnaltaan samanlaisia ​​kuin Lähetä-painike, mutta ne edustavat kuvaa. Voit tehdä tämän asettamalla type=image ja src="image.gif" .

Kun käyttäjä napsauttaa mitä tahansa kuvan kohtaa, vastaava lomake lähetetään palvelimelle kahdella lisämuuttujalla - sub_x ja sub_y . Ne sisältävät kuvaa klikkaavan käyttäjän koordinaatit. Kokeneet ohjelmoijat saattavat huomata, että selaimen lähettämät muuttujien nimet sisältävät itse asiassa pisteen alaviivan sijaan, mutta PHP muuttaa pisteen automaattisesti alaviivaksi.

1.3. Lomakkeen lähetyspainike (syöttötyyppi=lähetä)

Toimii lomakkeen lähettämiseen käsikirjoitukseen. Kun luot painiketta lomakkeen lähettämistä varten, sinun on määritettävä 2 attribuuttia: type="submit" ja value="Button text" . Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.!}

PHP-skriptiä ei tarvita.

1.4. Joukko painikkeita (lähetä) toimintovaihtoehdon 2 valitsemiseksi. Lomakkeen palautuspainike (Palauta)

Kun napsautat nollauspainiketta, kaikki lomakeelementit asetetaan oletusmääritteissä määritettyyn tilaan, eikä lomaketta lähetetä.

PHP-skriptiä ei tarvita.

3. Valintaruutu

Valintaruudut tarjoavat käyttäjälle useita vaihtoehtoja ja mahdollistavat mielivaltaisen valinnan (ei yhtään, yksi tai useampi).

Valkoinen
Vihreä
Sininen
Punainen
Musta

// ensimmäinen painikesarja
// toinen painikesarja
// kolmas painikesarja

5. Tekstikenttä (teksti)

Kun luodaan tavallinen tekstikenttä, jonka koko on suurin sallittu pituus maxlength merkkejä, type-attribuutti saa arvon text . Jos arvoparametri on määritetty, kentässä näkyy muuttujassa määritetty arvo. Kun luot kenttää, älä unohda määrittää kentän nimeä, koska... tämä attribuutti on pakollinen.

6. Salasanakenttä

Täsmälleen sama kuin tekstikenttä, paitsi että käyttäjän kirjoittamat merkit eivät näy näytöllä.

7. Piilotettu tekstikenttä (piilotettu)

Voit välittää joitain palvelutietoja skriptille näyttämättä niitä sivulla.

8. Pudotusvalikko (valitse)

Tunniste on avattava tai laajennettu luettelo, ja yksi tai useampi rivi voidaan valita samanaikaisesti. Mutta arvo välitetään viimeksi valittuun painikkeeseen.

Luettelo alkaa pareilluilla tunnisteilla. Tunnisteiden avulla voit määrittää luettelon sisällön ja arvoparametri määrittää merkkijonon arvon. Jos valittu parametri on määritetty tunnisteessa, rivi valitaan aluksi. Koko-parametri määrittää, kuinka monta riviä luettelo vie. Jos koko on 1, luettelo on pudotusvalikko. Jos määritetään useita attribuutteja, luettelosta voidaan valita useita elementtejä. Mutta tätä järjestelmää ei käytännössä käytetä, ja koolla = 1 siinä ei ole järkeä.

Valkoinen Vihreä Sininen Punainen Musta

Jos sinun on luotava avattava valikko, jossa on ennakoitava järjestys. Esimerkiksi luettelo vuosista 2000-2050. Sitten käytetään seuraavaa tekniikkaa.

9. Monirivinen tekstinsyöttökenttä (tekstialue)

Monirivisen tekstinsyöttökentän avulla voit lähettää yhden rivin lisäksi useita kerralla. Tarvittaessa voit määrittää readonly-attribuutin, joka kieltää tekstin muokkaamisen, poistamisen ja muuttamisen, ts. teksti on vain luku -tilassa. Jos teksti on alun perin näytettävä monirivisessä syöttökentässä, se on sijoitettava tunnisteiden väliin.

Siellä on rivitysparametri - rivien rivityksen asetus. Mahdolliset arvot:

off - poistaa rivien rivityksen käytöstä;

virtuaalit - näyttää rivinvaihdot, mutta lähettää tekstin sellaisena kuin se on syötetty;

fyysinen - rivinvaihdot jätetään alkuperäiseen muotoonsa.

Oletusarvoisesti tunniste luo tyhjän kentän, joka on 20 merkkiä leveä ja koostuu 2 rivistä.


Jotta monirivinen tekstikenttä olisi HTML-muotoilun mukainen (rivin rivitys tunnisteen avulla
tai
), käytä sitten nl2br()-funktiota:

Alkuperäinen lisätty rivi 1 Alkuperäinen lisätty rivi 2 Alkuperäinen lisätty rivi 3

10. Painike tiedostojen lataamiseen (selaa)

Toteuttaa tiedostojen lataamisen palvelimelle. Kun luot tekstikenttää, sinun on myös määritettävä kentän tyypiksi "tiedosto" .

Lataa tiedosto:

TAVOJA kommunikoida SELALAIN PALVELIN KANSSA

HTTP-protokollan tarjoamia menetelmiä on muutamia. Tämä on tärkeää tietoa. Muita tapoja ei ole. Käytännössä käytetään kahta: GET on, kun tietoja siirretään osoiteriville, esimerkiksi kun käyttäjä klikkaa linkkiä. POST - kun hän napsauttaa lomakkeen painiketta.

GET-menetelmä

Tietojen siirtämiseksi GET-menetelmällä sinun ei tarvitse luoda lomaketta HTML-sivulle (kukaan ei kiellä käyttämästä lomakkeita pyyntöihin GET-menetelmällä - mutta tämä on typeryyttä) - vain linkki dokumenttiin lisäyksellä kyselymerkkijonosta, joka voi näyttää muuttuja=arvo parit yhdistetään käyttämällä et-merkkiä & ja merkkijono liitetään sivun URL-osoitteeseen käyttämällä kysymysmerkkiä "? "

Mutta sinun ei tarvitse käyttää avain=arvo-pareja, jos sinun on välitettävä vain yksi muuttuja, sinun on kirjoitettava muuttujan ARVO (ei nimi) kysymysmerkin jälkeen.

Parametrien välittämisen etuna tällä tavalla on, että asiakkaat, jotka eivät voi käyttää POST-menetelmää (esimerkiksi hakukoneet), voivat silti yksinkertaisesti välittää parametrit komentosarjalle linkkiä seuraamalla ja vastaanottaa sisällön.

Haittapuolena on se, että yksinkertaisesti muuttamalla osoitepalkin parametreja käyttäjä voi kääntää komentosarjan ympärille arvaamattomalla tavalla, tämä luo valtavan tietoturva-aukon, kun se yhdistetään määrittelemättömiin muuttujiin ja register_globals päälle tai joku voi saada selville tärkeän muuttujan arvon. (kuten istuntotunnus) vain katsomalla näyttöruutua.

Pääsy julkisille sivuille antamalla parametreja (lisätty toiminnallisuus)

Tietojen siirto, joka ei vaikuta suojaustasoon

Pääsy suojatuille sivuille parametrien välityksellä

Tietoturvatasoon vaikuttavien tietojen välittäminen

Siirtää tietoja, joita käyttäjä ei voi muokata (jotkut lähettävät SQL-kyselyjen tekstiä.

POST-menetelmä

Voit lähettää tietoja POST-menetelmällä vain HTML-sivulla olevalla lomakkeella. Suurin ero POST:n ja GET:n välillä on se, että dataa ei välitetä pyynnön otsikossa vaan rungossa, joten käyttäjä ei näe sitä. Sitä voidaan muokata vain muuttamalla itse lomaketta.

Etu:

Parempi tietoturva ja toiminnallisuus POST-lomakkeita käyttäville pyynnöille.

Vika:

Vähemmän saatavuutta.

Mihin sitä pitäisi käyttää:

Siirtää suuren määrän tietoa (tekstiä, tiedostoja jne.);

välittää tärkeitä tietoja;

Pääsyn rajoittaminen (käytä esimerkiksi vain lomaketta navigointiin - vaihtoehto ei ole kaikkien robottiohjelmien tai sisällön sieppaajien käytettävissä).

Mihin ei pidä käyttää:

Ei rajoituksia.

Tiedostojen lataaminen POST-menetelmällä

PHP pystyy hyväksymään millä tahansa selaimella ladatun tiedoston. Tämä mahdollistaa sekä teksti- että binääritiedostojen lataamisen. Yhdessä PHP-todennus- ja tiedostojärjestelmätoimintojen kanssa voit hallita täysin sitä, kuka saa ladata tiedostoja ja mitä tehdä tiedostolle sen jälkeen, kun se on ladattu.

Tiedoston lataussivu voidaan toteuttaa käyttämällä erityistä lomaketta, joka näyttää suunnilleen tältä:

//Lomake tiedostojen lataamista varten Lähetä tämä tiedosto:

Yllä olevassa esimerkissä "_URL_" on korvattava linkillä PHP-skriptiin. Piilotetun kentän MAX_FILE_SIZE (arvo on määritettävä tavuina) tulee edeltää tiedoston valintakenttää, ja sen arvo on suurin sallittu hyväksyttävä tiedostokoko. Varmista myös, että määrität lomakemääritteissä enctype="multipart/form-data", muuten tiedostoja ei ladata palvelimelle.

Huomio

Vaihtoehto MAX_FILE_SIZE on selaimen suositus, vaikka PHP myös tarkistaisi tämän ehdon. Tämän rajoituksen ohittaminen selaimen puolella on melko helppoa, joten sinun ei pitäisi luottaa tähän ominaisuuteen estääksesi kaikkia suurempia tiedostoja. PHP:n enimmäiskokorajoitusta ei kuitenkaan voi ohittaa. Sinun tulee joka tapauksessa lisätä muuttuja, jonka muoto on MAX_FILE_SIZE, koska se estää käyttäjiä odottamasta innokkaasti siirrettäessä suuria tiedostoja, jotta he huomaavat, että tiedosto on liian suuri ja siirto todella epäonnistui.

Kuinka määritellä pyyntömenetelmä?

Suoraan:

Getenv("REQUEST_METHOD");

palauttaa GET tai POST.

Mitä menetelmää tulisi käyttää?

Jos lomakkeella pyydetään tietoja esimerkiksi haun aikana, se tulee lähettää GET-menetelmällä. Voit päivittää sivun lisäämällä sen kirjanmerkkeihin ja tai lähettämällä linkin ystävälle.

Jos lomakkeen lähettämisen seurauksena palvelimelle tallennetaan tai muutetaan tietoja, ne tulee lähettää POST-menetelmällä, ja lomakkeen käsittelyn jälkeen on välttämätöntä ohjata selain uudelleen GET-menetelmällä. POST-testiä saatetaan tarvita myös, jos palvelimelle on siirrettävä suuri määrä dataa (GET:lle se on hyvin rajallinen), ja myös jos siirrettyjä tietoja ei pitäisi näyttää osoitepalkissa (kirjautumistunnusta ja salasanaa syötettäessä, esimerkiksi).

Joka tapauksessa POST:n käsittelyn jälkeen kannattaa aina ohjata selain jollekin sivulle, vaikka samalle, mutta ilman lomaketietoja, jotta sivun päivityksen yhteydessä niitä ei tallenneta uudelleen.

Kuinka siirtää tietoja toiseen tiedostoon suoraan PHP-ohjelman rungosta GET- ja POST-menetelmillä? Esimerkki tietojen lähettämisestä POST- ja GET-menetelmillä samanaikaisesti ja vastauksen vastaanottamisesta palvelimelta.

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 CMS:ää, 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ää sen skriptin 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




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

Tässä artikkelissa käsitellään yksityiskohtaisesti PHP _SELF -muuttujan käyttöä.

Mikä on PHP _SELF -muuttuja?

PHP _SELF -muuttuja palauttaa nykyisen tiedoston nimen ja polun (suhteessa asiakirjan juureen). Voit käyttää tätä muuttujaa lomakkeen action-attribuutissa. On myös joitain vivahteita, jotka sinun pitäisi tietää. Emme tietenkään voi sivuuttaa näitä vivahteita.

Katsotaanpa muutama esimerkki.

Echo $_SERVER["PHP_SELF"];

1) Oletetaan, että php-tiedostosi sijaitsee seuraavassa osoitteessa:

Http://www.yourserver.com/form-action.php

Tässä tapauksessa PHP _SELF -muuttuja sisältää:

"/form-action.php"

2) Oletetaan, että php-tiedostosi sijaitsee tässä osoitteessa:

Http://www.yourserver.com/dir1/form-action.php

PHP_SELF tulee olemaan:

"/dir1/form-action.php"

PHP _SELF lomakkeen action-attribuutissa. Miksi häntä sinne tarvittiin?

Tyypillisesti PHP _SELF -muuttujaa käytetään lomaketunnisteen action-attribuutissa. Attribuutti action määrittää osoitteen, johon lomakkeen sisältö lähetetään vahvistuksen jälkeen (käyttäjä napsauttaa painiketta type="submit"). Tämä on pääsääntöisesti sama sivu, jolta lomake lähti.

Jos kuitenkin nimeät lomakkeen viittaaman tiedoston uudelleen, sinun on nimettävä tiedoston nimi uudelleen action-attribuutissa, muuten lomake ei toimi.

PHP _SELF -muuttuja säästää tarpeettomilta korjauksilta, koska sivun osoite luodaan automaattisesti tiedostonimen perusteella.

Oletetaan, että sinulla on lomaketiedosto nimeltä form-action.php ja haluat, että lomake lähetetään samaan tiedostoon vahvistuksen jälkeen. Yleensä he kirjoittavat näin:

Mutta voit käyttää PHP _SELF -muuttujaa form-action.php:n sijaan. Tässä tapauksessa koodi näyttää tältä: