HTML forms sa php. Mga script ng PHP para sa pagproseso ng mga HTML form. Mga paraan na nakikipag-ugnayan ang browser sa server

Isa sa mga magagandang bagay tungkol sa PHP ay ang paraan ng paggana nito sa mga HTML form.

Ang pangunahing bagay dito ay ang bawat elemento ng form ay awtomatikong magagamit sa iyong mga programa sa PHP. Para sa detalyadong impormasyon tungkol sa paggamit ng mga form sa PHP, basahin ang seksyon. Narito ang isang halimbawang HTML form:

Halimbawa #1 Pinakasimpleng HTML Form

pangalan mo:

Ang iyong edad:

Walang espesyal sa form na ito. Ito ay isang regular na HTML form na walang anumang mga espesyal na tag. Kapag pinunan ng user ang form at na-click ang submit button, tatawagin ang action.php page. Maaaring may katulad ang file na ito:

Halimbawa #2 Pagpapakita ng data ng form
Hello, .

Matanda ka na.

Halimbawang output ng program na ito:

Kamusta, Sergey. Ikaw ay 30 taong gulang. Kung hindi mo isasaalang-alang ang mga piraso ng code na may htmlspecialchars() at(int) , ang prinsipyo ng pagpapatakbo ng code na ito ay dapat na simple at naiintindihan. Tinitiyak ng htmlspecialchars() na ang mga "espesyal" na mga HTML na character ay maayos na naka-encode upang hindi maipasok ang nakakahamak na HTML o Javascript sa iyong pahina. Ang field ng edad, na alam natin ay dapat na isang numero, maaari lang nating i-convert sa isang integer, na awtomatikong mag-aalis ng mga hindi gustong character. Magagawa rin ito ng PHP nang awtomatiko gamit ang extension ng filter. Ang mga variable na $_POST["pangalan"] at $_POST["edad"] ay awtomatikong itinatakda para sa iyo ng PHP. Dati ginamit namin ang $_SERVER superglobal variable, ngunit dito ginagamit din namin ang $_POST superglobal variable, na naglalaman ng lahat ng POST data. Tandaan na paraan ng pagpapadala(pamamaraan) ng aming form ay POST. Kung ginamit natin ang pamamaraan

GET

, kung gayon ang aming impormasyon sa form ay nasa superglobal variable na $_GET .

Dapat mong gamitin ang paraan ng GET kapag ang iyong form ay, well, nakakakuha ng isang bagay mula sa server at hindi aktwal na nagbabago ng anuman. Halimbawa, ang form para sa isang search engine ay dapat gumamit ng GET, dahil ang paghahanap sa isang Web site ay hindi dapat magbago ng anumang bagay na maaaring mahalaga sa kliyente, at ang pag-bookmark o pag-cache ng mga resulta ng isang search-engine na query ay kapaki-pakinabang tulad ng pag-bookmark o pag-cache. isang static na HTML page.

2 taon na ang nakalipas

Nararapat linawin:

Ang POST ay hindi mas secure kaysa sa GET.

Ang mga dahilan sa pagpili ng GET vs POST ay kinabibilangan ng iba't ibang salik gaya ng layunin ng kahilingan ("nagsusumite" ka ba ng impormasyon?), ang laki ng kahilingan (may mga limitasyon sa kung gaano katagal ang isang URL, at ang mga parameter ng GET ay ipinadala sa ang URL), at kung gaano mo kadaling gustong maibahagi ang Pagkilos -- Halimbawa, GET ang Mga Paghahanap sa Google dahil pinapadali nitong kopyahin at ibahagi ang query sa paghahanap sa ibang tao sa pamamagitan lamang ng pagbabahagi ng URL.

Ang seguridad ay isang pagsasaalang-alang lamang dito dahil sa katotohanan na ang isang GET ay mas madaling ibahagi kaysa sa isang POST. Halimbawa: hindi mo gustong magpadala ng password ng GET, dahil maaaring ibahagi ng user ang resultang URL at hindi sinasadyang ilantad ang kanilang password.

