Formos html duomenų išvestis php. Paprasčiausia duomenų siuntimo į paštą forma naudojant HTML ir PHP

Norint organizuoti duomenų perdavimą į serverį naudojant formą, reikės įdiegti HTML formą, kurioje svetainės lankytojai įves savo informaciją ir PHP kodą, kurio tikslas – priimti ir apdoroti gautus duomenis serveryje.

HTML pateikimo forma

Puslapio formą sudaro žymos

...
, kurio viduje dedamos laukų žymos, skirtos tekstinei informacijai įvesti, specialių komponentų žymos (pavyzdžiui, kombinuotasis langelis), žymos, skirtos pasirinkimo laukui ir failo įkėlimui .

* HTML5 taip pat galima dėti formos laukų žymas ne formų žymose, o bet kurioje puslapio vietoje. Tuo pačiu metu kiekviename tokiame lauke turi būti nurodytas atributas „form“, kad būtų galima nustatyti, su kokia pateikimo forma jis turi sąveikauti.

Taigi, paprasčiausioje formoje gali būti toks kodas:


A vertė:
B vertė:

Formos elementai ir jų parametrai:

action="manoforma.php"– atributas "action" nustato, kuris php failas apdoros siunčiamus duomenis. Šiame pavyzdyje duomenys bus siunčiami į „myform.php“ failą, esantį tame pačiame kataloge kaip ir formos puslapis. Jei šis atributas nėra aiškiai nurodytas, formos duomenys bus siunčiami pačios formos puslapio adresu.

metodas = "post"– metodo parametras apibrėžia POST arba GET duomenų perdavimo būdą. Daugiau apie tai straipsnyje „POST ir GET metodų skirtumai“ . Jei aiškiai nenurodysite atributo, GET metodas bus naudojamas pagal numatytuosius nustatymus.

Tekstas "A vertė:" Ir "B vertė:" pridėta tik siekiant sukurti ir suprasti formą vartotojui. Duomenų perdavimui to pridėti nebūtina, tačiau norint, kad vartotojas suprastų, ką įvesti, verta nurodyti.

žymės naudojami formuojant įvairius formos valdiklius.

type="tekstas"– atributas "type" apibrėžia lauko tipą. Priklausomai nuo to, kuris tipas yra nurodytas, išvaizda elementas ir jo paskirtis. Atributo "text" reikšmė nurodo, kad elementas naršyklėje bus rodomas kaip vienos eilutės teksto laukas, kuriame vartotojas gali įvesti savo eilutę.

name="duomenys1"– atributas "name" nurodo pavadinimą, tiksliau – serverio gauto masyvo duomenų indeksą. Tai būtinas parametras, pagal kurį php tvarkyklėje bus galima pasiekti perduotą reikšmę. Pavadinimas gali būti pasirinktas savavališkai, tačiau patogiau, kai ši reikšmė turi kokią nors aiškią reikšmę.

tipo = "pateikti"- žyma su šia parametro "type" reikšme bus rodomas puslapyje kaip mygtukas. Tiesą sakant, galite išsiversti be formos mygtuko. Jei, pavyzdžiui, formoje yra teksto laukų, tada siųsti galima tiesiog klaviatūroje paspaudus „Enter“. Tačiau turint mygtuką forma tampa aiškesnė.

value="Pateikti" !}– šiuo atveju (type="submit") apibrėžia tik antraštę ant mygtuko. Pavyzdžiui, tipo="tekstas", tai bus tekstas, kuris bus rodomas teksto lauke.

Dėl to šis kodas puslapyje atrodys maždaug taip:

Paspaudus mygtuką, duomenys bus išsiųsti į nurodytą puslapį, o jei jis yra ir tinkamai veikia, duomenys bus tvarkomi.

HTML formos pateiktų duomenų apdorojimas PHP

Aprašytu būdu išsiųsti duomenys patalpinami į $_POST, $_GET ir $_REQUEST superglobalinius masyvus. $_POST arba $_GET bus duomenys, priklausomai nuo to, kuris metodas buvo išsiųstas. $_REQUEST yra pateikti duomenys bet kuriuo iš nurodytų metodų.

$_POST, $_GET ir $_REQUEST yra asociatyvūs masyvai, kurių indekso laukai atitinka žymų "name" atributus . Atitinkamai, norėdami dirbti su duomenimis faile myform.php, tokio masyvo elementų reikšmes galite priskirti kintamiesiems, nurodydami lauko pavadinimą kaip indeksą:

