HTML vormid php-s. PHP-skriptid HTML-vormide töötlemiseks. Brauseri ja serveriga suhtlemise viisid

Üks suurepäraseid asju PHP juures on viis, kuidas see töötab HTML-vormidega.

Siin on peamine, et iga vormielement muutub teie PHP programmidele automaatselt kättesaadavaks. Üksikasjaliku teabe saamiseks PHP-s vormide kasutamise kohta lugege jaotist. Siin on HTML-i vormi näide:

Näide nr 1 Lihtsaim HTML-vorm

Sinu nimi:

Sinu vanus:

Selles vormis pole midagi erilist. See on tavaline HTML-vorm ilma spetsiaalsete siltideta. Kui kasutaja täidab vormi ja klõpsab saatmisnupul, kutsutakse action.php leht. Sellel failil võib olla midagi sellist:

Näide #2 Vormiandmete kuvamine
Tere, .

Sa oled vana.

Selle programmi väljundi näide:

Tere, Sergey. Olete 30 aastat vana. Kui te ei võta arvesse kooditükke htmlspecialchars() ja(int) , peaks selle koodi tööpõhimõte olema lihtne ja arusaadav. htmlspecialchars() tagab, et "erilised" HTML-märgid on õigesti kodeeritud, et teie lehele ei sisestataks pahatahtlikku HTML-i või Javascripti. Vanusevälja, mis meie teada peaks olema arv, saame lihtsalt teisendada täisarvuks, mis eemaldab automaatselt soovimatud tähemärgid. PHP saab seda teha ka automaatselt, kasutades filtrilaiendit. PHP määrab teie jaoks automaatselt muutujad $_POST["nimi"] ja $_POST["vanus"]. Varem kasutasime superglobaalset muutujat $_SERVER, kuid siin kasutasime ka $_POST superglobaalset muutujat, mis sisaldab kõiki POST-i andmeid. Pange tähele, et saatmisviis(meetod) on POST. Kui kasutaksime meetodit

SAADA

, siis oleks meie vormiteave superglobaalses muutujas $_GET .

Peaksite kasutama GET-meetodit, kui teie vorm võtab midagi serverist välja ega muuda tegelikult midagi. Näiteks peaks otsingumootori vorm kasutama GET-i, kuna veebisaidilt otsimine ei tohiks muuta midagi, millest klient võiks hoolida, ning otsingumootori päringu tulemuste järjehoidjatesse lisamine või vahemällu salvestamine on sama kasulik kui järjehoidja või vahemällu salvestamine. staatiline HTML-leht.

2 aastat tagasi

Tasub selgitada:

POST ei ole turvalisem kui GET.

GET vs POST valimise põhjused on seotud mitmete teguritega, nagu päringu kavatsus (kas "esitate" teavet?), päringu suurus (URL-i pikkusele on piirangud ja GET-i parameetrid saadetakse URL) ja kui hõlpsalt soovite toimingut jagada. Näiteks Google'i otsingud on GET, kuna see muudab otsingupäringu kopeerimise ja jagamise lihtsalt URL-i jagamise kaudu hõlpsaks.

Turvalisus on siinkohal oluline ainult seetõttu, et GET-i on lihtsam jagada kui POST-i. Näide: te ei soovi, et GET saadaks parooli, kuna kasutaja võib saadud URL-i jagada ja kogemata oma parooli paljastada.

Siiski on GET-i ja POST-i võrdselt lihtne pealt kuulata hea asukohaga pahatahtlik isik, kui te võrguühenduse enda kaitsmiseks TLS-i/SSL-i ei juuruta.

Kõik HTTP kaudu saadetud vormid (tavaliselt port 80) on ebaturvalised ja tänapäeval (2017) pole palju häid põhjusi, miks avalik veebisait HTTPS-i (mis on põhimõtteliselt HTTP + transpordikihi turvalisus) mitte kasutanud.

Boonusena vähendate TLS-i kasutamisel ohtu, et teie kasutajad saavad teie liiklusesse koodi (AD-sid), mida te pole sinna sisestanud.

Viimati värskendatud: 1.11.2015

Üks peamisi viise, kuidas veebisait andmeid edastab, on vormide töötlemine. Vormid kujutavad endast spetsiaalseid HTML-i märgistuselemente, mis sisaldavad erinevaid sisestuselemente – tekstivälju, nuppe jne. Ja nende vormide abil saame sisestada mõned andmed ja saata need serverisse. Ja server juba töötleb neid andmeid.

