Cum se scrie un script PHP pentru un formular. Creăm un formular pentru trimiterea datelor în html. Exemplul #1 Cel mai simplu formular HTML

Astăzi vom lucra la crearea unei frumoase Formulare HTML s părere pentru un site care rulează pe PHP și are protecție anti-spam încorporată. Nici unul cunoștințe speciale nu ai nevoie, va fi suficient elementele de bază ale htmlși logica elementară. Vă voi furniza fișiere gata făcute pe care le puteți introduce în site fără modificări sau adaptați nevoilor dumneavoastră.

Am scris recent un articol despre cum să faci asta folosind un plugin Formular de contact 7. De asemenea, puteți crea pur și simplu un formular de feedback pe Joomla și alte CMS populare.

Dar ce ar trebui să facă site-urile care nu folosesc CMS popular? – Rămâne doar să faci totul manual.

În plus, utilizarea feedback-ului fără pluginuri este posibilă și pentru WordPress. Pluginurile inutile creează o sarcină semnificativă pe servere, iar eliminarea acestora vă permite să accelerați site-ul.

Puteți comanda instalarea și configurarea formularului finit pentru 500 de ruble aici (aceasta este pentru cei care sunt prea leneși să lucreze cu mâinile lor sau au abilități insuficiente).

Cum funcționează formularul de feedback HTML

Formularul nostru va avea 5 câmpuri pentru introducerea datelor - nume, Adresa de e-mail, numărul 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 acest lucru singur).

Pentru câmpurile cu Adresa de e-mail iar site-ul va efectua o verificare obligatorie a corectitudinii introducerii datelor.

Forma finală de comunicare va arăta astfel:

Pentru munca Formular de contact, creat în html, necesită 3 elemente.

Primul este responsabil pentru structura formularului în sine, 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ă trimiți după ce butonul de trimitere este apăsat. Pentru implementare este folosit un script PHP special.

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

Versiunea demo a formularului

Vă vom ghida pas cu pas prin configurarea fiecăruia dintre aceste elemente.

Crearea unui layout HTML

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

Pentru a desemna formularele în HTML, se folosește o etichetă, în interiorul căreia sunt completați parametrii necesari.

Nume:

E-mail: Format corect "[email protected]"

Telefon: format corect „+7-123-4567890”

Site: format corect „http://someaddress.com”

Mesaj text:

Trimite un mesaj

Nume:

E-mail:

Telefon:

Formatul corect este „+7-123-4567890”

Site:

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

Mesaj text:

Trimite un mesaj

Să începem cu prima linie.

class="contact_form" – specificați clasa pentru a seta stiluri CSS în viitor.

action=”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ă indicați doar numele fișierului dacă se află într-un folder diferit, atunci va trebui să indicați calea către fișier.

Urmează 4 blocuri

Responsabil pentru afișarea câmpurilor pentru introducerea datelor, numele indică clar cine este responsabil pentru ce. Câmpurile în sine sunt afișate folosind etichete, în cadrul cărora sunt setate următoarele caracteristici:

Tip – responsabil pentru tipul de date 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 web.

Nume este 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 fiecărui câmp propriul nume.

Substituent este un tooltip situat în interiorul câmpului, text 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.

pattern="(http|https)://.+” – această construcție este folosită pentru a verifica corectitudinea câmpului site-ului, indicând faptul că adresa trebuie să conțină http://text sau https://text, în caz contrar va exista eroare.

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

Câmpul de introducere a mesajului în sine este marcat cu o etichetă, în care cols specifică numărul de caractere din lățimea câmpului, iar rândurile numărul de linii.

Anti-spam – câmp invizibil numit name=bezspama. Are stilul display:none - asta înseamnă că câmpul este invizibil pentru oameni, dar roboții îl vor completa automat.

Iar elementul final al oricărui formular este butonul pentru a trimite un mesaj, acesta este specificat de etichetă, care are propria sa clasă de personalizare a aspectului și a tipului „submit”.