// GET metodui
$a = $_GET[ "duomenys1" ];
$b = $_GET[ "duomenys2"];

// POST metodui
$a = $_POST[ "duomenys1" ];
$b = $_POST[ "duomenys2"];

// bet kokiu būdu
$a = $_REQUEST[ "duomenys1" ];
$b = $_REQUEST[ "duomenys2"];

Formos laukelių užpildymo tikrinimas

Kartais, gaunant duomenis, reikia patikrinti, ar vartotojas nepateikė tuščios formos. Tam galite naudoti tuščią funkciją.

if (tuščia ($_REQUEST["data1" ])) (
aidas „Laukas neužpildytas“;
} Kitas(
aidas „Laukas buvo užpildytas“;
$a = $_REQUEST[ "duomenys1" ];
}

Paprastai šio sprendimo pakanka. Jei reikės įvesti tekstą, bus aišku, ar jis įvestas, ar ne. Tačiau jei vartotojas tyčia įveda nulį skaičiavimui, tuščia funkcija parodys, kad reikšmės nėra. Todėl tokioms situacijoms geriau naudoti isset funkciją. Jis aiškiai patikrins, ar vertė nustatyta, ar ne.

if (isset ($_REQUEST["duomenys1" ])) (
aidas „Laukas buvo užpildytas“;
$a = $_REQUEST[ "duomenys1" ];
} Kitas(
aidas „Laukas neužpildytas“;
}

Viena iš dažniausiai praktikoje atliekamų užduočių yra grįžtamojo ryšio formos įgyvendinimas. Tobishas rašo savo HTML kodą, formuoja jo stilių CSS, PHP kūrimas scenarijų, kuris apdorotų iš vartotojo gautus duomenis ir siųstų juos į mūsų paštą, parašydamas JS scenarijų, kuris patikrintų formą, ar įvesties duomenys yra pakankami, apsaugotų mūsų atžalas nuo šiukšlių, kad mūsų pašto dėžutė nesubyrėtų nuo botų atakų. .

Visi pirmiau minėti punktai bus apsvarstyti mūsų apžvalgoje ir išsamiai pakomentuoti.

Taigi, pradėkime kurti atsiliepimų formą:

HTML

Pirmiausia rašome HTML kodą, jis nustato laukus, kuriuos pildys vartotojas. Jie bus kuriami ateityje. Formos kodas atrodo taip:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" >Vardas: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" >Telefonas: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" >El. paštas: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" >Pranešimas: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Siųsti" />

O dabar vizualiai atrodo taip:

Sutinku, kol kas viskas negražu ir niekas neaišku, bet mes tik pradėjome.

Išsamiai apsvarstykite aukščiau pateiktą kodą:

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


    Norėdami sukurti formą, turite naudoti formos žymą. Būtent jis nustato kodo interpretatoriaus formos pradžią ir pabaigą. Ji, kaip ir bet kuri žyma, turi visą atributų rinkinį, tačiau norint, kad forma veiktų, reikia tik dviejų, tai yra metodas (formoms paprastai naudojamas užklausos siuntimo būdas, postas) ir veiksmas (nurodo kelias į formų tvarkyklės failą, būtent šiame faile bus PHP scenarijus, kuris tada atsiųs vartotojo įvestas reikšmes mums paštu, mūsų atveju matome, kad šis failas vadinamas mail.php ir jis yra tame pačiame svetainės kataloge kaip ir puslapis, kurį svarstome).
  • < input maxlength= "30" type= "text" name= "name" />


    Toliau turime įvestis. Tai iš tikrųjų yra patys formos laukai, į kuriuos vartotojai įves mums reikalingą informaciją (tipas = "tekstas" rodo, kad tai bus tekstas). Atributas maxlength nurodo, kiek simbolių vartotojas gali įvesti duotame formos laukelyje. Svarbiausias atributas yra pavadinimas – jis nurodo konkretaus lauko pavadinimą. Būtent šiais pavadinimais PHP scenarijus toliau apdoros į jį patenkančią informaciją. Jei norite, taip pat galite nustatyti vietos rezervavimo atributą, kuris rodo lauke esantį tekstą, kuris išnyksta, kai žymeklis įdedamas į jį. Viena su vietos rezervavimo ženklu susijusių problemų yra ta, kad kai kurios senesnės naršyklės jo nepalaiko.
  • < label for = "name" >Vardas:


    Naudojama, jei atsisakėme rezervuotų vietų. Įprasta lauko etiketė, atributas for nurodo, į kurį lauką nurodo nurodyta etiketė. Reikšmė nurodo mus dominančios srities pavadinimą.
  • < textarea rows= "7" cols= "50" name= "message" >


    Kaip ir įvestis, ji skirta vartotojui įvesti informaciją, tik šį kartą laukas paaštrintas ilgiems pranešimams. Eilutės nurodo lauko dydį eilutėmis, stulpeliais – simboliais. Apskritai jie nustato mūsų lauko aukštį ir plotį.
  • < input type= "submit" value= "Siųsti" />


    Type="submit" nurodo, kad tai yra formos pateikimo mygtukas, o reikšmė nurodo tekstą, kuris bus šio mygtuko viduje.
  • < div class = "right" >


    naudojamas tik tolesniam vizualiniam formos apipavidalinimui.

