Cum se configurează smartphone-uri și PC-uri. Portal informativ

PHP și formulare. PHP _SELF pe atributul de acțiune al formularului

Ultima actualizare: 1.11.2015

Una dintre principalele modalități prin care datele sunt transmise către un site web este prin prelucrarea formularelor. Formularele sunt elemente de markup HTML speciale care conțin diverse elemente de intrare - casete de text, butoane și așa mai departe. Și cu ajutorul datelor din formular putem introduce câteva date și le trimitem la server. Și serverul procesează deja aceste date.

Crearea formularelor constă din următoarele aspecte:

    Crearea elementelor

    în marcaj HTML

    Adăugarea unuia sau mai multor câmpuri de intrare la acest element

    Setarea metodei de transfer de date: GET sau POST

    Setarea adresei la care vor fi trimise datele introduse

Deci, să creăm o nouă formă. Pentru a face acest lucru, vom defini un nou fișier form.php, în care vom pune următorul conținut:

conectare

Autentificare:

Parola:

Atributul action = "login.php" al elementului formular specifică faptul că datele din formular vor fi procesate de script login.php care va fi cu dosarul formular.phpîntr-un singur folder. Iar atributul method = „POST” indică faptul că metoda POST va fi folosită ca metodă de transfer de date.

Acum să creăm un fișier login.php care va avea urmatorul continut:

Parola dvs.: $ parola ";?>

Variabila globală $ _POST este folosită pentru a obține datele din formular. Reprezintă o matrice asociativă de date transmise folosind metoda POST. Folosind cheile, putem obține valorile trimise. Cheile din această matrice sunt valorile atributelor de nume ale câmpurilor de introducere a formularului.

Deoarece atributul nume al câmpului de intrare de conectare este autentificare ( ), apoi în matricea $ _POST valoarea acestui câmp va reprezenta cheia „login”: $ _POST [„login”]

Și din moment ce există situații în care câmpul de intrare nu va fi setat, de exemplu, când mergeți direct la script: http: // localhost: 8080 / login.php... În acest caz, este recomandabil să verificați disponibilitatea datelor folosind funcția isset () înainte de procesarea datelor. Și dacă variabila este setată, atunci funcția isset () va returna true.

Acum putem trece la forma:

Și făcând clic pe butonul, datele introduse prin metoda POST vor fi trimise către script login.php:

Nu trebuie să trimiteți datele formularului către alt script; puteți procesa datele formularului în același fișier de formular. Pentru a face acest lucru, vom schimba fișierul formular.php in felul urmator:

Parola dvs.: $ parola ";)?>

conectare

Autentificare:

Parola:

Securitatea datelor

Securitatea datelor este foarte importantă în PHP. Să aruncăm o privire la câteva mecanisme simple care pot îmbunătăți securitatea site-ului nostru.

Dar mai întâi, să luăm forma din subiectul anterior și să încercăm să introducem câteva date în ea. De exemplu, să introducem în câmpul de conectare „", iar în câmpul parolei textul"

parola

":

După trimiterea datelor la marcajul html, va fi injectat codul javascript, care afișează o casetă de mesaj.

Pentru a evita acest tip de problemă de securitate, utilizați funcția htmlentities ():