Pentru a adăuga sau elimina câmpuri, eliminați-le pe cele inutile sau introduceți altele noi prin analogie cu cele existente, specificând toate proprietățile și numele pentru acestea.

Decorarea cu stiluri CSS

Dacă te uiți la rezultatul într-un browser, vei vedea ceva stângaci și neatractiv. Pentru ca noi să reușim formă frumoasă feedback, va trebui să lucrați la stilurile acestuia (html nu va fi suficient).

Dacă cunoașteți CSS, atunci puteți seta designul pentru toate elementele de formular fără probleme, nici măcar nu aveți nevoie de ajutorul meu.

Dacă nu sunteți familiarizat cu stilurile, atunci vă voi oferi doar dosar gata, în care totul este deja scris în așa fel încât forma ta să fie identică cu cea din exemplu.

Puteți conecta stiluri în două moduri:

  • Copiați conținutul fișierului în fișierul style.css care este deja pe site-ul dvs. (adăugați la sfârșit)
  • Puneți fișierul pe care l-am dat pe hosting și conectați-l.
  • Fișierele de stil sunt conectate folosind următorul cod plasat în interior. Dacă fișierul cu stiluri (styles.css) nu se află în același folder cu pagina html, apoi notează calea plinăînaintea lui.

    În fișierul de stil pe care l-am dat, fiecare element este etichetat, astfel încât să puteți face orice modificări - schimbați culorile, dimensiunile, formele, efectele. Deținând cel mai mult cunostinte de baza, îl puteți edita cu ușurință.

    Configurarea codului PHP (protecție anti-spam adăugată)

    Ca și în cazul stilurilor, vă voi oferi cod gata făcut care procesează formularul de feedback HTML și protejează împotriva spam-ului. Acest fișier este personalizat pentru o anumită configurație și dacă doriți să setați câmpuri noi sau să le eliminați pe cele existente, va trebui să faceți modificări în el. Prin urmare, vă voi spune cum funcționează, astfel încât să înțelegeți ce trebuie schimbat.

    Pentru site-urile care utilizează codificarea Windows-1251 și versiunea php 5.4+, va trebui să adăugați un plus la codul legat de funcția htmlspecialchars. Îl voi arăta mai jos. În caz contrar, câmpurile goale vor apărea în locul alfabetului chirilic.

    Amintiți-vă, în proprietățile formularului (în fișier html) am specificat parametrul action=”contact-form.php”. Trebuie să creați un fișier numit contact-form.php și să plasați codul de mai jos în el.

    Pentru a obține datele formularului, se folosește variabila globală $_POST. Reprezintă o matrice asociativă de date trimise 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 are valoarea login(), atunci în matricea $_POST valoarea acestui câmp va reprezenta cheia „login”: $_POST["login"]

    Și deoarece pot exista 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 accesa formularul:

    Și când butonul este apăsat, datele introduse vor fi trimise către script folosind metoda POST. login.php:

    Nu este necesar 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, să schimbăm fișierul formular.php in felul urmator:

    Autentificare pe site Logare:

    Parola:

    Securitatea datelor

    Securitatea datelor este de mare importanță în PHP. Să ne uităm 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ă introduceți „alert(hi);” în câmpul de conectare și „parolă” în câmpul pentru parolă:

    După trimiterea datelor către marcaj html va fi implementat cod javascript, care afișează o casetă de mesaj.

    A evita probleme similare Pentru a fi în siguranță, ar trebui să utilizați funcția htmlentities():

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

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

    O altă funcție - funcția strip_tags() vă permite să excludeți complet etichetele html:

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

    Rezultatul funcționării sale cu aceeași intrare va fi următoarea ieșire.

    Acest tutorial PHP acoperă Noțiuni de bază limbaj: procesarea formularelor cu trimiterea unei cereri către pagini web, constructe de bază de control PHP la procesarea formularelor, înregistrarea datelor din Formulare PHP la fișier, funcție de dată în PHP date().

    1. Să vă reamintim că totul fișiere php sunt testate numai când Denver rulează și numai din bara de adrese a browserului. Rulați fișiere php dublu click este interzis!

    2. Lansați Denver.

    Exercițiul 1: Prelucrarea unui formular simplu

    ÎN această lecție PHP să ne uităm la procesarea unui formular pe o pagină HTML, creând variabile PHP pentru câmpurile de formular.

    1. Creați o formă așa cum se arată în Fig. 3.1. Se intelege ca atunci cand dai click pe butonul Trimite comanda, datele din formular vor fi transferate administratorului, iar clientul va vedea pe ecran raspunsul Comanda procesata. Dacă vă este greu să scrieți un formular, atunci implementați codul de sub figură și salvați-l în folderul php_2 sub numele forma_bob.html Vă reamintim că adresa handler-ului formularului este scrisă în atributul action al etichetei formularului. .

    Figura 3.1

    2. Pentru ca utilizatorul să primească un răspuns după trimiterea datelor, este necesar să creeze un handler de formulare în PHP. Creați codul de mai jos și salvați-l în folderul php_2 ca zakaz.php

    3. Verificați funcționalitatea manipulatorului. Pentru a face acest lucru, rulați fișierul forma_bob.html printr-un browser tastând bara de adresa adresa browserului http://localhost/php_2/forma_bob.html

    4. Introduceți orice numere în câmpurile formularului și faceți clic pe butonul Trimite comanda. Rezultatul din Fig. 3.2.

    Figura 3.2

    Variabile de formă

    Scopul utilizării unui formular de comandă este de a obține informațiile despre comandă ale clientului pe care le-a introdus pe tastatură. În cadrul unui script PHP, fiecare dintre câmpurile formularului poate fi accesat ca o variabilă care are același nume ca și câmpul formularului. În limbaj variabile PHP sunt ușor de recunoscut, deoarece încep cu semnul dolar $.

    Puteți accesa conținutul câmpului tireqty în următoarele moduri:

    $tireqty //stil scurt

    $_POST[‘tireqty’] //stil mediu

    $HTTP_POST_VARS[‘tireqty’] //stil lung

    Vom folosi stilul lung pentru a face referire la variabilele formularului, dar pentru ușurință în utilizare vom construi versiuni scurte ale aplicației. Este convenabil și cale sigura manipularea datelor care funcționează eficient în toate sistemele, indiferent de versiunile și setările selectate.

    Când copiem conținutul unei variabile în alta, folosim operația de atribuire, care este notă în limbaj PHP Se folosește semnul egal (=). Următoarea linie de cod creează o nouă variabilă numită $tireqty și înglobează conținutul $_POST['tireqty'] în această nouă variabilă:

    $tireqty=$_POST['tireqty']

    Deoarece acest script nu generează nicio ieșire, nu are nicio diferență dacă este plasat deasupra sau sub . De obicei, acest bloc este plasat la începutul scriptului.

    5. În fișierul zakaz.php, modificați codul după cum urmează și verificați funcționalitatea formularului. Rezultatul din Fig. 3.3. Numerele pot diferi în funcție de datele pe care le-ați introdus.

    Figura 3.3

    Exercițiul 2: Creați un calculator pentru formularul Bob's Auto Parts

    În această lecție de PHP vom aborda aritmetica de bază Funcții PHP pentru calcule.

    1. Salvați fișierul forma_bob.html sub numele forma_bob_2.html

    2. Salvați fișierul zakaz.php sub numele zakaz_2.php

    3. În fișierul forma_bob_2.html, schimbați forma „Piese auto de la Bob” astfel încât să arate ca în Fig. 3.4. Nu uitați să schimbați numele handler-ului în zakaz_2.php. Dacă sunteți în pierdere, puteți implementa codul de mai jos.

    Figura 3.4

    4. Creați tratament nou pentru formularul din fișierul zakaz_2.php, folosind cunoștințele acumulate din lecțiile anterioare. Prelucrarea trebuie să conțină următoarele date și condiții de ieșire:

    1. Costul fiecărui produs este determinat de o constantă. O constantă în PHP este specificată de funcția define. Exemplu define("POKRPRICE",10); Primul parametru al funcției este numele constantei, care este scris cu majuscule, al doilea parametru este valoarea constantei.

    2. Operație logică SAU este notat cu ||

    3. Operația logică AND este notată cu && .

    4. Operații de comparare: mai mare decât >, mai puțin< , больше или равно >= , mai mic sau egal

    Comutatoare

    În acest articol, casetele de selectare sunt elemente care etichete create intrare cu valoarea parametrului tip egală cu caseta de selectare . Formularul pentru utilizarea unui număr variabil de „comutatoare” este construit exact în același mod. Rețineți că alegerea valorii specifice butonului radio (adică valoarea proprietății valorii) nu este importantă. Un exemplu este prezentat în lista de mai jos:






    Cu toate acestea, procesarea unui astfel de formular diferă de procesarea descrisă pentru câmpurile de text. În acest caz, este necesar să se determine dacă un vizitator al site-ului a activat acest sau acel comutator. Dacă este activat, atunci elementul de matrice corespunzător există; dacă nu, atunci lipsește. Următoarea lista este un exemplu Script PHP care tipărește butoanele radio activate:

    Butoane radio

    Înainte de a descrie procesarea butoanelor radio, este necesar să ne amintim cum funcționează acestea. Esența butoanelor radio (elemente create etichetat cu intrare cu valoarea parametrului tip egală cu radio ) este că prin selectarea unui buton, utilizatorul deselectează automat un alt buton din același set. Butoanele sunt combinate într-un set foarte simplu: toate butoanele din set au același nume.

    Dar valorile (adică parametrii de valoare) butoanelor din set sunt diferite. Iar valoarea butonului selectat cu numele setului va fi trimisă pe site. La fel ca în cazul câmpurilor de text și al butoanelor radio, numele seturilor de butoane radio ar trebui să fie formatate ca nume ale elementelor de matrice în PHP. Un exemplu de astfel de formă este dat în următoarea listă:

    // primul set de butoane
    // al doilea set de butoane
    // al treilea set de butoane

    Procesarea butoanelor radio combină ideile de utilizare atât a câmpurilor de text, cât și a butoanelor radio în procesare. Dacă autorul paginii html nu a setat o valoare implicită, iar utilizatorul nu a selectat un anumit buton din setul de butoane radio, atunci acest element nu va fi în matrice (ca pentru butoanele radio).

    Pentru a organiza transferul de date către server folosind un formular, va trebui să implementați un formular HTML în care vizitatorii site-ului își vor introduce informațiile și codul PHP, al cărui scop este să accepte și să proceseze datele primite pe server.

    Formular de trimitere a datelor HTML

    Formularul de pe pagină este format din etichete ..., în interiorul cărora sunt plasate etichetele câmpurilor de introducere informații text, etichete pentru componente speciale (de exemplu, o casetă combinată), etichete pentru câmpul de selecție și încărcarea fișierului.

    * Pentru HTML5 este, de asemenea, posibil să plasați etichete de câmpuri de formular nu în interiorul etichetelor de formular, ci oriunde în pagină. În acest caz, pentru fiecare astfel de câmp trebuie să specificați atributul „form” pentru a determina cu ce formular de trimitere ar trebui să interacționeze.

    Deci, cel mai simplu formular de depunere poate conține următorul cod:


    Valoarea A:
    Valoarea B:

    Elemente de formular și parametrii acestora:

    action="myform.php" – atributul „action” determină ce fișier php va procesa datele trimise. În acest exemplu, datele vor fi trimise în fișierul „myform.php”, aflat în același director cu pagina cu formularul. Dacă acest atribut nu este specificat în mod explicit, datele formularului vor fi trimise la adresa paginii formularului însuși.

    method="post" – parametrul metodă definește metoda de transmitere Date POST sau GET. Mai multe detalii despre acest lucru în articolul „Diferențe între metodele POST și GET”. Dacă nu specificați atributul în mod explicit, metoda GET va fi utilizată în mod implicit.

    Textul „Valoarea A:” și „Valoarea B:” a fost adăugat doar în scopul conceperii și clarității formularului pentru utilizator. Nu este necesar să adăugați acest lucru pentru a transfera date, dar pentru a fi clar utilizatorului ce să introducă, merită indicat.

    Etichetele sunt folosite pentru a forma diferite controale de formular.

    type="text" – atributul „type” determină tipul câmpului. În funcție de tipul specificat, atât aspectul elementului, cât și scopul acestuia se schimbă. Valoarea atributului „text” indică faptul că elementul va fi afișat în browser ca un câmp text cu o singură linie în care utilizatorul poate introduce un șir.

    name="data1" – atributul „name” indică numele, sau mai degrabă indexul, al datelor din matricea primită de server. Acesta este un parametru obligatoriu, prin care handlerul PHP poate accesa apoi valoarea transmisă. Numele poate fi ales arbitrar, cu toate acestea, este mai convenabil atunci când această valoare are o semnificație clară.

    type="submit" – o etichetă cu această valoare pentru parametrul „type” va fi afișată pe pagină ca buton. De fapt, poți să faci fără un buton de pe formular. Dacă, de exemplu, forma are câmpuri de text, apoi trimiterea se poate face prin simpla apăsare a „Enter” de pe tastatură. Dar a avea un buton face forma mai ușor de înțeles.

    value="Trimiteți" – в данном случае (для type="submit") определяет только надпись на кнопке. Для type="text", например, это будет текст, который будет выведен в текстовом поле.!}

    Ca rezultat, pe pagină acest cod va arăta cam așa:

    Valoarea A:
    Valoarea B:

    Făcând clic pe butonul, datele vor fi trimise către pagina specificată, iar dacă acesta există și funcționează corect, datele vor fi prelucrate.

    Prelucrarea datelor trimise prin formular HTML în PHP

    Datele trimise în modul descris sunt plasate în tablourile superglobale $_POST, $_GET și $_REQUEST. $_POST sau $_GET vor conține date în funcție de metoda folosită pentru a le trimite. $_REQUEST conține date trimise prin oricare dintre metodele specificate.

    $_POST, $_GET și $_REQUEST sunt tablouri asociative ale căror câmpuri de index se potrivesc cu atributele „nume” ale etichetelor. În consecință, pentru a lucra cu datele din fișierul myform.php, puteți aloca valori variabile elemente ale unei astfel de matrice, specificând numele câmpului ca index:

    // pentru metoda GET
    $a = $_GET["data1"];
    $b = $_GET["date2"];

    // pentru metoda POST
    $a = $_POST["data1"];
    $b = $_POST["data2"];

    // pentru orice metodă
    $a = $_CERERE[„date1” ];
    $b = $_CERERE[„date2”];

    Verificarea completării câmpurilor formularului

    Uneori, atunci când primiți date, trebuie să verificați dacă utilizatorul a trimis un formular gol. Puteți utiliza funcția goală pentru aceasta.

    dacă (gol ($_REQUEST["data1" ])) (
    echo „Câmpul este gol”;
    ) altfel (
    echo "Câmpul a fost completat" ;
    $a = $_CERERE[„date1” ];
    }

    De obicei, această soluție este suficientă. Dacă trebuie să introduceți text, va fi clar dacă a fost introdus sau nu. Cu toate acestea, dacă utilizatorul introduce în mod intenționat zero în scopuri de calcul, funcția goală va arăta că nu există nicio valoare. Prin urmare, pentru astfel de situații este mai bine să folosiți funcția isset. Se va verifica în mod explicit dacă valoarea este dată sau nu.

    dacă (isset ($_REQUEST["data1" ])) (
    echo "Câmpul a fost completat" ;
    $a = $_CERERE[„date1” ];
    ) altfel (
    echo „Câmpul este gol”;
    }