css

Kad mūsų atsiliepimų forma atrodytų reprezentatyvi, ji turi būti sukurta. Norėdami gauti tokį rezultatą:

Mes naudojome šį kodą:

forma ( fonas: #f4f5f7; užpildymas: 20px; ) forma . kairė, forma. dešinėje ( ekranas: eilutinis blokas; vertikaliai lygiuoti: viršuje; plotis: 458 pikseliai; ) forma . dešinė ( užpildymas- kairysis: 20 piks.; ) etiketė ( ekranas: blokas; šrifto dydis: 18 piks.; tekstas - lygiavimas: centre; paraštė: 10 piks. 0 piks. 0 piks.; ) įvestis, teksto sritis ( kraštinė: 1 piks. vientisas #82858D; užpildymas: 10 piks.; šrifto dydis: 16 piks.; plotis: 436 piks.; ) teksto sritis (aukštis: 98 piks.; paraštė- apačia: 32 piks.; ) input[ type= "submit" ] ( plotis: 200 pikselių; slankioji: dešinėje; kraštinė: nėra; fonas: #595B5F; spalva: #fff; teksto transformacija: didžiosios raidės; )

Nematau prasmės išsamiai apibūdinti CSS, tik atkreipsiu jūsų dėmesį į pagrindinius dalykus:

  1. Formoje nebūtina rašyti kiekvienos žymos dizaino. Pabandykite sukurti parinkiklius taip, kad galėtumėte sudaryti visų reikalingų elementų stilių keliose kodo eilutėse.
  2. Nenaudokite papildomų žymų pagal tipą linijoms nutraukti ir įtraukoms kurti < br>, < p> ir taip toliau, šias užduotis puikiai atlieka CSS su ypatybių ekranu: blokas ir paraštė su užpildu. Daugiau apie tai, kodėl neturėtumėte naudoti < br> makete, apskritai, galite perskaityti br žymą straipsnyje, bet ar ji tikrai reikalinga? .
  3. Formoms nenaudokite lentelių išdėstymo. Tai prieštarauja šios žymos semantikai, o paieškos sistemos mėgsta semantinį kodą. Norint suformuoti vizualinę dokumento struktūrą, mums užtenka div žymų, o ekranas: CSS nustatytas inline-block ypatybes (išdėlioja blokus iš eilės) ir vertikaliai suderinti: top (neleidžia joms plisti ekrane). ), nustatome jiems reikiamą aukštį ir voila, nieko perteklinio ir viskas išdėstyta taip, kaip reikia.

Norintiems sutaupyti savo laiką svetainių dizainui, galiu patarti kuriant svetaines, ypač savo parašytas, naudoti CSS karkasus. Mano pasirinkimas šiuo atžvilgiu yra „Twitter Bootstrap“. Galima peržiūrėti pamoką apie formų kūrimą naudojant ją.

PHP

Na, atėjo laikas padaryti mūsų formą veikiančią.

Einame į savo šakninį svetainės katalogą ir ten sukuriame mail.php failą, kurio kelią anksčiau nurodėme formos žymos action atribute.

Galiausiai jo kodas atrodys taip:

Jūsų žinutė sėkmingai išsiųsta \" javascript: history.back()\" >Grįžti

