Forma html izlaz podataka php. Najjednostavniji obrazac za slanje podataka na poštu koristeći HTML i PHP

Da biste organizirali prijenos podataka na server pomoću obrasca, morat ćete implementirati HTML obrazac u koji će posjetioci stranice unositi svoje podatke i PHP kod, čija je svrha prihvatanje i obrada primljenih podataka na serveru.

HTML obrazac za podnošenje

Obrazac na stranici formiraju oznake

...
, unutar kojeg su postavljene oznake polja za unos tekstualnih informacija, oznake za posebne komponente (na primjer, kombinirani okvir), oznake za polje za odabir i upload datoteke.

* Za HTML5, također je moguće postaviti oznake polja obrasca ne unutar oznaka obrasca, već bilo gdje na stranici. Istovremeno, za svako takvo polje, atribut "form" mora biti specificiran kako bi se odredilo s kojim oblikom podnošenja treba biti u interakciji.

Dakle, najjednostavniji obrazac za podnošenje može sadržavati sljedeći kod:


vrijednost:
B vrijednost:

Elementi obrasca i njihovi parametri:

action="myform.php"– atribut "action" određuje koji php fajl će obraditi poslane podatke. U ovom primjeru, podaci će biti poslani u datoteku "myform.php" koja se nalazi u istom direktoriju kao i stranica obrasca. Ako ovaj atribut nije eksplicitno naveden, podaci obrasca će se poslati na adresu stranice samog obrasca.

method="post"– parametar metode definira POST ili GET metod prijenosa podataka. Više o tome u članku "Razlike između POST i GET metoda" . Ako ne navedete eksplicitno atribut, GET metoda će se koristiti po defaultu.

Tekst "Vrijednost A:" I "Vrijednost B:" dodano samo u svrhu dizajna i razumljivosti obrasca za korisnika. Ovo nije potrebno dodavati za prijenos podataka, ali da bi korisnik razumio šta treba unijeti, vrijedi ga navesti.

oznake koriste se za formiranje raznih kontrola obrasca.

type="text"– atribut "type" definira tip polja. Ovisno o tome koji je tip specificiran, izgled element i njegovu namenu. Vrijednost atributa "text" specificira da će element biti prikazan u pretraživaču kao tekstualno polje u jednom redu gdje korisnik može unijeti svoj string.

name="podaci1"– atribut "name" označava ime, odnosno indeks podataka u nizu koje je primio server. Ovo je obavezan parametar pomoću kojeg će u php rukovatelju biti moguće pristupiti proslijeđenoj vrijednosti. Ime se može birati proizvoljno, međutim, zgodnije je kada ova vrijednost ima neko jasno značenje.

type="pošalji"- oznaka sa ovom vrijednošću parametra "type" će biti prikazan na stranici kao gumb. U stvari, možete i bez dugmeta na obrascu. Ako, na primjer, u obrascu postoje tekstualna polja, slanje se može izvršiti jednostavnim pritiskom na "Enter" na tastaturi. Ali postojanje dugmeta čini formu jasnijom.

value="Pošalji" !}– u ovom slučaju (za type="submit") definira samo natpis na gumbu. Za type="text", na primjer, ovo će biti tekst koji će biti prikazan u tekstualnom polju.

Kao rezultat, na stranici će ovaj kod izgledati otprilike ovako:

Klikom na dugme podaci će biti poslani na navedenu stranicu, a ukoliko ona postoji i radi ispravno, podaci će biti obrađeni.

Obrada HTML obrasca dostavljenih podataka u PHP-u

Podaci koji se šalju na opisani način stavljaju se u superglobalne nizove $_POST, $_GET i $_REQUEST. $_POST ili $_GET će sadržavati podatke u zavisnosti od toga koji je metod poslat. $_REQUEST sadrži dostavljene podatke bilo kojom od navedenih metoda.

$_POST, $_GET i $_REQUEST su asocijativni nizovi čija indeksna polja odgovaraju atributima "name" oznaka . U skladu s tim, za rad s podacima u datoteci myform.php, možete dodijeliti vrijednosti elemenata takvog niza varijablama tako što ćete navesti ime polja kao indeks:

// za GET metodu
$a = $_GET[ "podaci1" ];
$b = $_GET[ "podaci2"];

// za metodu POST
$a = $_POST[ "podaci1" ];
$b = $_POST[ "podaci2"];