Vormide loomine koosneb järgmistest aspektidest:

    Elemendi loomine HTML-i märgistuses

    Lisage sellele elemendile üks või mitu sisestusvälja

    Andmeedastusmeetodi määramine: GET või POST

    Aadressi määramine, kuhu sisestatud andmed saadetakse

Loome siis uue vormi. Selleks defineerime uue faili form.php, kuhu paigutame järgmise sisu:

Logi sisse saidile Logi sisse:

Parool:

Vormielemendi atribuut action="login.php" näitab, et vormiandmeid töötleb skript login.php, mis asub koos failiga form.phpühes kaustas. Ja atribuut method="POST" näitab, et andmeedastusmeetodina kasutatakse POST-meetodit.

Nüüd loome faili login.php, millel on järgmine sisu:

Vormiandmete saamiseks kasutatakse globaalset muutujat $_POST. See kujutab endast POST-meetodil saadetud andmete assotsiatiivset massiivi. Klahvide abil saame saadetud väärtused. Selle massiivi võtmed on vormi sisendväljade nimeatribuutide väärtused.

Kuna sisselogimise sisestusvälja atribuudil name on väärtus login(), siis massiivis $_POST tähistab selle välja väärtus "login" võtit: $_POST["login"]

Ja kuna võib esineda olukordi, kus sisestusvälja ei määrata, näiteks otse skripti minnes: http://localhost:8080/login.php. Sel juhul on soovitatav enne andmete töötlemist kontrollida andmete saadavust funktsiooni isset() abil. Ja kui muutuja on määratud, tagastab funktsioon isset() tõese .

Nüüd pääseme vormile juurde:

Ja kui nuppu vajutada, saadetakse sisestatud andmed POST-meetodil skripti. login.php:

Vormi andmeid ei ole vaja teisele skriptile saata, vormiandmeid saab töödelda samas vormifailis. Selleks muudame faili form.php järgmiselt:

Logi sisse saidile Logi sisse:

Parool:

Andmeturve

Andmete turvalisus on PHP-s väga oluline. Vaatame mõnda lihtsat mehhanismi, mis võivad meie veebisaidi turvalisust parandada.

Aga kõigepealt võtame eelmisest teemast vormi ja proovime sinna mõned andmed sisestada. Näiteks sisestage sisselogimisväljale "alert(hi);" ja parooliväljale "parool".

Pärast andmete saatmist html-märgistusele sisestatakse javascripti kood, mis kuvab teatega akna.

Selliste turvaprobleemide vältimiseks peaksite kasutama funktsiooni htmlentities():