If (isset ($ _ POST ["login"]) && isset ($ _ POST ["parolă"])) ($ login = htmlentities ($ _ POST ["login"]); $ parola = htmlentities ($ _ POST ["parolă"]); echo "Autentificarea dvs.: $ autentificare
Parola dvs.: $ parola ";)

Și chiar și după introducerea codului html sau javascript, toate etichetele vor fi eliminate și vom obține următoarea ieșire:

O altă caracteristică, funcția strip_tags (), vă permite să eliminați complet etichetele html:

If (isset ($ _ POST ["login"]) && isset ($ _ POST ["parolă"])) ($ login = strip_tags ($ _ POST ["login"]); $ parola = strip_tags ($ _ POST ["parolă"]); echo "Autentificarea dvs.: $ autentificare
Parola dvs.: $ parola ";)

Rezultatul muncii sale cu aceeași intrare va fi următorul rezultat.

Ziua bună tuturor. Alexey Gulynin este în legătură. În ultimul articol, ați aflat despre ce este serializarea în PHP. În acest articol, aș dori să vorbesc despre cum să lucrez cu formulare în PHP... PHP este conceput pentru scripting web, iar procesarea formularelor este poate cea mai importantă în acest proces. În zilele noastre, nici măcar nu poți întâlni site-uri care nu au, de exemplu, înregistrare sau un formular de feedback, sau un chestionar. Forumuri, magazine online, adăugarea unui comentariu, trimiterea unui mesaj pe o rețea de socializare - toate acestea sunt prelucrarea datelor plasate în câmpurile formularului. Să folosim un exemplu pentru a ne da seama cum procesează formulare în PHP.
Vom implementa o sarcină simplă: trebuie să creați 2 câmpuri (nume și prenume), transferați aceste date în scriptul action.php, ca urmare, ar trebui să iasă un salut. „Bun venit, prenume prenume”... Cine a uitat cum sunt create formularele și ce câmpuri există, puteți vedea. Să creăm un fișier test.html:

Nume: Nume de familie:

Vă rugăm să rețineți că fișierul action.php (în cazul nostru) trebuie să fie localizat în același folder cu fișierul test.html. Aici puteți specifica atât căi relative, cât și absolute. Fiți atenți, multe erori sunt asociate cu specificarea incorectă a căii către scriptul de gestionare a formularelor.

Să creăm un fișier action.php cu următorul conținut:

Daca acum deschidem fisierul test.html, completam campurile formularului si facem clic pe butonul, vom ajunge la fisierul action.php, unde va fi afisat un mesaj. În acest caz, browserul se referă la scriptul action.php și îl transmite acestuia prin „?” toate valorile atributelor numelui situate în interiorul etichetelor separat de &. Observați ce este înlocuit cu $ _SERVER.

Ne putem rezolva problema analizând șirul QUERY_STRING folosind funcții standard pentru lucrul cu șiruri în PHP, dar este mai bine să folosim un alt mecanism - acesta este utilizarea matricei $ _REQUEST. PHP plasează toate datele primite din câmpurile formularului în tabloul $ _REQUEST, indiferent de modul în care au fost transferate datele: POST sau GET (puteți afla prin $ _SERVER ["REQUEST_METHOD"]). Permiteți-mi să vă reamintesc cum diferă aceste metode:

Metoda GET este publică, metoda POST este privată, adică. diferă prin modul în care li se transmit parametri. Exemplu:

1) Dacă folosim metoda postării: mysite.ru/request.php.
2) Dacă folosim metoda get: mysite.ru/request.php?myname=ansAlexans&surname=Gulynin ".

De asemenea, pe lângă matricea $ _REQUEST, PHP creează și matricele $ _GET și $ _POST. Să ne implementăm acum sarcina, pe baza cunoștințelor acumulate:

Dacă acum completăm formularul și facem clic pe butonul, vom vedea că scriptul action.php ne întâmpină după nume și prenume. Totul funcționează corect.

Totul este bine aici, dar dacă schimbăm numele scriptului, atunci va trebui să facem modificări în fișierul test.html. Să modificăm fișierul action.php astfel încât, prin accesarea acestuia, fie să fie afișat un formular când nu am trimis nimic, fie un salut când am apăsat butonul:

"> Nume: Nume de familie:

Acum nu depindem de numele scriptului, pentru că îl setăm prin variabila de mediu $ _SERVER [„SCRIPT_NAME”]. = $ _ SERVER ["SCRIPT_NAME"]?> Este echivalent cu .
Pe lângă variabila de mediu SCRIPT_NAME, există multe altele.