// bilo kojom metodom
$a = $_ZAHTJEV[ "podaci1" ];
$b = $_ZAHTJEV[ "podaci2"];

Provjera popunjavanja polja obrasca

Ponekad, prilikom primanja podataka, morate provjeriti da li je korisnik poslao prazan obrazac. Za ovo možete koristiti praznu funkciju.

if (prazno ($_REQUEST["data1" ])) (
echo "Polje nije popunjeno";
} drugo(
echo "Polje je popunjeno";
$a = $_ZAHTJEV[ "podaci1" ];
}

Obično je ovo rješenje dovoljno. Ako treba da unesete tekst, biće jasno da li je unet ili ne. Međutim, ako korisnik namjerno unese nulu za izračun, tada će prazna funkcija pokazati da nema vrijednosti. Stoga je za takve situacije bolje koristiti isset funkciju. Eksplicitno će provjeriti da li je vrijednost postavljena ili ne.

if (isset ($_REQUEST["data1" ])) (
echo "Polje je popunjeno";
$a = $_ZAHTJEV[ "podaci1" ];
} drugo(
echo "Polje nije popunjeno";
}

Jedan od najčešćih zadataka u praksi je implementacija obrasca za povratne informacije. Tobish piše svoj HTML kod, stilizira ga u CSS, PHP kreiranje skriptu koja bi obrađivala podatke primljene od korisnika i slala ih na našu poštu, pisala JS skriptu koja bi provjeravala formu za adekvatnost ulaznih podataka, štitila naše potomstvo od neželjene pošte kako se naš poštanski sandučić ne bi srušio od bot napada .

Sve gore navedene tačke će biti razmotrene u našem pregledu i detaljno komentarisane.

Dakle, krenimo sa kreiranjem obrasca za povratne informacije:

HTML

Prije svega, pišemo HTML kod, on postavlja polja koja će korisnik ispuniti. Oni će se razvijati u budućnosti. Kod forme izgleda ovako:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" >ime: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" >Telefon: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" >Email: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" >Poruka: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Pošalji" />

A vizuelno to sada izgleda ovako:

Slažem se, do sada je sve ružno i ništa nije jasno, ali tek smo počeli.

Razmotrite gornji kod detaljno:

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


    Da biste kreirali obrazac, morate koristiti oznaku forme. On je taj koji određuje početak i kraj forme za tumač koda. Ona, kao i svaka oznaka, ima čitav skup atributa, ali postoje samo dva potrebna da bi obrazac funkcionisao, a to su metoda (način slanja zahtjeva serveru, post se standardno koristi za obrasce) i akcija (označava put do fajla za obradu obrasca, naime u ovoj datoteci će se nalaziti PHP skripta, koja će nam zatim poštom poslati vrednosti koje je korisnik uneo, u našem slučaju vidimo da se ova datoteka zove mail.php i nalazi se u istom direktoriju stranice kao i stranica koju razmatramo).
  • < input maxlength= "30" type= "text" name= "name" />


    Zatim imamo ulaze. To su zapravo sama polja obrasca u koja će korisnici unijeti informacije koje su nam potrebne (type = "text" označava da će to biti tekst). Atribut maxlength specificira koliko znakova korisnik može unijeti u dato polje obrasca. Najvažniji atribut je ime – on specificira ime određenog polja. Pod ovim imenima PHP skripta će dalje obraditi informacije koje dolaze u nju. Ako želite, možete postaviti i atribut čuvara mjesta, koji prikazuje tekst unutar polja koji nestaje kada se kursor postavi u njega. Jedan od problema sa čuvarom mesta je taj što ga neki stariji pretraživači ne podržavaju.
  • < label for = "name" >ime:


    Koristi se ako imamo napuštene čuvare mjesta. Uobičajena oznaka polja, atribut for govori na koje polje se data oznaka odnosi. Vrijednost označava naziv polja koje nas zanima.
  • < textarea rows= "7" cols= "50" name= "message" >


    Kao i unos, namijenjen je za unos informacija od strane korisnika, samo što je ovaj put polje izoštreno za dugačke poruke. Redovi određuju veličinu polja u redovima, kolone u znakovima. Općenito, oni postavljaju visinu i širinu našeg polja.
  • < input type= "submit" value= "Pošalji" />


    Type="submit" nam govori da je ovo dugme za slanje obrasca, a vrijednost specificira tekst koji će biti unutar ovog gumba.
  • < div class = "right" >


    koristi se samo za daljnji vizualni dizajn forme.

