MOTOR!
(de cautare)
     
Acasa  |   Adauga site  |   Clasamente  |   Contact   
CSS     CGI     JavaScript     PHP     SSI
Resurse Imbunatatirea formularului pentru culegerea datelor
de Christopher S.L. Heng, thesitewizard.com
Informatii IT
Jocuri online
Forum de discutii
Programare Web
ABC - calculatoare
ABC - site Web
E-marketing
Horoscop
Noutati muzicale
Topul romanilor
Bara de navigare

Dinamovisti.info
Voteaza stirile tale!
Actionari, jucatori si suporteri!
Citeste, adauga, comenteaza!
Dinamovisti.info
Nume de domenii
com/net/org - 50 LEI/an
Web hosting 12,5 LEI/luna
conturi Reseller
www.domenii-web.com
Dinamovisti.info
Voteaza stirile tale!
Actionari, jucatori si suporteri!
Citeste, adauga, comenteaza!
Dinamovisti.info
Jocuri.BZ
jocuri online gratuite
arcade, carti, auto
shoot-em up, sport
Jocuri.BZ
 

In prima parte a lectiei de programare in PHP, am discutat despre bazele scrierii script-urilor PHP si v-am aratat cum se poate crea un simplu, dar folositor programel care transmite prin e-mail continutul unui formular de preluare a datelor.

Daca ai ratat articolul, il poti gasi aici:

http://www.thesitewizard.com/archive/feedbackphp.shtml

Acest articol imbunatateste precedentul script si in acelasi timp va introduce in cateva alte facilitati oferite de catre PHP.

1. Verificarea datelor introduse

Daca ai mai folosit vreodata un formular pe site-ul tau, probabil ca ai primit tot felul de date incomplete. De exemplu, vizitatorul a uitat complet sa-si treaca adresa de e-mail sau, in cazul unor vizitatori extrem de grabiti, acestia au apasat butonul "Submit" chiar inainte de a isi scrie comentariile!

Pentru a face programul nostru mai robust, este folositor sa executi o verificare pentru a te asigura ca toate campurile importante din formular au fost completate, inainte de a transmite datele catre destinatar. Cea mai simpla cale este de a modifica script-ul precedent in felul urmator:

<?
if (!isset($email) || !isset($message)) {
  header( "Location: http://www.yourdomain.com/feedback.html" );
}
elseif (empty($email) || empty($message)) {
  header( "Location: http://www.yourdomain.com/error.html" );
}
else {
  mail( "yourname@yourdomain.com", "Feedback Form Results",
        $message, "From: $email" );
  header( "Location: http://www.yourdomain.com/thankyou.html" );
}
?>
Daca iti reamintesti, formularul folosit in acest articol era destul de simplu:

<form method=post action="sendmail.php3">
Email: <input type=text name="email"><br>
Message:<br>
<textarea name="message">
</textarea><br>
<input type=submit>
</form>
Observa faptul ca am adaugat cateva verificari in script-ul nostru.

Prima linie verifica daca variabilele "$email" si "$message" au fost definite, folosind functia "isset()". In primul articol, am mentionat ca aceste varibile vor fi definite numai daca script-ul a fost apelat de catre formular, PHP convertind automat toate campurile acestuia in variabilele cu acelasi nume.

Aceasta verificare este utila pentru cazul in care un vizitator va incerca sa vizualizeze pagina "http://www.yourdomain.com/sendmail.php3" doar pentru a vedea ce se intampla. Fara aceasta verificare, vei primi un e-mail gol in cutia ta postala. Daca acest program imbunatatit va descoperi ca variabilele "$email" si "$message" nu sunt definite, va redirecta vizitatorul catre formular.

Linia

	elseif (empty($email) || empty($message))
verifica daca formularul a fost trimis fara ca vizitatorul sa fi completat campurile "email" si "message". Functia "empty()" verifica variabila transmisa ca parametru pentru a vedea daca ea are vreo valoare. Daca nu este gasit nimic in aceste doua variabile, vizitatorul este redirectionat catre o pagina destinata erorilor.

In final, daca totul este bine, datele din formular se transmit folosind codul din articolul precedent.

Observa ca script-ul introduce trei noi cuvinte cheie: "if", "elseif" si "else". Ca si in multe alte limbaje de programare, aceste structuri de control permit ca anumite portiuni din codul tau sa fie executate numai in cazul in care o anumita conditie este evaluata drept "adevarata". Conditia care va fi verificata se va transmite intre paranteze rotunde, "(" si ")". De exemplu, daca vrei ca programul tau sa tipareasca "Salut!" daca variabila "$email" este vida, poti folosi urmatorul fragment de cod:

if (empty($email))
   echo "Salut!" ; 