If(isset($_POST["sisselogimine"]) && isset($_POST["parool"]))( $login=htmlolemid($_POST["sisselogimine"]); $password = htmlolemid($_POST["parool" ]); kaja "Teie sisselogimine: $login
Teie parool: $password";)

Ja isegi pärast html- või javascripti koodi sisestamist eemaldatakse kõik sildid ja saame järgmise väljundi:

Teine funktsioon - funktsioon strip_tags() võimaldab teil html-sildid täielikult välistada:

If(isset($_POST["sisselogimine"]) && isset($_POST["parool"]))( $login=strip_tags($_POST["sisselogimine"]); $parool = strip_tags($_POST["parool" ]); kaja "Teie sisselogimine: $login
Teie parool: $password";)

Selle sama sisendiga töötamise tulemus on järgmine väljund.

Sageli leiate veebisaitidelt lehti, millele on paigutatud HTML-vormid. Veebivormid on mugav viis saidi külastajatelt teabe saamiseks. Selle näiteks on külalisteraamat, mis annab külastajatele ja saidi arendajatele tagasisidet. Vormid on saidi arendajatele mugavad ka CMS-i väljatöötamisel, mis võimaldab neil säilitada saidi peamise omaduse - asjakohasuse. See artikkel käsitleb HTML-vormide loomise põhitõdesid, nende töötlemist ja võimalusi andmete edastamiseks ekraanivormidelt PHP-skriptidesse.

1) Looge lihtne vorm

Sildid Ja määrake vormi algus ja lõpp. Vormi algusmärgend sisaldab kahte atribuuti: tegevust Ja meetod. Atribuut action sisaldab skripti URL-i, mis tuleb skripti töötlemiseks kutsuda. Atribuut meetodütleb brauserile, millist tüüpi HTTP-päringut vormi esitamiseks kasutada; võimalikud väärtused POSTITA Ja saatmisviis.

Kommenteeri

Peamine erinevus POST- ja GET-meetodite vahel on teabe edastamise viis. GET meetodil lastakse parameetrid läbi aadressiriba, st. sisuliselt HTTP päringu päises, samas kui POST meetodi puhul edastatakse parameetrid HTTP päringu keha kaudu ja aadressiribal ei kajastu need kuidagi.

Ülesanne: Oletame, et peate looma ripploendi aastate 2000 kuni 2050 vahel.
Lahendus: Vormi töötlemiseks tuleb luua HTML-vorm elemendiga SELECT ja PHP-skript.

Arutelu:

Kõigepealt loome kaks faili: form.html ja action.php. Fail form.html sisaldab HTML-vormi koos ripploendiga. Lisaks saab loendis olevaid väärtusi määrata kahel viisil:

I. Andmete käsitsi sisestamine:


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

II. Andmete sisestamine tsükli kaudu:



Nagu näete, on teine ​​silmusega näide kompaktsem. Arvan, et selle vormi jaoks pole vaja anda käitleja skripti, sest seda töödeldakse täpselt samamoodi nagu tekstivälja, st. loendi väärtusi saab hankida superglobaalsest massiivist.

$_POST

Kirjeldus:




Loome faili serverisse saatmiseks HTML-vormi. See html-vorm sisaldab elementi sirvida , mis avab dialoogiboksi serverisse üleslaaditava faili valimiseks. Kui vajutate nuppu

"Edasta fail"

Kommenteeri

Kui usaldate kasutajaid failide oma serverisse üles laadima, peate olema eriti ettevaatlik. Ründajad saavad pildile või failile manustada "halva" koodi ja saata selle serverisse. Sellistel juhtudel peate failide allalaadimist rangelt kontrollima.

See näide demonstreerib kataloogi loomist ja faili kopeerimist sellesse kataloogi serverisse.

Samuti tahaksin demonstreerida näidet elemendiga märkeruut. See element erineb teistest elementidest veidi selle poolest, et kui mitte üks element märkeruut'a ei ole valitud, siis on superglobaalne muutuja Arvan, et selle vormi jaoks pole vaja anda käitleja skripti, sest seda töödeldakse täpselt samamoodi nagu tekstivälja, st. loendi väärtusi saab hankida superglobaalsest massiivist tagastab tühja väärtuse:


Sinine
Must
Valge




Kui teil on muid küsimusi või midagi pole selge - tere tulemast meie juurde

Sageli leiate veebisaitidelt lehti, millele on paigutatud HTML-vormid. Veebivormid on mugav viis saidi külastajatelt teabe saamiseks. Selle näiteks on -, -, mis annab tagasisidet saidi külastajatele ja arendajatele. Vormid on mugavad ka saidi arendajatele CMS-i väljatöötamisel, mis võimaldab neil säilitada saidi peamise omaduse - asjakohasuse. See artikkel on pühendatud HTML-vormide loomise põhitõdedele, nende töötlemisele ja andmete edastamise viisidele ekraanivormidelt PHP-skriptidesse.

1) Looge lihtne vorm

Sildid Ja määrake vormi algus ja lõpp. Vormi algusmärgend sisaldab kahte atribuuti: tegevust Ja meetod. Atribuut action sisaldab skripti URL-i, mis tuleb skripti töötlemiseks välja kutsuda. Atribuut meetodütleb brauserile, millist tüüpi HTTP-päringut vormi esitamiseks kasutada; võimalikud väärtused POSTITA Ja saatmisviis.

Kommenteeri

Peamine erinevus POST- ja GET-meetodite vahel on teabe edastamise viis. GET meetodil lastakse parameetrid läbi aadressiriba, st. sisuliselt HTTP päringu päises, samas kui POST meetodi puhul edastatakse parameetrid HTTP päringu keha kaudu ja aadressiribal ei kajastu need kuidagi.

