Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

PHP dhe format. PHP _SELF në atributin e veprimit të formës

Përditësimi i fundit: 1.11.2015

Përpunimi i formularit është një nga mënyrat kryesore të transmetimit të të dhënave në një faqe interneti. Formularët janë elementë të veçantë të shënjimit HTML që përmbajnë elemente të ndryshme hyrëse - kuti teksti, butona, etj. Dhe me ndihmën e të dhënave të formularit, ne mund të fusim disa të dhëna dhe t'i dërgojmë në server. Dhe serveri tashmë po i përpunon këto të dhëna.

Krijimi i formularit përbëhet nga aspektet e mëposhtme:

    Krijimi i elementit

    në shënimin HTML

    Shtimi i një ose më shumë fushave hyrëse në këtë element

    Vendosja e metodës së transferimit të të dhënave: GET ose POST

    Vendosja e adresës në të cilën do të dërgohen të dhënat e futura

Pra, le të krijojmë një formë të re. Për ta bërë këtë, ne do të përcaktojmë një skedar të ri form.php, në të cilin do të vendosim përmbajtjen e mëposhtme:

Hyni

Identifikohu:

Fjalëkalimi:

Atributi veprimi = "login.php" i elementit të formës specifikon që të dhënat e formularit do të përpunohen nga skripti login.php e cila do të jetë me dosjen formë.php në një dosje. Dhe atributi metoda = "POST" tregon se metoda POST do të përdoret si metodë e transferimit të të dhënave.

Tani le të krijojmë një skedar login.php i cili do të ketë përmbajtjen e mëposhtme:

Fjalëkalimi juaj: $ fjalëkalim ";?>

Ndryshorja globale $ _POST përdoret për të marrë të dhënat e formularit. Ai përfaqëson një grup shoqërues të dhënash të paraqitura duke përdorur metodën POST. Duke përdorur çelësat, ne mund të marrim vlerat e dërguara. Çelësat në këtë grup janë vlerat e atributeve të emrit të fushave të hyrjes së formularit.

Meqenëse atributi i emrit të fushës së hyrjes së hyrjes është login ( ), pastaj në grupin $ _POST vlera e kësaj fushe do të përfaqësojë çelësin "login": $ _POST ["login"]

Dhe meqenëse ka situata kur fusha e hyrjes nuk do të vendoset, për shembull, kur shkoni direkt në skript: http: // localhost: 8080 / login.php... Në këtë rast, këshillohet që të kontrolloni disponueshmërinë e të dhënave duke përdorur funksionin isset () përpara se të përpunoni të dhënat. Dhe nëse ndryshorja është vendosur, atëherë funksioni isset () do të kthehet true.

Tani mund t'i drejtohemi formës:

Dhe duke klikuar butonin, të dhënat e futura me metodën POST do të dërgohen në skript login.php:

Ju nuk keni nevojë t'i dërgoni të dhënat e formularit në një skript tjetër; mund t'i përpunoni të dhënat e formularit në të njëjtin skedar formulari. Për ta bërë këtë, ne do të ndryshojmë skedarin formë.php në mënyrën e mëposhtme:

Fjalëkalimi juaj: $ fjalëkalim ";)?>

Hyni

Identifikohu:

Fjalëkalimi:

Siguria e të dhënave

Siguria e të dhënave është shumë e rëndësishme në PHP. Le të hedhim një vështrim në disa mekanizma të thjeshtë që mund të përmirësojnë sigurinë e faqes sonë të internetit.

Por së pari, le të marrim formularin nga tema e mëparshme dhe të përpiqemi të fusim disa të dhëna në të. Për shembull, le të fusim në fushën e hyrjes "", dhe në fushën e fjalëkalimit tekstin"

fjalëkalimin

":

Pas dërgimit të të dhënave në shënjimin html, do të injektohet kodi javascript, i cili shfaq një kuti mesazhi.

Për të shmangur këtë lloj problemi sigurie, përdorni funksionin htmlentities ():