Gayunpaman, ang isang GET at isang POST ay parehong madaling maharang ng isang malisyosong tao kung hindi mo ilalagay ang TLS/SSL upang protektahan ang mismong koneksyon sa network.

Ang lahat ng mga Form na ipinadala sa HTTP (karaniwang port 80) ay hindi secure, at ngayon (2017), walang maraming magandang dahilan para sa isang pampublikong website na hindi gumagamit ng HTTPS (na karaniwang HTTP + Transport Layer Security).

Bilang isang bonus, kung gagamit ka ng TLS, mababawasan mo ang panganib ng iyong mga user na makakuha ng code (mga AD) na na-inject sa iyong trapiko na hindi mo inilagay doon.

Huling na-update: 11/1/2015

Ang isa sa mga pangunahing paraan ng pagpapadala ng isang website ng data ay sa pamamagitan ng pagpoproseso ng form. Ang mga form ay kumakatawan sa mga espesyal na elemento ng HTML markup na naglalaman ng iba't ibang elemento ng pag-input - mga field ng teksto, mga pindutan, atbp. At sa tulong ng mga form na ito maaari kaming magpasok ng ilang data at ipadala ito sa server. At pinoproseso na ng server ang data na ito.

Ang paglikha ng mga form ay binubuo ng mga sumusunod na aspeto:

    Paglikha ng isang elemento sa HTML markup

    Magdagdag ng isa o higit pang mga input field sa elementong ito

    Pagtatakda ng paraan ng paglilipat ng data: GET o POST

    Pagtatakda ng address kung saan ipapadala ang ipinasok na data

Kaya gumawa tayo ng bagong form. Upang gawin ito, tutukuyin namin ang isang bagong file form.php, kung saan ilalagay namin ang sumusunod na nilalaman:

Mag-login sa site Mag-login:

Password:

Ang action="login.php" na katangian ng elemento ng form ay nagpapahiwatig na ang data ng form ay ipoproseso ng script login.php, na makikita kasama ng file form.php sa isang folder. At ang method="POST" attribute ay nagpapahiwatig na ang POST method ay gagamitin bilang ang data transfer method.

Ngayon gumawa tayo ng file login.php, na magkakaroon ng sumusunod na nilalaman:

Upang makuha ang data ng form, ginagamit ang global variable na $_POST. Ito ay kumakatawan sa isang nag-uugnay na hanay ng data na ipinadala gamit ang POST method. Gamit ang mga key maaari nating makuha ang mga naipadalang halaga. Ang mga susi sa hanay na ito ay ang mga halaga ng mga katangian ng pangalan ng mga field ng input ng form.

Dahil ang katangian ng pangalan ng field ng input ng pag-login ay may value login(), kung gayon sa $_POST array ang value ng field na ito ay kakatawan ng "login" key: $_POST["login"]

At dahil maaaring may mga sitwasyon kung kailan hindi itatakda ang input field, halimbawa, kapag direktang pupunta sa script: http://localhost:8080/login.php. Sa kasong ito, ipinapayong suriin ang pagkakaroon ng data gamit ang isset() function bago iproseso ang data. At kung ang variable ay nakatakda, ang isset() function ay magbabalik true .

Ngayon ay maaari na nating ma-access ang form:

At kapag pinindot ang pindutan, ang ipinasok na data ay ipapadala sa script gamit ang POST method. login.php:

Hindi kinakailangang ipadala ang data ng form sa isa pang script, maaari mong iproseso ang data ng form sa parehong file ng form. Upang gawin ito, baguhin natin ang file form.php gaya ng sumusunod:

Mag-login sa site Mag-login:

Password:

Seguridad ng Data

Ang seguridad ng data ay napakahalaga sa PHP. Tingnan natin ang ilang simpleng mekanismo na maaaring mapabuti ang seguridad ng aming website.

Ngunit una, kunin natin ang form mula sa nakaraang paksa at subukang magpasok ng ilang data dito. Halimbawa, ilagay natin ang "alerto(hi);" sa field sa pag-login, at "password" sa field ng password:

Pagkatapos ipadala ang data sa html markup, ilalagay ang javascript code, na magpapakita ng window na may mensahe.