Ülesanne: Oletame, et peate looma ripploendi aastate 2000 kuni 2050 vahel.
Lahendus: Vormi töötlemiseks peate looma HTML-vormi elemendiga SELECT ja PHP-skripti.

Arutelu:

Kõigepealt loome kaks faili: form.html ja action.php. Fail form.html sisaldab HTML-vormi koos ripploendiga. Lisaks saab loendis olevaid väärtusi määrata kahel viisil:

I. Andmete käsitsi sisestamine:


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

II. Andmete sisestamine tsükli kaudu:



Nagu näete, on teine ​​silmusega näide kompaktsem. Arvan, et selle vormi jaoks pole vaja anda käitleja skripti, sest seda töödeldakse täpselt samamoodi nagu tekstivälja, st. loendi väärtusi saab hankida superglobaalsest massiivist Arvan, et selle vormi jaoks pole vaja anda käitleja skripti, sest seda töödeldakse täpselt samamoodi nagu tekstivälja, st. loendi väärtusi saab hankida superglobaalsest massiivist.

$_POST

Kirjeldus:




Loome faili serverisse saatmiseks HTML-vormi. See html-vorm sisaldab elementi, mis avab dialoogiboksi serverisse üleslaaditava faili valimiseks. Kui vajutate nuppu , mis avab dialoogiboksi serverisse üleslaaditava faili valimiseks., edastatakse fail töötleja skriptile.

Seejärel peate skriptima käitleja action.php . Enne töötleja kirjutamist peame otsustama, millisesse kataloogi faili kopeerime:

Kommenteeri

Kui usaldate kasutajaid failide oma serverisse üles laadima, peate olema eriti ettevaatlik. Ründajad saavad pildile või failile manustada "halva" koodi ja saata selle serverisse. Sellistel juhtudel peate failide allalaadimist rangelt kontrollima.

See näide demonstreerib kataloogi loomist ja faili kopeerimist sellesse kataloogi serverisse.

Samuti tahaksin demonstreerida näidet elemendiga märkeruut. See element erineb teistest elementidest veidi selle poolest, et kui mitte üks element märkeruut'a ei ole valitud, siis on superglobaalne muutuja Arvan, et selle vormi jaoks pole vaja anda käitleja skripti, sest seda töödeldakse täpselt samamoodi nagu tekstivälja, st. loendi väärtusi saab hankida superglobaalsest massiivist tagastab tühja väärtuse:


Sinine
Must
Valge

või kuidas saata sõnum e-posti teel HTML-vormi abil

Teil on oma veebisait ja soovite saada kasutajatelt kirju või sõnumeid, küsimusi, nõuandeid või lihtsalt soove meili teel, siis see õppetund on teie jaoks!

Kuidas saata sõnumit e-posti teel

Vajame järgmisi faile:

  • vorm.html – vormiga leht.
  • form_processing.php – skriptiga fail, mis töötleb HTML-vormi.
  • Vaatame form.html koodi:

    HTML-vormide töötlemine PHP-ga



    Sinu nimi:


    Meil:


    Teema:


    Sõnum:





    HTML-vormil on väljad kasutaja nime, meiliaadressi, sõnumi teema, sõnumi teksti ja nupu “Esita” sisestamiseks, millele vajutades saadetakse info töötlemiseks PHP skripti form_processing.php failis.

    Hüperteksti transpordiprotokolli meetodil on kaks väärtust: get (vaikimisi) ja postitamine. Postitusmeetodit kasutatakse sagedamini, kuna see võimaldab edastada suuri andmemahtusid. Kõik postitusmeetodi kaudu töötlemisskriptile edastatud väärtused salvestatakse assotsiatiivsesse massiivi $_POST (see massiiv on algselt sisse ehitatud PHP interpretaatorisse), mis koosneb $_POST muutujatest, kus nimi on sisendi tegelik nimi väli – atribuudi name="" väärtus:

    Loome protsessori faili form_processing.php:


    Teie sõnum on edukalt saadetud!


    Kodule >>>





    Parandage järgmine viga:





    Koodi jaotis:

    — kuvab määratud teksti, kui HTML-vormi väljad on õigesti täidetud. index.php – teie saidi avaleht.

    Koodi jaotis:

    - näitab tehtud vea olemust.

    Muutuja väärtus:

    — kuvab vastuse kirjutamisel automaatselt kasutaja e-kirja vajalikul real.