Nëse (isset ($ _ POST ["hyrja"]) && është vendosur ($ _ POST ["fjalëkalim"])) ($ login = htmlentities ($ _ POST ["login"]); $ fjalëkalim = htmlentities ($ _ POST ["fjalëkalimi" ]); jehonë "Hyrja juaj: $ login
Fjalëkalimi juaj: $ fjalëkalim ";)

Dhe edhe pasi të keni futur kodin html ose javascript, të gjitha etiketat do të shpëtojnë dhe do të marrim daljen e mëposhtme:

Një veçori tjetër, funksioni strip_tags (), ju lejon të hiqni plotësisht etiketat html:

Nëse (isset ($ _ POST ["hyrja"]) && është vendosur ($ _ POST ["fjalëkalimi"])) ($ login = strip_etiketat ($ _ POST ["login"]); $ fjalëkalim = strip_tags ($ _ POST ["fjalëkalimi" ]); jehonë "Hyrja juaj: $ login
Fjalëkalimi juaj: $ fjalëkalim ";)

Rezultati i punës së tij me të njëjtën hyrje do të jetë prodhimi i mëposhtëm.

Ditë të mbarë për të gjithë. Alexey Gulynin është në kontakt. Në artikullin e fundit, mësuat se çfarë është serializimi në php. Në këtë artikull, unë do të doja të flas se si të punoj me të forma në PHP... PHP është krijuar për skriptimin në ueb dhe përpunimi i formularit është ndoshta më i rëndësishmi në këtë proces. Në ditët e sotme, nuk mund të hasni as faqe që nuk kanë, për shembull, regjistrim ose një formular reagimi ose një pyetësor. Forumet, dyqanet në internet, shtimi i një komenti, dërgimi i një mesazhi në një rrjet social - e gjithë kjo është përpunimi i të dhënave të vendosura në fushat e formularit. Le të përdorim një shembull për të kuptuar se si procesimi i formave në PHP.
Ne do të zbatojmë një detyrë të thjeshtë: ju duhet të krijoni 2 fusha (emri dhe mbiemri), transferoni këto të dhëna në skenarin action.php, si rezultat, duhet të dalë një përshëndetje "Mirëserdhe, mbiemri i parë"... Kush ka harruar se si krijohen format dhe cilat fusha ka, mund ta shihni. Le të krijojmë një skedar test.html:

Emri: Mbiemri:

Ju lutemi vini re se skedari action.php (në rastin tonë) duhet të jetë i vendosur në të njëjtën dosje si skedari test.html. Këtu mund të specifikoni shtigjet relative dhe absolute. Kini kujdes, shumë gabime shoqërohen me specifikimin e gabuar të rrugës për në skriptin e trajtuesit të formularit.

Le të krijojmë një skedar action.php me përmbajtjen e mëposhtme:

Nëse tani hapim skedarin test.html, plotësojmë fushat e formularit dhe klikojmë në butonin, do të arrijmë te skedari action.php, ku do të shfaqet një mesazh. Në këtë rast, shfletuesi i referohet skriptit action.php dhe ia kalon atë nëpërmjet "?" të gjitha vlerat e atributeve të emrit të vendosura brenda etiketave ndarë nga &. Vini re se çfarë është zëvendësuar për $ _SERVER.

Ne mund ta zgjidhim problemin tonë duke analizuar vargun QUERY_STRING duke përdorur funksione standarde për të punuar me vargje në PHP, por është më mirë të përdorim një mekanizëm tjetër - ky është përdorimi i grupit $ _REQUEST. PHP vendos të gjitha të dhënat e marra nga fushat e formularit në grupin $ _REQUEST, pavarësisht se si u transferuan të dhënat: POST ose GET (mund t'i zbuloni përmes $ _SERVER ["REQUEST_METHOD"]). Më lejoni t'ju kujtoj se si ndryshojnë këto metoda:

Metoda GET është publike, metoda POST është private, d.m.th. ato ndryshojnë në mënyrën se si u kalojnë parametrat. Shembull:

1) Nëse përdorim metodën e postimit: mysite.ru/request.php.
2) Nëse përdorim metodën e marrë: mysite.ru/request.php?myname=ansAlexans&surname=Gulynin ".

Gjithashtu, përveç grupit $ _REQUEST, PHP krijon vargjet $ _GET dhe $ _POST. Le të zbatojmë tani detyrën tonë, bazuar në njohuritë e marra:

Nëse tani plotësojmë formularin dhe klikojmë në butonin, do të shohim se skripti action.php na përshëndet me mbiemër dhe emër. Gjithçka funksionon si duhet.

Gjithçka është në rregull këtu, por nëse ndryshojmë emrin e skriptit, atëherë do të duhet të bëjmë ndryshime në skedarin test.html. Le të modifikojmë skedarin action.php në mënyrë që, duke hyrë në të, ose të shfaqet një formular kur nuk kemi dorëzuar asgjë, ose një përshëndetje kur kemi klikuar butonin:

"> Emri: Mbiemri:

Tani nuk varemi nga emri i skenarit, sepse e vendosim përmes variablës mjedisore $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Është ekuivalente me .
Përveç ndryshores së mjedisit SCRIPT_NAME, ka shumë të tjerë.

Sot ne do të punojmë për krijimin e një formulari të bukur HTML për komentet e sajtit, të mundësuar nga PHP dhe me mbrojtje të integruar ndaj spamit. Ju nuk keni nevojë për ndonjë njohuri të veçantë, bazat e html dhe logjika elementare do të jenë të mjaftueshme. Unë do të jap skedarë të gatshëm që mund t'i futni në faqe pa ndryshime ose t'i rregulloni për t'iu përshtatur nevojave tuaja.

Kohët e fundit kam bërë një artikull se si ta bëj atë duke përdorur shtojcën e Formularit të Kontaktit 7. Ju gjithashtu mund të bëni vetëm një formular reagimi në Joomla dhe CMS të tjera të njohura.

Por çfarë ndodh me faqet që nuk përdorin CMS të njohura? - Mbetet për të bërë gjithçka me duart tuaja.

Për më tepër, përdorimi i reagimeve pa shtojca është i mundur edhe për WordPress. Shtojcat e tepërta krijojnë një ngarkesë të konsiderueshme në serverë dhe braktisja e tyre ju lejon të shpejtoni faqen.

Mund të porosisni instalimin dhe personalizimin e formularit të përfunduar për 500 rubla këtu (kjo është për ata që janë shumë dembel për të punuar me duart e tyre ose aftësia nuk është e mjaftueshme).

Si funksionon forma e reagimit html

Formulari ynë do të ketë 5 fusha për futjen e të dhënave - emrin, adresën e emailit, numrin e telefonit, adresën e faqes në internet, tekstin e mesazhit (mund t'i fshini ose t'i ndryshoni vetë).

Të gjitha fushat, përveç adresës së faqes së internetit, do të kërkohen (mund ta konfiguroni edhe vetë).

Për fushat me një adresë emaili dhe një faqe interneti, do të kryhet një kontroll i detyrueshëm i saktësisë së futjes së të dhënave.

Formulari përfundimtar i kontaktit do të duket si ky:


Një formë kontakti e krijuar në html kërkon 3 elementë për të punuar.

E para është përgjegjëse për vetë strukturën e formularit, për llojin dhe numrin e fushave të futjes së të dhënave. Ky është kod normal html.

E dyta është përgjegjëse për përpunimin e të dhënave që përdoruesi fut në fushat e formularit. Ai përcakton se çfarë, ku dhe në çfarë forme të përcillni, pasi të klikohet butoni për dërgimin e mesazhit. Një skript i veçantë PHP përdoret për implementim.

E treta është përgjegjëse për pamjen. Vendos madhësinë dhe pozicionin e fushave të futjes së të dhënave, shton ngjyra dhe efekte të ndryshme. E gjithë kjo është vendosur nga stilet CSS.

Versioni demonstrues i formularit

Ne do të analizojmë vendosjen e secilit prej këtyre elementeve hap pas hapi.

Krijimi i paraqitjes HTML

Për të mos e zgjatur shumë artikullin dhe për të mos shtuar secilin element veç e veç, do të jap kodin e plotë html dhe më poshtë do të përshkruaj çdo bllok dhe ndryshimet e mundshme.

Për të treguar format në html, përdoret etiketa

, brenda së cilës plotësohen parametrat e nevojshëm.

Formati i duhur " [email i mbrojtur]"

Formati i saktë është "+ 7-123-4567890"

Formati i saktë është "http://someaddress.com"

"Shkruaj emrin tend" kërkohet />

"Fut adresën tuaj të emailit" kërkohet />

"Fut numrin tuaj të telefonit" kërkohet />

Formati i saktë është "+ 7-123-4567890"

"Fut url-në e faqes suaj të internetit" model = "(http | https): //.+" />

Formati i saktë është "http://someaddress.com"

Le të fillojmë me rreshtin e parë.

klasa = "forma_kontakti"- ne tregojmë klasën për të vendosur stilet CSS në të ardhmen.

action = "contact-form.php"- specifikoni emrin e skedarit me skriptin që do të përpunojë të dhënat e formularit dhe do të dërgojë mesazhin. Nëse skedari është në të njëjtën dosje me faqen me formularin, atëherë mjafton të specifikoni vetëm emrin e skedarit, nëse në një tjetër, atëherë do t'ju duhet të specifikoni shtegun për në skedar.

Pastaj ka 4 blloqe

Përgjegjës për daljen e fushave për futjen e të dhënave, nga emrat është e qartë se cila është përgjegjëse për çfarë. Vetë fushat shfaqen duke përdorur etiketa , brenda së cilës vendosen karakteristikat e mëposhtme:

Lloji- përgjegjës për llojin e të dhënave hyrëse, tekstin - tekst i thjeshtë, email - adresën e emailit, fusha të tilla kontrollohen automatikisht për korrektësi (@ duhet të jetë i pranishëm), numrin e telefonit, url - adresën e faqes.

Emri- emri i vetë elementit, është e nevojshme që skripti të dijë të përdorë të dhënat e secilës fushë. Nëse krijoni disa fusha të të njëjtit lloj, atëherë duhet të caktoni një emër për secilën fushë.

VendmbajtësiËshtë një aluzion brenda fushës, teksti që zëvendëson fushën e zbrazët të elementit. Mund të ndryshohet ose fshihet; nuk ndikon në funksionimin e formularit.

E detyrueshme- ky parametër tregon që fusha është e nevojshme. Ju mund të vendosni vetë se cilët elementë kërkohen dhe cilët jo.

model = ”(http | https): //.+”- ky konstruksion shërben për të kontrolluar korrektësinë e fushës së faqes së internetit, tregon se adresa duhet të përmbajë tekst http: // ose tekst https: //, përndryshe do të ketë një gabim.

Disa fusha kanë një këshillë mjeti që shfaqet kur zgjidhni një artikull. Ajo është e lënduar , ku form_hint është klasa e elementit (vetitë e tij shkruhen në CSS). Mund të vendosni çdo tekst në këshillën e veglave për secilën fushë të formularit të kontaktit. Nëse nuk ju nevojitet një veçori e tillë, thjesht hiqni të gjithë etiketën.

Fushat për futjen e vetë mesazhit janë shënuar me një etiketë

Është e mundur të përpunohen formularët pa u shqetësuar për emrat aktualë të fushave.

Për ta bërë këtë, mund të përdorni (në varësi të metodës së transferimit) grupin shoqërues $ HTTP_GET_VARS ose $ HTTP_POST_VARS. Këto vargje përmbajnë çifte emra/vlerash për secilin element të formularit të paraqitur. Nëse nuk ju intereson, mund të përdorni grupin shoqërues _REQUEST $.

Shembulli 6

Trajtimi i të dhënave arbitrare pavarësisht nga mënyra e transferimit $ value) jehonë "$ key == $ vlerë
"; ?>