" ; if (! tuščias ($_POST [ "vardas" ] ) ir ! tuščias ($_POST [ "telefonas" ] ) ir ! tuščias ($_POST [ "paštas" ] ) ir ! tuščias ($_POST [ "pranešimas" ] ) ) ( $vardas = apkarpyti (juostelės_žymos ($_POST [ "vardas" ] ) ) ) ; $telefonas = apkarpyti (juostelės_žymės ($_POST [ "telefonas" ] ) ) ; $paštas = apkarpyti (juostelės_žymos ($_POST [ "paštas" ]) ) ) ; $pranešimas = trim (strip_tags ($_POST [ "pranešimas" ] ) ) ; paštas (, , "Jums išsiųstas: " . $vardas . "
Jo numeris: " . $telefonas ".
Jo paštas: " . $mail . "
Jo žinutė: "
. $pranešimas , ) ; aidas „Jūsų žinutė sėkmingai išsiųsta!
Netrukus gausite atsakymą
$atgal"
; išeiti; ) else ( aidas ; išeiti; ) ?>

Galite praleisti šio dokumento HTML ir CSS dalių aptarimą. Iš esmės tai yra įprastas svetainės puslapis, kurį galite kurti taip, kaip norite ir kaip jums reikia. Panagrinėkime svarbiausią jo dalį – PHP scenarijų, skirtą formos apdorojimui:

$atgal = "

\" javascript: history.back()\" >Grįžti

" ;

Su šia eilute sukuriame nuorodą, skirtą grįžti į ankstesnį puslapį. Kadangi iš anksto nežinome, iš kurio puslapio vartotojas pateks į šį, tai daroma naudojant nedidelę JS funkciją. Ateityje mes tiesiog kreipsimės į šį kintamąjį, kad parodytume jį mums reikalingose ​​vietose.