css

Kako bi naš obrazac za povratne informacije izgledao prezentabilno, potrebno ga je dizajnirati. Da biste dobili sljedeći rezultat:

Koristili smo ovaj kod:

form (pozadina: #f4f5f7; padding: 20px; ) form. lijevo, oblik. desno (prikaz: inline-blok; okomito-poravnanje: vrh; širina: 458px; ) form . desno ( padding- lijevo: 20px; ) label (prikaz: blok; veličina fonta: 18px; poravnanje teksta: centar; margina: 10px 0px 0px 0px; ) unos, polje teksta ( granica: 1px čvrsta #82858D; padding: 10px; veličina fonta: 16px; širina: 436px; ) textarea (visina: 98px; margina dno: 32px; ) input[ type= "submit" ] ( širina: 200px; float: desno; granica: nema; pozadina: #595B5F; boja: #fff; transformacija teksta: velika slova; )

Ne vidim smisao u detaljnom opisivanju CSS-a, samo ću vam skrenuti pažnju na ključne tačke:

  1. Nije potrebno pisati dizajn za svaku oznaku u obrascu. Pokušajte izgraditi svoje selektore na takav način da možete stilizirati sve elemente koji su vam potrebni u nekoliko redova koda.
  2. Nemojte koristiti dodatne oznake po tipu za razbijanje linija i stvaranje uvlaka < br>, < p> i tako dalje, ovim zadacima savršeno rukuje CSS sa prikazom svojstava: blok i margina sa paddingom. Više o tome zašto ne biste trebali koristiti < br> u izgledu, općenito, možete pročitati oznaku br u članku, ali da li je to zaista potrebno? .
  3. Nemojte koristiti tabelarni izgled za obrasce. Ovo se kosi sa semantikom ove oznake, a pretraživači vole semantički kod. Da bismo formirali vizuelnu strukturu dokumenta, dovoljni su nam div tagovi i prikaz: inline-block svojstva postavljena u CSS-u (sređuje blokove u niz) i vertical-align: top (sprečava njihovo širenje po ekranu ), postavljamo im potrebnu visinu i voila, ništa suvišno i sve je uređeno kako nam treba.

Za one koji žele da uštede svoje vreme na dizajnu sajtova, mogu vam savetovati da koristite CSS okvire prilikom kreiranja sajtova, posebno onih koji sami pišu. Moj izbor u tom pogledu je Twitter Bootstrap. Može se pogledati lekcija o dizajniranju obrazaca pomoću njega.

PHP

Pa, vrijeme je da našu formu učinimo funkcionalnom.

Idemo u naš korijenski direktorij stranice i tamo kreiramo datoteku mail.php, do koje smo prethodno naveli putanju u atributu akcije oznake forme.

Na kraju, njegov kod će izgledati ovako:

Vaša poruka je uspješno poslana \" javascript: history.back()\" >Nazad

" ; if (! prazno ($_POST [ "ime" ] ) i ! prazno ($_POST [ "telefon" ] ) i ! prazno ($_POST [ "mail" ] ) i ! prazno ($_POST [ "poruka" ] ) ) ( $name = trim (strip_tags ($_POST [ "name" ] ) ) ) ; $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ); $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ; mail (, , "Poslano vam: " . $name . "
Njegov broj: " . $phone ."
Njegova pošta: " . $mail . "
Njegova poruka: "
. $message , ) ; echo „Vaša poruka je uspješno poslana!
Uskoro ćete dobiti odgovor
$nazad"
; Izlaz; ) else ( eho ; izlaz ; ) ?>

Možete preskočiti raspravu o HTML i CSS dijelovima ovog dokumenta. U osnovi, ovo je redovna stranica stranice koju možete dizajnirati kako želite i trebate. Razmotrimo njegov najvažniji dio - PHP skriptu za obradu obrasca:

$back = "

\" javascript: history.back()\" >Nazad

" ;

Ovom linijom kreiramo link za povratak na prethodnu stranicu. Pošto ne znamo unaprijed s koje stranice će korisnik doći na ovu, to se radi pomoću male JS funkcije. U budućnosti ćemo se jednostavno pozivati ​​na ovu varijablu da bismo je prikazali na mjestima koja su nam potrebna.

