| 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 | |
|
|
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 introduseDaca 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 HTMLEste 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-uluiDaca 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 campuriIn 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 PHPDaca 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.
ConcluziiIn 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,
Copyright 2000 Christopher S L Heng. Toate drepturile rezervate |
| Informatii IT |
|
|
| © 2000 - 2008 Pro Finance | Politica de folosire a datelor culese in cadrul site-ului | |
| Inregistreaza nume de domenii platind cu PB$! Castiga PB$ participand la discutii! |