if (! tuščias ($_POST [ "vardas" ] ) ir ! tuščias ($_POST [ "telefonas" ] ) ir ! tuščias ($_POST [ "paštas" ] ) ir ! tuščias ($_POST [ "pranešimas" ] ) ) ( // vidinė tvarkyklės dalis) kita ( aidas "Prašome užpildyti visus laukus, kad išsiųstumėte pranešimą! $atgal"; išeiti; )

Čia tvirtiname formos patikrinimą, ar laukeliai užpildyti. Kaip atspėjote, $_POST["vardas"] dalyje savo įvesties pavadinimo atributo reikšmę įrašome kabutėse.

Jei visi laukai bus užpildyti, scenarijus pradės apdoroti duomenis savo vidinėje dalyje, tačiau jei bent vienas laukas nebuvo užpildytas, vartotojo ekrane bus rodomas pranešimas su prašymu užpildyti visus laukus formos aidas "Norėdami išsiųsti pranešimą, užpildykite visus laukus! $atgal" ir nuorodą, kad grįžtumėte į ankstesnį puslapį, kurį sukūrėme su pačia pirma eilute.

Tada įklijuokite jį į formos tvarkyklės vidų:

$vardas = trim (juostelės_žymės ($_POST [ "vardas" ] ) ) ; $phone = trim (juostelės_žymės ($_POST [ "telefonas" ] ) ) ; $paštas = trim (strip_tags ($_POST [ "paštas" ] ) ) ; $pranešimas = trim (juostelės_žymės ($_POST [ "pranešimas" ] ) ) ;

Taigi mes išvalėme vartotojo įvestį nuo html žymų ir papildomų tarpų. Tai leidžia apsisaugoti nuo kenkėjiško kodo gavimo mums siunčiamuose pranešimuose.

Patikrinimai gali būti sudėtingi, bet tai priklauso nuo jūsų. Mes jau nustatėme minimalią apsaugą serverio pusėje. Visa kita padarysime kliento pusėje naudodami JS.

Nerekomenduoju visiškai atsisakyti formų apsaugos serverio pusėje JS naudai, nes nors tai itin reta, bet yra unikalių žmonių, kurių JS naršyklėje išjungtas.

Išvalę žymas, pridėkite siunčiamą pranešimą:

Paštas ( [email protected], „El. laiškas iš jūsų_svetainės_adreso“, "Jums parašė: " . $vardas . “
Jo numeris: " . $telefonas ".
Jo paštas: " . $mail . "
Jo žinutė: "
. $pranešimas , "Turinio tipas:tekstas/html;charset=windows-1251") ;

Būtent ši linija užsiima pranešimo mums formavimu ir siuntimu. Jis pildomas taip:

  1. [email protected]“ – čia įterpkite savo laišką tarp kabučių
  2. „El. laiškas iš jūsų_svetainės_adreso“ yra pranešimo, kuris bus išsiųstas el. paštu, tema. Čia galite rašyti bet ką.
  3. „Jums parašė: „.$vardas“. < br /> Jo numeris yra: ".$phone". < br /> Jo paštas: „.$mail“. < br /> Jo pranešimas: ".$message - formuojame patį pranešimo tekstą. $name - įterpiame vartotojo užpildytą informaciją per prieigas prie ankstesnio veiksmo laukelių, kabutėse aprašome, ką šis laukas reiškia, su žyma < br /> darome eilutės pertrauką, kad visa žinutė būtų skaitoma.
  4. Content-type:text/html;charset=windows-1251 – pabaigoje yra aiškiai nurodyta pranešime perduodamų duomenų tipas ir jo kodavimas.

SVARBU!

Koduotė nurodyta dokumento „galvoje“ ( < meta http- equiv= "Content-Type" content= "text/html; charset=windows-1251" /> ), kodavimas iš pranešimo Content-type:text/html;charset=windows-1251 ir apskritai PHP failo kodavimas turi sutapti, kitu atveju laiškuose, gautuose paštu, vietoj rusiškų ar angliškų raidžių rašoma „beprotiški žodžiai “ bus rodomas.

Daugelis žmonių aiškiai nenurodo siunčiamo pranešimo kodavimo, tačiau dėl to ateityje gali kilti problemų kai kuriose pašto programose (paštu atkeliauja neįskaitomi laiškai), todėl rekomenduoju vis tiek tai nurodyti.

Formos tikrinimas, ar įvesties duomenys yra pakankami

Kad vartotojai netyčia nepraleistų laukų ir viską užpildytų teisingai, verta patikrinti įvesties duomenis.

Tai galima padaryti tiek PHP serverio pusėje, tiek JS kliento pusėje. Naudoju antrą variantą, nes taip žmogus gali iš karto sužinoti ką padarė ne taip ir ištaisyti klaidą neatlikdamas papildomų puslapio perėjimų.

Scenarijaus kodas įterpiamas į tą patį failą, kuriame yra formos HTML dalis. Mūsų atveju tai atrodys taip:

< script>funkcija checkForm(form) ( var pavadinimas = forma. pavadinimas. reikšmė; var n = pavadinimas. match(/ ^[ A- Za- zA- Za-z] * [ A- Za- zA- Za-z] + $/ ); if (! n) ( įspėjimas ( "Pavadinimas buvo įvestas neteisingai, ištaisykite klaidą") ; grąžinti klaidingą ; ) var telefonas = forma. telefonas. vertė; var p = telefonas. atitikti (/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; if (! p) ( įspėjimas ( „Telefonas įvestas neteisingai“) ; grąžinti klaidingą ; ) var paštas = forma. Paštas. vertė; var m = paštas . match(/ ^[ 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] + $/ ) ; if (! m) ( įspėjimas ( "Įvestas neteisingas el. pašto adresas, ištaisykite klaidą") ; grąžinti klaidingą ; ) grąžinti teisingą ; )

Na, dabar įprasta analizė:

Už tai, kad spustelėjus formos pateikimo mygtuką, mes ją patvirtintume scenarijaus paleidimą pakabiname ant formos žymos:

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

Dabar taškas po taško paimame čekio sudėtį:


Kaip matote, toks mini čekis yra parašytas kiekvienam mūsų laukui. Ekrano kopijoje vieno lauko patikrinimą paryškinau raudonu kvadratu, kitų laukų struktūra panaši, o jei reikia pridėti lauką arba jį pašalinti, tai dabar galite lengvai padaryti.

Interaktyvios svetainės priima vartotojų informaciją. Vienas įprastas būdas gauti įvestį yra formos.

Šioje pamokoje pamatysime, kaip sukurti formą ir apdoroti įvestį serveryje.

Kuriant formą, atsižvelgiama į du svarbius atributus: veiksmas Ir metodas.

veiksmas Naudojamas įvesti URL, kuriame pateikiama forma. Tai gali būti PHP failas, kuris tvarko įvestį. metodas Gali būti „post“ arba „get“, kurie yra skirtingi duomenų perdavimo būdai. Kol kas jums nereikia gilintis į šių metodų skirtumus; metodas „gauti“ siunčia duomenis per URL, o metodas „post“ siunčia juos kaip duomenų bloką per standartinę įvesties paslaugą (STDIN). Paskutinėje mokymo programoje matėme, kaip duomenys gaunami naudojant URL naudojant $_GET . Šioje pamokoje apžvelgsime, kaip gaunami „post“ metodu išsiųsti duomenys.

HTML puslapis su forma

Formos puslapis nebūtinai turi būti PHP failas (bet gali būti). Jis net nebūtinai turi būti toje pačioje svetainėje kaip failas, kuris gauna duomenis.

Pirmajame pavyzdyje pažvelgsime į labai paprastą formą su vienu teksto lauku:

Forma

Įveskite savo vardą

Naršyklėje bus rodoma ši forma:

Dabar ateina linksmoji dalis: duomenų gavimas ir apdorojimas naudojant PHP.

Formos duomenų užklausa naudojant PHP

Jei reikia prašyti duomenų, pateiktų naudojant formą (naudojant paštu), naudojate $_POST:

$_POST["lauko pavadinimas"];

kuri grąžins formos lauko reikšmę. Pabandykime tai su pavyzdžiu.

Pirmiausia sukurkime puslapį su forma, kaip ir anksčiau. Tada sukursime PHP puslapį (tvarkyklę) "handler.php" (atkreipkite dėmesį, kad tai yra puslapio pavadinimas, kurį įrašėme į atributą veiksmas mūsų

).

Faile "handler.php" bus:

Forma aidas"

"; ?>

Vartotojo įvestis ir sąlygos

Šiame pavyzdyje mes stengsimės naudoti vartotojo įvestį, kad sukurtume sąlygas. Pirmiausia mums reikia formos:

Forma

Koks tavo vardas:

Jūsų mėgstamiausia spalva: Raudona Žalias Mėlyna

Naršyklėje tai atrodys taip:

Dabar naudojame šias įvestis, kad sukurtume puslapį, kuris automatiškai pakeičia fono spalvą pagal vartotojo įvestį. Tai atliekama sukuriant sąlygą (žr. Pamoka ), kuri naudoja vartotojo įvestus duomenis formoje.

$strHeading = "

Sveiki, " . $_POST["naudotojo vardas"] . "

"; jungiklis ($_POST["mėgstamiausia spalva"]) ( atvejis "r": pertrauka; atvejis "g"; pertrauka; atvejis "b": pertrauka; numatytasis: pertrauka; ) ?> Forma

Fonas bus baltas, nebent vartotojas formoje nurodys pageidaujamą spalvą. Tai pasiekiama nustatant vertę numatytas(numatytasis), kuris taikomas, jei neįvykdoma nė viena iš sąlygų.

Bet kas atsitiks, jei vartotojas nepateiks savo vardo? Tada pavadinimas bus tik „Labas“. Sukurkime papildomą sąlygą, kad pakeistume šią parinktį.

$strVartotojo vardas = $_POST["vartotojo vardas"]; if ($strVartotojo vardas != "") ( $strHeading = "

Sveiki, " . $_POST["naudotojo vardas"] . "

"; ) Kitas ( $strHeading = "

Sveikas, nepažįstamasis!

";
} jungiklis ($_POST["mėgstamiausia spalva"]) („r“ atvejis: $strBackgroundColor = "rgb(255,0,0)"; pertrauka; atvejis "g"; $strBackgroundColor = "rgb(0,255,0)"; pertrauka; „b“ atvejis: $strBackgroundColor = "rgb(0,0,255)"; pertrauka; numatytas: $strBackgroundColor = "rgb(255,255,255)"; pertrauka; ) ?> Forma

Aukščiau pateiktame pavyzdyje mes naudojame sąlygas čekius informaciją iš vartotojo. Šiuo atveju nėra taip svarbu, jei vartotojas nenurodo vardo. Tačiau kadangi jūsų kodas tampa vis sudėtingesnis, labai svarbu atsižvelgti į galimybę, kad vartotojas iš viso nepildytų formų.

Pavyzdys: Susisiekimo forma

Remdamiesi savo PHP ir formų žiniomis, galite sukurti kontaktinės informacijos formą naudodami pašto funkciją, kurios sintaksė yra tokia:

Paštas (kur, tema, pranešimas);

Pirmiausia sukurkime paprastą HTML formą:

Kontaktinė forma

Kontaktinė forma

Tema:

Pranešimas:

Tada jums reikia PHP scenarijaus, kad išsiųstumėte vartotojo įvestį:

Funkcijos // Gavėjas (pakeiskite savo el. pašto adresą) $strEmail = " [apsaugotas el. paštas]"; // Gauti vartotojo įvestis $strSubject = $_POST["tema"]; $strMessage = $_POST["pranešimas"]; paštas($strEl.paštas,$strTema,$strPranešimas); echo "Laiškas išsiųstas."; ?>

Atminkite, kad pavyzdys veikia tik tuo atveju, jei turite prieigą prie pašto serverio. Pagal numatytuosius nustatymus XAMPP ir daugumoje nemokamų kompiuterių taip nėra. Taigi, kai kuriems pagrindiniams kompiuteriams gali prireikti formos antraštės, kuri atliekama naudojant papildomą parametrą:

Paštas ("jūs@jūsųdomenas.com", "Test", "Tai bandomasis pranešimas", "Nuo: aš@manodomenas.com");

Viena didžiausių PHP privalumų yra tai, kaip jis veikia su HTML formomis. Svarbiausia, kad kiekvienas formos elementas būtų automatiškai pasiekiamas jūsų PHP programoms. Daugiau informacijos apie formų naudojimą PHP rasite skyriuje. Štai HTML formos pavyzdys:

Beispiel #1 Paprasčiausia HTML forma

Tavo vardas:

Tavo amžius:

Šioje formoje nėra nieko ypatingo. Tai įprasta HTML forma be jokių specialių žymų. Kai vartotojas užpildys formą ir spusteli mygtuką pateikti, bus iškviestas action.php puslapis. Šiame faile gali būti kažkas panašaus į:

Beispiel #2 Formos duomenų atvaizdavimas

Sveiki, .
Taumetų.

Šios programos išvesties pavyzdys:

Sveikas Sergej. Jums 30 metų.

Jei neatsižvelgsite į kodo dalis su htmlspecialchars() Ir (int), šio kodo veikimo principas turėtų būti paprastas ir aiškus. htmlspecialchars() užtikrina, kad „specialieji“ HTML simboliai būtų tinkamai užkoduoti, kad į jūsų puslapį nebūtų įterptas kenkėjiškas HTML arba Javascript. Amžiaus lauką, kuris, kaip žinome, turi būti skaičius, galime tiesiog konvertuoti sveikasis skaičius, kuri automatiškai atsikratys nepageidaujamų simbolių. PHP taip pat gali tai padaryti automatiškai su filtro plėtiniu. $_POST["vardas"] ir $_POST["amžius"] kintamuosius automatiškai nustato PHP. Anksčiau naudojome $_SERVER superglobal, bet čia taip pat naudojame $_POST superglobal, kuriame yra visi POST duomenys. pastebėti, kad siuntimo būdas(metodas) mūsų formos yra POST. Jei naudotume metodą GAUTI, tada mūsų formos informacija būtų $_GET superglobal. Arba galite naudoti $_REQUEST kintamąjį, jei duomenų šaltinis nėra svarbus. Šiame kintamajame yra GET, POST, COOKIE duomenų derinys.

prieš 15 metų

Pagal HTTP specifikaciją turėtumėte naudoti POST metodą, kai naudojate formą norėdami pakeisti kažko būseną serverio gale. Pavyzdžiui, jei puslapyje yra forma, leidžianti vartotojams pridėti savo komentarus, pvz., puslapis čia, formoje turėtų būti naudojamas POST, todėl šie puslapiai nėra pažymėti arba išsaugoti talpykloje.

Turėtumėte naudoti GET metodą, kai jūsų forma ką nors atima iš serverio ir iš tikrųjų nieko nekeičia. Pavyzdžiui, paieškos variklio formoje turėtų būti naudojama GET, nes ieškant svetainėje neturėtų pasikeisti nieko, kas gali rūpėti klientui, o paieškos variklio užklausos rezultatų žymėjimas arba kaupimas talpykloje yra toks pat naudingas, kaip žymėjimas arba talpyklos išsaugojimas. statinis HTML puslapis.

Prieš 2 metus

Verta paaiškinti:

POST nėra saugesnis nei GET.

Priežastys, kodėl pasirenkama GET vs POST, yra susijusios su įvairiais veiksniais, tokiais kaip užklausos tikslas (ar „pateikiate“ informaciją?), užklausos dydis (yra ribos, kiek gali būti URL ilgio, ir GET parametrai siunčiami į URL) ir kaip lengvai norite, kad veiksmas būtų bendrinamas – pavyzdžiui, „Google“ paieškos GET, nes leidžia lengvai nukopijuoti ir bendrinti paieškos užklausą su kitu tiesiog bendrinant URL.

Saugumas čia yra svarbus tik dėl to, kad GET lengviau bendrinti nei POST. Pavyzdys: nenorite, kad GET atsiųstų slaptažodį, nes vartotojas gali bendrinti gautą URL ir netyčia atskleisti savo slaptažodį.

Tačiau GET ir POST yra vienodai lengvai perimti tinkamoje vietoje esantis kenkėjiškas asmuo, jei neįdiegsite TLS / SSL, kad apsaugotumėte patį tinklo ryšį.

Visos formos, siunčiamos per HTTP (dažniausiai 80 prievadas), yra nesaugios, todėl šiandien (2017 m.) nėra daug svarių priežasčių, kodėl viešoji svetainė nenaudoja HTTPS (kuris iš esmės yra HTTP + transporto lygmens sauga).

Be to, jei naudojate TLS, sumažinate riziką, kad naudotojai į jūsų srautą įves kodą (AD), kurio neįdėjote jūs.

Vienoje iš ankstesnių temų jau buvo svarstoma galimybė gauti duomenis iš formos. Šioje temoje plačiau paaiškinsiu, kaip teisingai siunčiama forma į serverį, taip pat kaip forma apdorojama PHP.

Formos pateikimas

Įvesties laukas. Dažniausiai pasitaikantys formos elementai yra įvairūs įvesties laukai. Jie sukurti naudojant žymą daug tipų ir žymų

pasirinkite. Iš žymos ir sąrašo elementams, ty žymoms

Radijo mygtukas. Visi tos pačios grupės radijo mygtukai turi turėti tą patį pavadinimo atributą. Ši reikšmė ne tik nustato parametro pavadinimą, bet ir sugrupuoja radijo mygtukus į grupę, iš kurios galima pasirinkti tik vieną radijo mygtuką. Vertės atributas nustatomas kitaip. Prie formos pridėkime radijo mygtukus:

Žymimasis langelis. Skirtingai nuo radijo mygtukų, kiekvienas žymimasis laukelis yra atskiras formos elementas. Visi žymimieji langeliai nepriklauso vienas nuo kito ir kiekvienas siunčia savo duomenis į serverį. Visų žymimųjų laukelių pavadinimo atributas turi būti skirtingas, o reikšmės atributas gali būti toks pat arba skirtingas. Tačiau žymimajame laukelyje nėra jokių konkrečių duomenų. Jis gali būti pasirinktas arba ne. Todėl nėra prasmės nustatyti ilgąją vertę. Galima nustatyti vieno simbolio reikšmę, pavyzdžiui, 1. Serveryje šios reikšmės reikšmė bus tokia: jei reikšmė yra, tada buvo pažymėtas žymimasis langelis, o jei reikšmės nėra, tada jis nepasirinktas. Pridėkite žymimuosius laukelius prie formos ir sukurkime formos pateikimo mygtuką:

Duomenų apdorojimas iš formų

Siūlomame pavyzdyje sukuriama forma, kuri siunčia duomenis į scenarijų takeform.php. Todėl jums reikia sukurti šį scenarijų. Tai bus ne tik programa, o puslapis, kuris bus suformuotas priklausomai nuo iš formos gautų duomenų. Forma pateikiama naudojant POST metodą. Scenarijus paima šiuos duomenis iš $_POST superglobalinio masyvo. Masyvo elementus galima tiesiog panaudoti scenarijuje, tačiau jei su jais reikia daug dirbti, tai kiekvieną kartą rašyti elemento pavadinimą yra nepatogu. Lengviau įrašyti kintamojo reikšmę ir ją pasiekti. Sukurkime failą takeform.php ir surašykime pirmųjų dviejų formos elementų reikšmes į kintamuosius:

takeform.php:

Pažymėti