Upang maiwasan ang mga ganitong problema sa seguridad, dapat mong gamitin ang htmlentities() function:

If(isset($_POST["login"]) && isset($_POST["password"]))( $login=htmlentities($_POST["login"]); $password = htmlentities($_POST["password" ]); echo "Ang iyong pag-login: $login
Ang iyong password: $password"; )

At kahit na pagkatapos na ipasok ang html o javascript code, ang lahat ng mga tag ay escape at makuha namin ang sumusunod na output:

Isa pang function - ang strip_tags() function ay nagbibigay-daan sa iyong ganap na ibukod ang mga html tag:

If(isset($_POST["login"]) && isset($_POST["password"]))( $login=strip_tags($_POST["login"]); $password = strip_tags($_POST["password" ]); echo "Ang iyong pag-login: $login
Ang iyong password: $password"; )

Ang resulta ng operasyon nito na may parehong input ay ang sumusunod na output.

Kadalasan sa mga Web site ay makakahanap ka ng mga pahina na may mga HTML form na nakalagay sa kanila. Ang mga web form ay isang maginhawang paraan upang makatanggap ng impormasyon mula sa mga bisita sa iyong site. Ang isang halimbawa nito ay ang guest book, na nagbibigay ng feedback sa mga bisita at site developer. Ang mga form ay maginhawa din para sa mga developer ng site kapag bumubuo ng isang CMS, na nagpapahintulot sa kanila na mapanatili ang pangunahing pag-aari ng site - ang kaugnayan. Ang artikulong ito ay nakatuon sa mga pangunahing kaalaman sa paglikha ng mga HTML form, ang kanilang pagproseso, at mga paraan upang ilipat ang data mula sa mga screen form patungo sa mga script ng PHP.

1) Lumikha ng isang simpleng form

Mga tag At tukuyin ang simula at wakas ng form. Panimulang form na tag naglalaman ng dalawang katangian: aksyon At paraan. Ang katangian ng pagkilos ay naglalaman ng URL ng script na dapat tawagan upang maproseso ang script. Katangian paraan nagsasabi sa browser kung anong uri ng kahilingan sa HTTP ang gagamitin para isumite ang form; posibleng mga halaga POST At paraan ng pagpapadala.

Magkomento

Ang pangunahing pagkakaiba sa pagitan ng mga pamamaraan ng POST at GET ay ang paraan ng paglilipat ng impormasyon. Sa pamamaraang GET, ipinapasa ang mga parameter sa address bar, i.e. mahalagang nasa header ng kahilingan ng HTTP, habang sa pamamaraang POST ang mga parameter ay ipinapadala sa pamamagitan ng katawan ng kahilingan ng HTTP at hindi makikita sa anumang paraan sa address bar.

Gawain: Ipagpalagay na kailangan mong gumawa ng drop-down list na may mga taon mula 2000 hanggang 2050.
Solusyon: Kailangan mong gumawa ng HTML form na may SELECT element at PHP script para sa pagproseso ng form.

Pagtalakay:

Una, gumawa tayo ng dalawang file: form.html at action.php. Ang form.html file ay maglalaman ng isang html form na may drop-down na listahan. Bukod dito, ang mga halaga sa listahan ay maaaring tukuyin sa dalawang paraan:

I. Manu-manong pagpasok ng data:


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

II. Pagpasok ng data sa pamamagitan ng isang loop:



Tulad ng nakikita mo, ang pangalawang halimbawa na may isang loop ay mas compact. Sa tingin ko, hindi na kailangang magbigay ng script ng handler para sa form na ito, dahil eksaktong kapareho ito ng proseso sa field ng text, i.e. Ang mga halaga ng listahan ay maaaring makuha mula sa isang superglobal array.

$_POST

Paglalarawan:




Gumawa tayo ng HTML form para magpadala ng file sa server. Ang html form na ito ay naglalaman ng isang elemento mag-browse , na nagbubukas ng dialog box para sa pagpili ng file na ia-upload sa server. Kapag pinindot mo ang pindutan

"Ilipat ang file"

Magkomento

Kung pinagkakatiwalaan mo ang mga user na mag-upload ng anumang mga file sa iyong server, kailangan mong maging lubhang maingat. Maaaring i-embed ng mga attacker ang "masamang" code sa isang larawan o file at ipadala ito sa server. Sa ganitong mga kaso, kailangan mong mahigpit na kontrolin ang pag-download ng mga file.

Ang halimbawang ito ay nagpapakita ng paglikha ng isang direktoryo at pagkopya ng isang file sa direktoryo na iyon papunta sa server.

Gusto ko ring magpakita ng isang halimbawa na may elemento checkbox. Ang elementong ito ay bahagyang naiiba sa iba pang mga elemento na kung hindi isa sa mga elemento checkbox'a ay hindi pinili, pagkatapos ay ang superglobal variable Sa tingin ko, hindi na kailangang magbigay ng script ng handler para sa form na ito, dahil eksaktong kapareho ito ng proseso sa field ng text, i.e. Ang mga halaga ng listahan ay maaaring makuha mula sa isang superglobal array ay magbabalik ng walang laman na halaga:


Asul
Itim
Puti




Kung mayroon kang anumang iba pang mga katanungan o isang bagay ay hindi malinaw - maligayang pagdating sa aming

Kadalasan sa mga Web site ay makakahanap ka ng mga pahina na may mga HTML form na nakalagay sa kanila. Ang mga web form ay isang maginhawang paraan upang makatanggap ng impormasyon mula sa mga bisita sa iyong site. Ang isang halimbawa nito ay -, - na nagbibigay ng feedback sa mga bisita at developer ng site. Ang mga form ay maginhawa din para sa mga developer ng site kapag bumubuo ng isang CMS, na nagpapahintulot sa kanila na mapanatili ang pangunahing pag-aari ng site - ang kaugnayan. Ang artikulong ito ay nakatuon sa mga pangunahing kaalaman sa paglikha ng mga HTML form, ang kanilang pagproseso, at mga paraan upang ilipat ang data mula sa mga screen form patungo sa mga script ng PHP.

1) Lumikha ng isang simpleng form