Astăzi vom lucra la crearea unui formular HTML frumos de feedback pentru site, alimentat de PHP și cu protecție antispam încorporată. Nu aveți nevoie de cunoștințe speciale, elementele de bază ale html și logica elementară vor fi suficiente. Vă voi oferi fișiere gata făcute pe care le puteți introduce în site fără modificări sau le puteți ajusta pentru a se potrivi nevoilor dvs.

Am scris recent un articol despre cum să o faceți folosind pluginul Contact Form 7. Puteți, de asemenea, să faceți un formular de feedback pe Joomla și alte CMS populare.

Dar ce zici de site-urile care nu folosesc CMS popular? - Rămâne să faci totul cu mâinile tale.

În plus, utilizarea feedback-ului fără pluginuri este posibilă și pentru WordPress. Pluginurile superflue creează o încărcare considerabilă pe servere, iar abandonarea acestora vă permite să accelerați site-ul.

Puteți comanda instalarea și personalizarea formularului finit pentru 500 de ruble aici (aceasta este pentru cei prea leneși să lucreze cu mâinile sau priceperea nu este suficientă).

Cum funcționează formularul de feedback html

Formularul nostru va avea 5 câmpuri pentru introducerea datelor - nume, adresa de e-mail, număr de telefon, adresa site-ului web, textul mesajului (le puteți șterge sau modifica singur).

Toate câmpurile, cu excepția adresei site-ului web, vor fi obligatorii (puteți configura și dvs. aceasta).

Pentru câmpurile cu o adresă de e-mail și un site web, se va efectua o verificare obligatorie a corectitudinii introducerii datelor.

Formularul final de contact va arăta astfel:


Un formular de contact creat în html necesită 3 elemente pentru a funcționa.

Primul este responsabil pentru structura formularului în sine, pentru tipul și numărul câmpurilor de introducere a datelor. Acesta este un cod HTML normal.

Al doilea este responsabil de prelucrarea datelor pe care utilizatorul le introduce în câmpurile formularului. Acesta stabilește ce, unde și sub ce formă să redirecționeze, după ce se face clic pe butonul de trimitere a mesajului. Pentru implementare este folosit un script PHP special.

Al treilea este responsabil pentru aspect. Setează dimensiunea și poziția câmpurilor de introducere a datelor, adaugă diferite culori și efecte. Toate acestea sunt stabilite de stilurile CSS.

Versiunea demo a formularului

Vom analiza setarea fiecăruia dintre aceste elemente pas cu pas.

Creare layout HTML

Pentru a nu face articolul prea lung și a nu adăuga fiecare element separat, voi da codul html complet, iar mai jos voi descrie fiecare bloc și posibilele modificări.

Pentru a indica formularele în html, se folosește eticheta

, în interiorul căruia se completează parametrii necesari.

Format corect " [email protected]"

Formatul corect este „+ 7-123-4567890”

Formatul corect este „http://someaddress.com”

"Introdu numele tau" necesar />

„Introduceți adresa dvs. de e-mail” necesar />

"Introdu numarul tau de telefon" necesar />

Formatul corect este „+ 7-123-4567890”

„Introduceți adresa URL a site-ului dvs.” model = "(http | https): //.+" />

Formatul corect este „http://someaddress.com”

Să începem cu prima linie.

clasa = „form_contact”- indicăm clasa pentru a seta stiluri CSS în viitor.

acțiune = ”contact-form.php”- specificați numele fișierului cu scriptul care va procesa datele formularului și va trimite mesajul. Dacă fișierul se află în același folder cu pagina cu formularul, atunci este suficient să specificați doar numele fișierului, dacă este în altul, atunci va trebui să specificați calea către fișier.

Apoi sunt 4 blocuri

Responsabil pentru ieșirea câmpurilor pentru introducerea datelor, reiese clar din nume cine este responsabil pentru ce. Câmpurile în sine sunt afișate folosind etichete , în interiorul căruia sunt stabilite următoarele caracteristici:

Tip- responsabil pentru tipul datelor introduse, text - text simplu, e-mail - adresa de e-mail, astfel de câmpuri sunt verificate automat pentru corectitudine (@ trebuie să fie prezente), tel - număr de telefon, url - adresa site-ului.

Nume- numele propriu al elementului în sine, este necesar ca scriptul să știe să folosească datele fiecărui câmp. Dacă creați mai multe câmpuri de același tip, atunci trebuie să atribuiți un nume fiecărui câmp.

Substituent Este un indiciu în interiorul câmpului, textul care înlocuiește câmpul gol al elementului. Poate fi schimbat sau șters; nu afectează funcționarea formularului.

Necesar- acest parametru indică faptul că câmpul este obligatoriu. Puteți decide singur ce elemente sunt necesare și care nu.

model = ”(http | https): //.+”- această construcție servește la verificarea corectitudinii câmpului site-ului, indică faptul că adresa trebuie să conțină http: // text sau https: // text, în caz contrar va apărea o eroare.

Unele câmpuri au un sfat explicativ care apare atunci când selectați un articol. Ea este ranita , unde form_hint este clasa elementului (proprietățile sale sunt scrise în CSS). Puteți seta orice text în indicația pentru fiecare câmp al formularului de contact. Dacă nu aveți nevoie de o astfel de caracteristică, eliminați întreaga etichetă.

Câmpurile pentru introducerea mesajului în sine sunt marcate cu o etichetă

Este posibil să procesați formulare fără să vă faceți griji cu privire la numele câmpurilor reale.

Pentru a face acest lucru, puteți utiliza (în funcție de metoda de transfer) matricea asociativă $ HTTP_GET_VARS sau $ HTTP_POST_VARS. Aceste matrice conțin perechi nume/valoare pentru fiecare element al formularului trimis. Dacă nu vă pasă, puteți utiliza matricea asociativă $ _REQUEST.

Exemplul 6

Gestionarea intrărilor arbitrare, indiferent de metoda de transfer $ valoare) echo "$ cheie == $ valoare
"; ?>

Exemplul 7. Gestionarea unui clic pe un buton folosind operatorul „@”.

">

Folosind funcția antet (), trimițând antetul „Locație” către browser, puteți redirecționa utilizatorul către o pagină nouă.

De exemplu:

Transfer de fișiere pe server. Incarca fisier. Încărcare

PHP vă permite să transferați fișiere pe server. Formularul HTML pentru trimiterea fișierului trebuie să conțină argumentul enctype = "multipart / form-data".

În plus, trebuie să existe un câmp ascuns numit max_file_size în fața câmpului de copiere a fișierului din formular. Acest câmp ascuns ar trebui să conțină dimensiunea maximă a fișierului transferat (de obicei nu mai mult de 2 MB).

Câmpul de transfer de fișiere în sine este un element INPUT obișnuit cu argumentul tip = „fișier”.

De exemplu:

"metodă =" postare ">

După ce fișierul este încărcat pe server, este denumit în mod unic și stocat în directorul temporar. Calea completă către fișier este scrisă într-o variabilă globală, al cărei nume este același cu numele câmpului pentru transferul acestui fișier. În plus, PHP stochează câteva informații suplimentare despre fișierul transferat în alte variabile globale:

Exemplul 8

Procesarea fișierului transferat "; echo" nume: ". $ _ FILES [" userfile "] [" nume "]."
"; echo" dimensiune: ". $ _ FILES [" userfile "] [" size "]."
"; echo" tip: ". $ _ FILES [" userfile "] [" tip "]."
"; } ?>
"metodă =" postare ">

Exemple de încărcare a fișierelor pe server

Dacă aveți probleme cu serverul care transcodează fișierul încărcat, simbolul cu codul 0x00înlocuit cu un spațiu (caracter cu cod 0x20), adăugați la fișier httpd.conf din directorul Apache (/ usr / local / apache) următoarele rânduri.

CharsetRecodeMultipartForms Dezactivat

Top articole similare