Shembulli 7. Trajtimi i një klikimi në një buton duke përdorur operatorin "@".

">

Duke përdorur funksionin e kokës (), duke dërguar kokën "Vendndodhja" në shfletues, mund ta ridrejtoni përdoruesin në një faqe të re.

Për shembull:

Transferimi i skedarit në server. Ngarko skedarin. Ngarkoni

PHP ju lejon të transferoni skedarë në server. Formulari HTML për paraqitjen e skedarit duhet të përmbajë argumentin enctype = "multipart / form-data".

Përveç kësaj, duhet të ketë një fushë të fshehur me emrin max_file_size përpara fushës së kopjes së skedarit në formular. Kjo fushë e fshehur duhet të përmbajë madhësinë maksimale të skedarit të transferuar (zakonisht jo më shumë se 2 MB).

Vetë fusha e transferimit të skedarit është një element i rregullt INPUT me argumentin tip = "file".

Për shembull:

"metoda =" postim ">

Pasi skedari të ngarkohet në server, ai emërohet në mënyrë unike dhe ruhet në drejtorinë e përkohshme. Rruga e plotë e skedarit shkruhet në një ndryshore globale, emri i së cilës është i njëjtë me emrin e fushës për transferimin e këtij skedari. Përveç kësaj, PHP ruan disa informacione shtesë rreth skedarit të transferuar në variabla të tjerë globalë:

Shembulli 8

Përpunimi i skedarit të transferuar "; jehonë" emri: ". $ _ FILES [" skedari i përdoruesit "] [" emri "]."
"; jehonë" madhësia: ". $ _ FILES [" skedari i përdoruesit "] [" madhësia "]."
"; jehonë" shkruani: ". $ _ FILES [" userfile "] [" type "]."
"; } ?>
"metoda =" postim ">

Shembuj të ngarkimit të skedarëve në server

Nëse keni probleme me transkodimin e serverit të skedarit të ngarkuar, simboli me kodin 0x00 zëvendësohet me një hapësirë ​​(karakter me kod 0x20), shtoni në skedar httpd.conf nga drejtoria Apache (/ usr / local / apache) vijat e mëposhtme.

CharsetRecodeMultipartForms Off

Artikujt kryesorë të lidhur