Spre deosebire de Perl, daca fragmentul de cod ce trebuie executat contine o singura declaratie, nu este nevoie sa introduci codul respectiv (sectiunea "echo") in paranteze "{" si "}". (In codul de mai sus, am folosit aceste paranteze pentru a nu iti produce confuzie in acest stadiu al pregatirii tale.)

2. Generarea codului HTML

Este posibil ca in loc de a redirectiona browser-ul vizitatorului spre un fisier HTML separat, sa folosesti PHP pentru a crea codul necesar.

De exemplu, daca preferi sa-ti generezi mesajul de eroare direct din fisierul "sendmail.php3", poti modifica programul ca in liniile urmatoare:

<?
if (!isset($email) || !isset($message)) {
  header( "Location: http://www.yourdomain.com/feedback.html" );
}
elseif (empty($email) || empty($message)) {
  ?>
<HTML>
  <HEAD><TITLE>Eroare</TITLE></HEAD>
  <BODY>
  <h1>Eroare</h1>
  <p>
  Se pare ca ai uitat sa introduci fie adresa ta de e-mail,
  fie chiar mesajul. Te rog, apasa butonul BACK al browser-ului
  si completeaza inca o data formularul.
  </p>
  </BODY>
  </HTML>
<?
}
else {
  mail( "yourname@yourdomain.com", "Feedback Form Results",
        $message, "From: $email" );
  header( "Location: http://www.yourdomain.com/thankyou.html" );
}
?>
Precum vezi din exemplu, este extrem de usor sa folosesti PHP pentru a genera cod HTML. Pur si simplu inchide codul PHP cu "?>" si PHP va trimite serverului web tot textul care urmeaza nemodificat pana va intalni un alt marcaj "<?".

3. Prevenirea incarcarii paginii din memoria browser-ului

Daca vei genera codul HTML cu ajutorul PHP, probabil ca vei marca codul generat ca o zona pe care browserul nu trebuie sa o reincarce din memoria sa (cache). Altfel, urmatoarea data cand vizitatorul va apela "sendmail.php3" in mod direct, ar putea vedea pagina de eroare in loc sa fie redirectionat catre formular.

Pentru a prevenii aceasta memorare, modifica codul in felul urmator:

  [...cod precedent...]

 elseif (empty($email) || empty($message)) {

header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );

  ?>

  <HTML>
  <HEAD><TITLE>Eroare</TITLE></HEAD>
  <BODY>
  <h1>Eroare</h1>
  <p>
  Se pare ca ai uitat sa introduci fie adresa ta de e-mail,
  fie chiar mesajul. Te rog, apasa butonul BACK al browser-ului
  si completeaza inca o data formularul.
  </p>
  </BODY>
  </HTML>

  <?

[...etc...]
Programul trimite browser-ului mai multe antete HTTP, incercand sa-l forteze pe acesta sa nu memoreze respectiva pagina. Deoarece nu exista un antet care sa functioneze cu orice browser, programul incearca sa acopere cat mai multe posibilitati, transmitand mai multe antete.