if (! prazno ($_POST [ "ime" ] ) i ! prazno ($_POST [ "telefon" ] ) i ! prazno ($_POST [ "mail" ] ) i ! prazno ($_POST [ "poruka" ] ) ) ( // unutarnji dio rukovaoca) else ( eho "Popunite sva polja da pošaljete poruku! $back "; Izlaz; )

Ovdje pričvršćujemo provjeru obrasca za popunjenost polja. Kao što ste pretpostavili, u dijelu $_POST["name"], vrijednost atributa name naših unosa pišemo u navodnicima.

Ako su sva polja popunjena, tada će skripta početi obraditi podatke u svom internom dijelu, ali ako barem jedno polje nije popunjeno, na ekranu korisnika će se prikazati poruka sa zahtjevom da popuni sva polja. forme echo "Da pošaljete poruku, popunite sva polja! $back" i link za povratak na prethodnu stranicu koju smo kreirali sa prvim redom.

Zatim ga zalijepite u unutrašnjost obrasca:

$name = trim (strip_tags ($_POST [ "name" ] ) ) ; $phone = trim (strip_tags ($_POST [ "telefon" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ;

Tako smo očistili korisnički unos iz html oznaka i dodatnih razmaka. To nam omogućava da se zaštitimo od primanja zlonamjernog koda u porukama koje nam se šalju.

Provjere mogu biti komplikovane, ali na vama je. Mi smo već postavili minimalnu zaštitu na strani servera. Ostalo ćemo uraditi na strani klijenta koristeći JS.

Ne preporučujem potpuno odustajanje od zaštite obrazaca na strani servera u korist JS-a, jer iako je to izuzetno rijetko, postoje jedinstveni ljudi s onemogućenim JS-om u pretraživaču.

Nakon čišćenja oznaka, dodajte slanje poruke:

pošta ( "[email protected]", "E-pošta sa vaše_site_adrese", "Napisao vam je: " . $name . "
Njegov broj: " . $phone ."
Njegova pošta: " . $mail . "
Njegova poruka: "
. $message , "Content-type:text/html;charset=windows-1251") ;

Upravo ta linija se bavi formiranjem i slanjem poruke nama. Popunjava se na sljedeći način:

  1. "[email protected]" - umetnite svoju poštu između navodnika ovdje
  2. "Email from your_site_address" je predmet poruke koja će biti poslana na mail. Ovdje možete napisati bilo šta.
  3. "Napisao vam je: ".$name." < br /> Njegov broj je: ".$phone." < br /> Njegova pošta: ".$mail." < br /> Njegova poruka: ".$message - formiramo tekst same poruke. $name - ubacujemo informacije koje je korisnik popunio pristupom poljima iz prethodnog koraka, u navodnicima opisujemo šta ovo polje znači, sa oznakom < br /> pravimo prijelom reda kako bi poruka u cjelini bila čitljiva.
  4. Content-type:text/html;charset=windows-1251 - na kraju se nalazi eksplicitna indikacija tipa podataka koji se prenosi u poruci i njenog kodiranja.

BITAN!

Kodiranje navedeno u "glavi" dokumenta ( < meta http- equiv= "Content-Type" content= "text/html; charset=windows-1251" /> ), kodiranje iz poruke Content-type:text/html;charset=windows-1251 i općenito kodiranje PHP datoteke mora se podudarati, inače u porukama primljenim poštom, umjesto ruskih ili engleskih slova, "lude riječi ” će se prikazati.

Mnogi ljudi ne navode eksplicitno kodiranje poruke koja se šalje, ali to može uzrokovati probleme u budućnosti na nekim klijentima pošte (nečitka pisma stižu poštom), pa preporučujem da to ipak navedete.

Provjera adekvatnosti ulaznih podataka obrasca

Kako korisnici nenamjerno ne bi propustili polja i sve ispravno popunili, vrijedi provjeriti ulazne podatke.

Ovo se može uraditi u PHP-u na strani servera i JS-u na strani klijenta. Koristim drugu opciju, jer na taj način osoba može odmah saznati šta je pogriješila i ispraviti grešku bez dodatnih prijelaza stranica.

Kod skripte se ubacuje u istu datoteku u kojoj imamo HTML dio obrasca. Za naš slučaj to će izgledati ovako:

< script>funkcija checkForm(form) ( var ime = oblik. ime. vrijednost; var n = ime. podudaranje(/ ^[ A- Za- zA- Za-z] * [ A- Za- zA- Za-z] + $/ ) ; ako (! n) ( upozorenje( "Ime je pogrešno uneseno, ispravite grešku") ; return false ; ) var telefon = obrazac. telefon. vrijednost; var p = telefon. podudaranje(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; ako (! p) ( upozorenje( "Telefon je pogrešno unesen") ; return false ; ) var mail = form. mail. vrijednost; var m = mail . 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] + $/ ) ; ako (! m) ( upozorenje( "Unesena e-pošta nije tačna, ispravite grešku") ; return false ; ) return true ; )

Pa, sada uobičajena analiza:

Za to, tako da kada kliknete na dugme za slanje obrasca, mi ga potvrdimo objesimo lansiranje naše skripte na oznaku forme:

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

Sada, tačku po tačku, uzimamo sastav čeka:


Kao što vidite, takav mini ček je napisan za svako naše polje. Provjeru za jedno polje na snimku zaslona sam istaknuo crvenim kvadratom, za ostala polja ima sličnu strukturu, a ako trebate dodati polje ili ga ukloniti, sada to možete lako učiniti.

Interaktivne stranice prihvataju unos od korisnika. Jedan uobičajeni način primanja unosa je putem obrazaca.

U ovom vodiču ćemo vidjeti kako kreirati obrazac i obraditi unos na serveru.

Prilikom kreiranja obrasca uključena su dva važna atributa: akcija I metoda.

akcija Koristi se za unos URL adrese na koju se obrazac šalje. Ovo može biti PHP datoteka koja upravlja unosom. metoda Može biti "post" ili "get", što su različite metode prosljeđivanja podataka. Za sada, ne morate da ulazite u razlike između ovih metoda; metoda "get" šalje podatke preko URL-a, a "post" metoda ih šalje kao blok podataka putem standardne usluge unosa (STDIN). U posljednjem tutorijalu kroz koji smo prošli, vidjeli smo kako se podaci preuzimaju putem URL-a pomoću $_GET. U ovom vodiču ćemo pogledati kako se primaju podaci poslani metodom "post".

HTML stranica sa formom

Stranica obrasca ne mora biti PHP datoteka (ali može biti). Ne mora čak ni biti na istoj lokaciji kao i datoteka koja prima podatke.

U našem prvom primjeru, pogledat ćemo vrlo jednostavan obrazac s jednim tekstualnim poljem:

Forma

Unesite svoje ime

U pretraživaču će se prikazati sljedeći obrazac:

Sada dolazi zabavni dio: dobijanje i obrada podataka pomoću PHP-a.

Zahtijevanje podataka obrasca pomoću PHP-a

Ako trebate zatražiti podatke dostavljene putem obrasca (pomoću pošta), koristite $_POST :

$_POST["fieldname"];

koji će vratiti vrijednost polja obrasca. Pokušajmo ovo s primjerom.

Prvo, kreirajmo stranicu sa formom, kao i ranije. Zatim ćemo kreirati PHP stranicu (handler) "handler.php" (imajte na umu da je ovo ime stranice koju smo snimili u atributu akcija u našem

).

Fajl "handler.php" će sadržavati:

Forma eho"

"; ?>

Korisnički unos i uslovi

U sljedećem primjeru pokušat ćemo koristiti korisnički unos za kreiranje uslova. Prvo nam je potreban obrazac:

Forma

Kako se zoves:

Vaša omiljena boja: Crveni Zeleno Plava

U pretraživaču će izgledati ovako:

Sada koristimo ove ulaze za kreiranje stranice koja automatski mijenja boju pozadine na osnovu korisničkog unosa. To se radi kreiranjem uvjeta (pogledajte Lekciju) koji koristi podatke koje je korisnik unio u obrazac.

$strHeading = "

Zdravo, " . $_POST["username"] ."

"; prekidač ($_POST["favoritecolor"]) ( slučaj "r": prekid; slučaj "g"; break; slučaj "b": prekid; default: break; ) ?> Forma

Pozadina će biti bijela osim ako korisnik ne odredi željenu boju na obrascu. To se postiže postavljanjem vrijednosti default(podrazumevano), koji se primenjuje ako nijedan od uslova nije ispunjen.

Ali šta se dešava ako korisnik ne navede svoje ime? Tada će naslov biti samo "Bok,". Napravimo dodatni uslov za promjenu ove opcije.

$strUsername = $_POST["korisničko ime"]; if ($strUsername != "") ( $strHeading = "

Zdravo, " . $_POST["username"] ."

"; ) drugo ( $strHeading = "

Zdravo stranče!

";
} prekidač ($_POST["omiljena boja"]) ( slučaj "r": $strBackgroundColor = "rgb(255,0,0)"; break; slučaj "g"; $strBackgroundColor = "rgb(0,255,0)"; break; slučaj "b": $strBackgroundColor = "rgb(0,0,255)"; break; zadano: $strBackgroundColor = "rgb(255,255,255)"; break; ) ?> Forma

U gornjem primjeru koristimo uslove za provjere informacije od korisnika. U ovom slučaju nije toliko važno ako korisnik ne navede ime. Ali kako vaš kod postaje sve složeniji, od vitalnog je značaja da uzmete u obzir opciju da korisnik uopće ne ispunjava obrasce.

Primjer: Kontakt obrazac

Na osnovu vašeg znanja PHP-a i obrazaca, možete kreirati obrazac za kontakt informacije koristeći mail funkciju, koja ima sljedeću sintaksu:

Mail (gdje, predmet, poruka);

Prvo, napravimo jednostavan HTML obrazac:

Kontakt obrazac

Kontakt obrazac

Predmet:

Poruka:

Tada vam je potrebna PHP skripta za slanje korisničkog unosa:

Funkcije // Primalac (promjena vaše e-mail adrese) $strEmail = " [email protected]"; // Dobivanje korisničkih unosa $strSubject = $_POST["predmet"]; $strMessage = $_POST["poruka"]; mail($strEmail,$strSubject,$strMessage); echo "Pošta poslata."; ?>

Imajte na umu da primjer funkcionira samo ako imate pristup mail serveru. Ovo nije uobičajeno u XAMPP-u i većini besplatnih hostova. Dakle, neki domaćini mogu zahtijevati zaglavlje obrasca, što se radi s dodatnim parametrom:

Mail ("vi@vašdomen.com", "Test", "Ovo je probna poruka", "Od: [email protected]");

Jedna od najvećih prednosti PHP-a je način na koji radi sa HTML formama. Ključno je da svaki element obrasca bude automatski dostupan vašim PHP programima. Za više informacija o korištenju obrazaca u PHP-u pogledajte odjeljak. Evo primjera HTML obrasca:

Beispiel #1 Najjednostavniji oblik HTML-a

Tvoje ime:

Tvoje godine:

Nema ništa posebno u vezi sa ovom formom. Ovo je normalan HTML obrazac bez posebnih oznaka. Kada korisnik popuni formular i klikne na dugme za slanje, biće pozvana stranica action.php. Ovaj fajl može sadržavati nešto poput:

Beispiel #2 Rendering form data

Zdravo, .
Za tebegodine.

Primjer izlaza iz ovog programa:

Zdravo Sergej. Imaš 30 godina.

Ako ne uzmete u obzir dijelove koda sa htmlspecialchars() I (int), princip rada ovog koda treba da bude jednostavan i jasan. htmlspecialchars() osigurava da su "posebni" HTML znakovi ispravno kodirani tako da zlonamjerni HTML ili Javascript ne budu umetnuti u vašu stranicu. Polje starosti, za koje znamo da mora biti broj, možemo jednostavno pretvoriti u cijeli broj, koji će se automatski riješiti neželjenih znakova. PHP to takođe može uraditi automatski sa ekstenzijom filtera. PHP varijable $_POST["name"] i $_POST["age"] automatski postavlja za vas. Ranije smo koristili $_SERVER superglobal, ali ovdje također koristimo $_POST superglobal, koji sadrži sve POST podatke. primeti, to način slanja(metoda) našeg obrasca je POST. Ako bismo koristili metodu GET, tada bi naše informacije obrasca bile u $_GET superglobal. Alternativno, možete koristiti varijablu $_REQUEST ako je izvor podataka nebitan. Ova varijabla sadrži mješavinu podataka GET, POST, COOKIE.

prije 15 godina

Prema HTTP specifikaciji, trebali biste koristiti metodu POST kada koristite obrazac da promijenite stanje nečega na kraju servera. Na primjer, ako stranica ima obrazac koji omogućava korisnicima da dodaju svoje komentare, poput ovog stranica ovdje, obrazac bi trebao koristiti POST, zbog čega ove stranice nisu označene ili keširane.

Trebali biste koristiti metodu GET kada vaš obrazac, pa, uzima nešto sa servera i zapravo ništa ne mijenja. Na primjer, obrazac za tražilicu bi trebao koristiti GET, budući da pretraživanje web stranice ne bi trebalo mijenjati ništa do čega bi klijent mogao brinuti, a označavanje ili keširanje rezultata upita tražilice jednako je korisno kao označavanje ili keširanje statičnu HTML stranicu.

Prije 2 godine

Vrijedi pojasniti:

POST nije sigurniji od GET-a.

Razlozi za odabir GET vs POST uključuju različite faktore kao što su namjera zahtjeva (da li „podnosite“ informacije?), veličina zahtjeva (postoje ograničenja koliko URL može biti dugačak i GET parametri se šalju u URL), i koliko lako želite da se radnja može dijeliti -- Na primjer, Google pretraživanja su GET jer olakšava kopiranje i dijeljenje upita za pretraživanje s nekim drugim jednostavnim dijeljenjem URL-a.

Sigurnost je ovdje samo razmatranje zbog činjenice da je GET lakše dijeliti nego POST. Primjer: ne želite da GET šalje lozinku, jer korisnik može podijeliti rezultirajući URL i nehotice otkriti svoju lozinku.

Međutim, GET i POST podjednako lako mogu presresti dobro postavljena zlonamjerna osoba ako ne implementirate TLS/SSL da zaštitite samu mrežnu vezu.

Svi obrasci koji se šalju preko HTTP-a (obično port 80) su nesigurni, a danas (2017.) nema mnogo dobrih razloga da javna web stranica ne koristi HTTPS (što je u osnovi HTTP + sigurnost transportnog sloja).

Kao bonus, ako koristite TLS, minimizirate rizik da vaši korisnici dobiju kod (AD-ove) ubačen u vaš promet koji niste tamo stavili vi.

U jednoj od prethodnih tema je već razmatrano dobijanje podataka iz obrasca. U ovoj temi ću detaljnije objasniti kako se obrazac ispravno šalje na server, kao i kako se obrazac obrađuje u PHP-u.

Podnošenje obrasca

Polje za unos. Najčešći elementi obrasca su različita polja za unos. Kreiraju se pomoću oznake mnogo vrsta i oznaka

izaberite. Od oznake , i za stavke liste, odnosno za oznake

Radio dugme. Sva radio dugmad iz iste grupe moraju imati isti atribut imena. Ova vrijednost ne samo da postavlja ime parametra, već i grupiše radio dugmad u grupu iz koje se može odabrati samo jedno radio dugme. Atribut value se postavlja drugačije. Dodajmo radio dugmad u obrazac:

Polje za potvrdu. Za razliku od radio dugmadi, svaki kvadratić je zaseban element obrasca. Svi potvrdni okviri su nezavisni jedan od drugog i svaki šalje svoje podatke na server. Atribut name svih okvira za potvrdu mora biti različit, a atribut value može biti isti ili različit. Međutim, potvrdni okvir nema nikakve specifične podatke. Može se odabrati ili ne. Stoga, nema smisla postavljati ga na dugu vrijednost. Može se postaviti na vrijednost od jednog znaka, na primjer, 1. Na serveru, značenje ove vrijednosti će biti sljedeće: ako postoji vrijednost, tada je označeno polje za potvrdu, a ako nema vrijednosti, onda nije odabrano. Dodajmo polja za potvrdu u obrazac i kreiramo dugme za slanje obrasca:

Obrada podataka iz obrazaca

U predloženom primjeru kreiran je obrazac koji šalje podatke u skriptu pod nazivom takeform.php. Stoga morate kreirati ovu skriptu. To neće biti samo program, već stranica koja će se formirati u zavisnosti od podataka dobijenih iz obrasca. Obrazac se šalje POST metodom. Skripta uzima ove podatke iz superglobalnog niza $_POST. Elementi niza mogu se jednostavno koristiti u skripti, ali ako trebate puno raditi s njima, tada je pisanje imena elementa svaki put nezgodno. Lakše je napisati vrijednost u varijablu i pristupiti joj. Kreirajmo datoteku takeform.php i upišimo vrijednosti iz prva dva elementa obrasca u varijable:

takeform.php:

To tag