Mga tag At tukuyin ang simula at wakas ng form. Panimulang form na tag naglalaman ng dalawang katangian: aksyon At paraan. Ang katangian ng pagkilos ay naglalaman ng URL ng script na dapat tawagan upang maproseso ang script. Katangian paraan nagsasabi sa browser kung anong uri ng kahilingan sa HTTP ang gagamitin para isumite ang form; posibleng mga halaga POST At paraan ng pagpapadala.

Magkomento

Ang pangunahing pagkakaiba sa pagitan ng mga pamamaraan ng POST at GET ay ang paraan ng paglilipat ng impormasyon. Sa pamamaraang GET, ipinapasa ang mga parameter sa address bar, i.e. mahalagang nasa header ng kahilingan ng HTTP, habang sa pamamaraang POST ang mga parameter ay ipinapadala sa pamamagitan ng katawan ng kahilingan ng HTTP at hindi makikita sa anumang paraan sa address bar.

Gawain: Ipagpalagay na kailangan mong gumawa ng drop-down list na may mga taon mula 2000 hanggang 2050.
Solusyon: Kailangan mong gumawa ng HTML form na may SELECT element at PHP script para sa pagproseso ng form.

Pagtalakay:

Una, gumawa tayo ng dalawang file: form.html at action.php. Ang form.html file ay maglalaman ng isang html form na may drop-down na listahan. Bukod dito, ang mga halaga sa listahan ay maaaring tukuyin sa dalawang paraan:

I. Manu-manong pagpasok ng data:


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

II. Pagpasok ng data sa pamamagitan ng isang loop:



Tulad ng nakikita mo, ang pangalawang halimbawa na may isang loop ay mas compact. Sa tingin ko, hindi na kailangang magbigay ng script ng handler para sa form na ito, dahil eksaktong kapareho ito ng proseso sa field ng text, i.e. Ang mga halaga ng listahan ay maaaring makuha mula sa isang superglobal array Sa tingin ko, hindi na kailangang magbigay ng script ng handler para sa form na ito, dahil eksaktong kapareho ito ng proseso sa field ng text, i.e. Ang mga halaga ng listahan ay maaaring makuha mula sa isang superglobal array.