Adu-ti aminte ca toate antetele HTTP trebuie trimise browser-ului inainte de a fi generat orice fel de cod HTML. De asemenea, daca programul tau trebuie sa genereze antete HTTP (folosind functia "header()"), asigura-te ca vei incepe script-ul cu ghilimele (").

4. Adaugarea altor campuri

In forma in care se afla (fie sub forma a mai multor fisiere HTML, ca de exemplu feedback.html, thankyou.html, error.html, fie sub forma unui singur fisier care contine intregul cod), programul poate deja fii folosit in cadrul site-ului tau.

Daca doresti, poti dezvolta atat programul, cat si formularul de culegere a datelor, urmand urmatoarele cai:

i. Adauga in e-mailul pe care il primesti si numele vizitatorului. Altfel, cand ii vei raspunde, nu te vei putea adresa vizitatorului tau folosindu-i numele. Desigur va trebui sa modifici script-ul astfel incat sa incluzi si acest camp. De exemplu, daca respectivul camp va avea numele de "nume", poti modifica functia "mail()" in modul urmator:

mail("yourname@yourdomain.com", "Feedback Form 
     Results", $message, "From: $nume <$email>" );

ii. Include o intrebare de genul "De unde ai auzit de acest site?". Vei dori sa modifici codul ca in exemplul urmator (am presupus ca raspunsul la intrebare este dat in campul "de_unde"):

mail("yourname@yourdomain.com", 
	"Feedback Form Results", 
	"$message\n
	 Raspuns: $de_unde\n", 
	"From: $nume <$email>" );
Instructiunea "\n" va cauza trecerea la un rand nou in mesaj, astfel incat "Raspuns ..." se va afla pe o linie noua.

iii. Dezvolta formatarea formularului. Pune-l intr-un tabel, modifica marimea diferitelor campuri "input", cu alte cuvinte infrumuseteaza formularul. Acum arata destul de urat, desi este functional. Oricum, nu acesta este scopul articolului de fata.

5. Incorporeaza formularul in scriptul PHP

Daca te vei uita la formularul de culegere a datelor de pe site-ul meu (thesitewizard.com), probabil ca vei observa ca respectivul fisier serveste si drept formular, si drept script pentru trimiterea mesajului e-mail si drept mesaj de multumire. Si tu poti face acelasi lucru. Doar schimba primele linii in felul urmator:

<?
if (!isset($email) || !isset($message)) {
  ?>

  <HTML>
  <HEAD><TITLE>Feedback Form</TITLE></HEAD>
  <BODY>

  <h1>Feedback Form</h1>

  <p>
  <form method=post action="sendmail.php3">
  Email: <input type=text name="email"><br>
  Message:<br>
  <textarea name="message">
  </textarea><br>
  <input type=submit>
  </form>
  </p>

  </BODY>
  </HTML>

  <?
}

[...etc...]
Daca iti vei denumi script-ul "feedback.php3", va trebui sa schimbi si atributul "action" al etichetei "FORM" in modul urmator:

<FORM method=post action="feedback.php3">
Atunci formularul va parea ca isi va trimite datele lui insusi. Totusi, vizitatorii tai nu vor putea vedea codul PHP.

Concluzii

In clipa de fata, nu numai ca ai un formular pentru culegerea datelor functional si folositor, dar ai si cunostintele necesare pentru a extinde si a modifica programul astfel incat sa se potriveasca cerintelor site-ului tau. Precum vezi, programarea in PHP este de fapt usoara - limbajul este intuitiv si are incluse multe facilitati pentru programarea web.

Programare fericita!

Toate cele bune,
Christopher S.L. Heng
thesitewizard.com

Copyright 2000 Christopher S L Heng. Toate drepturile rezervate
Viziteaza http://www.thesitewizard.com/ pentru mai multe sfaturi gratuite si articole despre web design, promovare, profit si programare; sau aboneaza-te la publicatia noastra GRATUITA trimitand un email la subscribe@thesitewizard.com.

Informatii IT
Digg! StumbleUpon ANRCTI a aplicat inca opt amenzi pentru efectuarea de comunicari comerciale nesolicitate prin intermediul postei electronice si o amenda pentru nefurnizare de informatii In urma finalizarii unora dintre investigatiile demarate ca urmare a plangerilor privind transmiterea de comunicari comerciale nesolicitate prin intermediul postei electronice, Autoritatea Nationala pentru Reglementare in Comunicatii si Tehnologia Informatiei (ANRCTI) a constatat, in opt dintre cazuri, savarsirea contraventiei constand in transmiterea de comunicari comerciale nesolicitate, asa cum este definita de Legea nr. 365/2002 privind comertul electronic, republicata, si a aplicat sapte amenzi in cuantum de 1.000 lei fiecare si una in valoare de 2.000 lei.
Digg! StumbleUpon MaxCAD participa la Conferinta Nationala AICPS MaxCAD participa cu stand in cadrul Conferintei Nationale a Asociatiei Inginerilor Constructori Proiectanti de Structuri (AICPS) care se desfasoara astazi, 30 mai 2008, la Muzeul National de Arta. Tema celei de-a XVIII-a editii a conferintei este „Cladiri inalte amplasate in zone seismice”, evenimentul reunind peste 300 de participanti.
Digg! StumbleUpon Yahoo! m-a angajat sa fac pentru cinci milioane de oameni ceea ce faceam pentru cateva mii In video interviul acordat in exclusivitate pentru RadioLynx.ro, Bobby Voicu dezvaluie, in premiera, cateva dintre motivele pentru care Yahoo.com isi propune o mai mare apropiere de comunitatea internautilor romani.
© 2000 - 2008 Pro FinancePolitica de folosire a datelor culese in cadrul site-ului
Inregistreaza nume de domenii platind cu PB$! Castiga PB$ participand la discutii!
Membru al retelei Pro Finance
Avatars.bz   Cautare.net   CursValutar.org   Dinamovisti.info   Domenii-Web.com   Forex-Exchange.org   Forum domenii   Ghioc.RO   HotelMoscowRussia.com   Jocuri.bz   MasiniRulate.com   PHP5forum.com   ProBazar.com   Publicitate.biz   Rapidisti.info   Resurse.com   ROK.RO   Scoala-De-Soferi.com   Steaua.info   UsedPhonecard.com