$_POST

Paglalarawan:




Gumawa tayo ng HTML form para magpadala ng file sa server. Ang html form na ito ay naglalaman ng isang elemento, na nagbubukas ng dialog box para sa pagpili ng file na ia-upload sa server. Kapag pinindot mo ang pindutan , na nagbubukas ng dialog box para sa pagpili ng file na ia-upload sa server., ang file ay ipinasa sa handler script.

Pagkatapos ay kailangan mong i-script ang handler action.php . Bago isulat ang handler, kailangan nating magpasya kung aling direktoryo ang kokopyahin natin ang file:

Magkomento

Kung pinagkakatiwalaan mo ang mga user na mag-upload ng anumang mga file sa iyong server, kailangan mong maging lubhang maingat. Maaaring i-embed ng mga attacker ang "masamang" code sa isang larawan o file at ipadala ito sa server. Sa ganitong mga kaso, kailangan mong mahigpit na kontrolin ang pag-download ng mga file.

Ang halimbawang ito ay nagpapakita ng paglikha ng isang direktoryo at pagkopya ng isang file sa direktoryo na iyon papunta sa server.

Gusto ko ring magpakita ng isang halimbawa na may elemento checkbox. Ang elementong ito ay bahagyang naiiba sa iba pang mga elemento na kung hindi isa sa mga elemento checkbox'a ay hindi pinili, pagkatapos ay ang superglobal variable Sa tingin ko, hindi na kailangang magbigay ng script ng handler para sa form na ito, dahil eksaktong kapareho ito ng proseso sa field ng text, i.e. Ang mga halaga ng listahan ay maaaring makuha mula sa isang superglobal array ay magbabalik ng walang laman na halaga:


Asul
Itim
Puti

o kung paano magpadala ng mensahe sa pamamagitan ng e-mail gamit ang isang HTML form

Mayroon kang sariling website at gustong makatanggap ng mga liham o mensahe, mga tanong, payo o mga kahilingan lamang sa pamamagitan ng email mula sa iyong mga user, kung gayon ang araling ito ay para sa iyo!

Paano magpadala ng mensahe sa pamamagitan ng e-mail

Kailangan namin ang mga sumusunod na file:

  • form.html - pahina na may form.
  • form_processing.php - isang file na may script na nagpoproseso ng HTML form.
  • Tingnan natin ang form.html code:

    Pagproseso ng HTML Forms Gamit ang PHP



    pangalan mo:


    Email:


    Paksa:


    Mensahe:





    Ang HTML form ay naglalaman ng mga patlang para sa pagpasok ng pangalan ng gumagamit, email address, paksa ng mensahe, text ng mensahe at ang "Isumite" na buton, kapag na-click, ang impormasyon ay ipinapadala para sa pagproseso sa script ng PHP sa form_processing.php file.

    Ang paraan ng hypertext transport protocol ay may dalawang value: get (default) at post. Ang paraan ng pag-post ay mas madalas na ginagamit dahil pinapayagan nito ang malaking halaga ng data na mailipat. Ang lahat ng value na ipinasa sa processing script sa pamamagitan ng post method ay naka-store sa associative array $_POST (ang array na ito ay native na binuo sa PHP interpreter), na binubuo ng $_POST variables, kung saan ang pangalan ay ang aktwal na pangalan ng input field - ang halaga ng name="" attribute:

    Gumawa tayo ng isang processor file form_processing.php:


    Ang iyong mensahe ay matagumpay na naipadala!


    Pauwi >>>





    Pakiayos ang sumusunod na error:





    Seksyon ng code:

    — ay ipapakita ang tinukoy na teksto kung ang mga patlang ng HTML form ay napunan nang tama. index.php - ang pangunahing pahina ng iyong site.

    Seksyon ng code:

    - nagsasaad ng kalikasan ng pagkakamaling nagawa.

    Variable value:

    — ay awtomatikong ipapakita ang e-mail ng user sa kinakailangang linya kapag sumulat ka ng tugon.