Documente Academic
Documente Profesional
Documente Cultură
Tehnologii Web
Curs 12
curs 12
1. Trimiterea datelor la o adresa de e-mail 2. Formular pentru nregistrarea utilizatorilor
3
Tehnologii WEB
Este util sa avem pe o pagina din site un formular prin care vizitatorii sa poata trimite mesaje la o adresa de e-mail. Am putea lasa pe pagina doar adresa de e-mail la care vizitatorii sa ne poata contacta, dar aceasta metoda (comoda pt. webmaster) nu este indicata.
Motive: In primul rand din cauza programelor bot care circula pe net si colecteaza adresele de e-mail de pe site-uri pentru ca mai tarziu sa trimita mail-uri spam. In al doilea rand este mai simplu si mai rapid pentru vizitator sa trimita mesajul direct de pe site.
4
Tehnologii WEB
In cadrul acestui curs este explicat modul de utilizare a limbajului PHP pentru a expedia la o adresa de e-mail datele preluate de la un formular HTML. Pentru a putea trimite datele la adresa de mail, scripturile PHP trebuie sa fie capabile de a obtine accesul la serviciile SMTP (Simple Mail Transfer Protocol).
Daca folositi serviciile oferite de un "web hosting", majoritatea au implementate aceste functii. Daca folositi propriul sistem pentru gazduirea site-ului, sau pentru teste, este nevoie sa aveti instalat si un server SMTP, acesta preia datele prelucrate de modulul PHP si le trimite la adresa de e-mail.
5
Tehnologii WEB
Acesta
este protocolul standard folosit pentru transferul mesajelor de e-mail, prin intermediul Internet-ului.
6
Tehnologii WEB
Mesajele de e-mail sunt alcatuite din doua parti: 1. o serie de antete de mesaj 2. si un corp
Antetele
de mesaj indica adresa destinatarului si subiectul mail-ului, precum si alte informatii. Corpul contine mesajul in sine.
7
Tehnologii WEB
Pentru a trimite datele la o adresa de e-mail, se foloseste functia mail(), care preia 3 argumente principale, avand urmatoarea forma: mail($to, $subject, $message)
Unde, in ordinea argumentelor: - primul argument, aici variabila "$to", va contine adresa de e-mail a destinatarului (unde va fi trimis mesajul) - al doilea argument, aici variabila "$subject", va contine subiect-ul mail-ului - al treilea argument, aici variabila "$message" va contine mesajul.
8
Tehnologii WEB
Functia "mail()" poate contine si alte adrese de email optionale, astfel un al patrulea argument poate fi "From", care indica adresa de e-mail a expeditorului (cel care trimite mesajul). Functia ar avea astfel urmatoarea forma: mail( $to, $subject, $message, $from ) Daca argumentul "$from" nu este specificat, serverul va transmite automat aceasta adresa (in functie de cum este configurat). Astfel, cand primim mail-ul, pe langa subiect vom avea adresa expeditorului, si daca nu este specificata, putem vedea ceva de genul nobody@localhost.ro.
9
Tehnologii WEB
Datele
pentru aceste argumente, in special al treilea (aici "$message"), pot fi preluate dintrun formular HTML, folosind functia "$_POST".
"mail()" returneaza TRUE daca mail-ul a fost acceptat pentru expediere, in caz contrar returneaza FALSE.
Functia
10
Tehnologii WEB
Exemplu un script PHP simplu care va trimite mesaje la o adresa de e-mail: <?php $to = 'adresa_ta@de.mail'; $subiect = 'Mesaj de pe site'; $mesaj = $_POST['mesaj']; $from = $_POST['email']; if (mail($to, $subiect, $mesaj, $from)) { echo 'Mesajul a fost trimis cu succes.'; } else echo 'Eroare, mesajul nu a putut fi expediat.'; ?>
11
Tehnologii WEB
Variabilele "$mesaj" si "$from" preiau datele adaugate de vizitator in campurile unui formular HTML care au numele "mesaj" si "email". Daca functia mail() este executata cu succes va apare mesajul:
"Mesajul a fost trimis cu succes.", in caz contrar va afisa "Eroare, mesajul nu a putut fi expediat.".
12
Tehnologii WEB
Un model de cod HTML pentru crearea formularului care trimite datele la scriptul php de mai sus este urmatorul: <h3>Trimiteti mesaj</h3> <form name="form" method="post" action="nume_script.php"> <label>E-mail : </label> <input type="text" name="email" size="20" maxsize="40" /> <br /> <label>Scrie mesajul : </label> <br /> <textarea name="mesaj" cols="35" rows="6"></textarea> <br /> <input type="submit" value="Trimite" /> </form> 13 "nume_script.php" este calea si numele fisierului in care
Tehnologii WEB
In browser va apare:
Trimiteti mesaj E-mail : Scrie mesajul :
Trimite
14
Tehnologii WEB
curs 12
1. Trimiterea datelor la o adresa de e-mail 2. Formular pentru nregistrarea utilizatorilor
15
Tehnologii WEB
Formularul
urmator este destinat nregistrrii utilizatorilor, dar ar fi putut sa serveasc la introducerea oricror date, bineneles, cu modificrile aferente. Script-ul permite crearea unei pagini PHP n care:
se poate aduga un utilizator nou, n tabela ExempluUtilizatori din baza de date se poate modifica o nregistrare sau se poate terge
16
Tehnologii WEB
// CONECTARE LA BAZA DE DATE $link = mysql_connect ("server_name", "user_name", "password") or die ("Eroare! Conectarea la server esuata!"); mysql_select_db ("db_name") or die ("Eroare! Conectarea la baza de date esuata");
18
Tehnologii WEB
// INITIALIZARE VARIABILE // 1. Variabila $for se va incarca din elementul INPUT de tip HYDDEN, hdnFor, din HTML si ea va folosi pentru ca in zona de cod PHP sa se identifice motivul pentru care pagina se genereaza. // Astfel, daca din scriptul JavaScript cu care se face submit se da lui hdnFor valoarea EDIT, se intr n seciune EDIT (prin iful de mai jos). // 2. Variabila $id se va incarca din elementul INPUT de tip HYDDEN, hdnID, din HTML si ea va folosi in zona de cod PHP pentru a stoca id-ul unic al nregistrrii curente. // 3. Celelalte variabile folosesc la stocarea datelor care trebuie salvate n tabela ExempluUtilizatori. // Acestea se ncarc din elementele de tip INPUT din formularul (FORM) din HTML, vizibile n interfa.
19
Tehnologii WEB
$for = $HTTP_POST_VARS['hdnFor']; $id = $HTTP_POST_VARS['hdnID']; $login = $HTTP_POST_VARS['txtLogin']; $pass = $HTTP_POST_VARS['txtPassword']; $email = $HTTP_POST_VARS['txtEmail'];
20
Tehnologii WEB
// EDIT // n aceast seciune se ncarc din baza de date valorile aferente variabilelor Login, Password i Email din PHP. // Apoi, aceste variabile vor fi ncrcate n INPUTurile din HTML, folosind, de exemplu: // <INPUT TYPE=text ID="txtEmail" MAXLENGTH="50" VALUE="<? print($email) ?">
21
Tehnologii WEB
if ($for == "EDIT") { $query = "SELECT Login, Password, Email FROM ExempluUtilizatori WHERE ID = ".$id; $result = mysql_query ($query) or die ("Eroare! Selectarea inregistrarii esuata!"); if ($row = mysql_fetch_array ($result)) { $login = $row[0]; $pass = $row[1]; $email = $row[2]; } }
22
Tehnologii WEB
// SAVE // Aceast seciune acoper cazurile INSERT i UPDATE, adic adugarea unei noi nregistrri // (cnd $id == "") sau salvarea modificrii uneia existente (cnd $id != "")
23
Tehnologii WEB
if ($for == "SAVE") { if ($id == "") { $query = "INSERT INTO ExempluUtilizatori (Login, Password, Email) VALUES ('".$login."', '".$pass."', '".$email."')"; mysql_query ($query) or die ("Eroare! Insert esuat!"); $id = mysql_insert_id ($link); } else { $query = "UPDATE ExempluUtilizatori SET Login = '".$login."', Password = '".$pass."', Email = '".$email."' WHERE ID = ".$id; mysql_query ($query) or die ("Eroare! Update esuat!"); } }
24
Tehnologii WEB
// DELETE if ($for == "DELETE") { $query = "DELETE FROM ExempluUtilizatori WHERE ID = ".$id; $result = mysql_query ($query) or die ("Eroare! Stergere esuata"); } ?>
25
Tehnologii WEB
if(document.frmForm.txtPassword.value == "") { alert("Eroare! Completati parola!"); return; } if(document.frmForm.txtEmail.value == "") { alert("Eroare! Completati adresa de email!"); return; }
27
Tehnologii WEB
28
/*2. dac toate cmpurile sunt competate, se d lui hdnFor valoarea SAVE pentru ca la incarcarea paginii, in PHP acesta s indice intrarea pe fluxul aferent*/ document.frmForm.hdnFor.value = "SAVE"; /*3. se trimite pagina cu valorile completate la server*/ document.frmForm.submit(); } function Clear() { /* servete la golirea cmpurilor din interfa pentru a permite introducerea unei noi nregistrri*/ document.frmForm.hdnFor.value = ""; document.frmForm.hdnID.value = ""; document.frmForm.txtLogin.value = ""; document.frmForm.txtPassword.value = ""; document.frmForm.txtEmail.value = ""; document.frmForm.submit(); }
Tehnologii WEB
function Edit(i) {
/* atunci cnd utilizatorul alege s editeze o nregistrare se execut aceast funcie care trimite pagina la server n vederea ncrcrii valorilor din vaza de date (fluxul EDIT de mai sus) */
29
Tehnologii WEB
function Delete(i) { if(!confirm("Confirmati stergerea...")) { return; } document.frmForm.hdnFor.value = "DELETE"; document.frmForm.txtLogin.value = ""; document.frmForm.txtPassword.value = ""; document.frmForm.txtEmail.value = ""; document.frmForm.submit(); } </script> </HEAD>
30
Tehnologii WEB
<BODY>
<!-- urmeaz form-ul de introducere de date: -->
31
<FORM ID="frmForm" NAME="frmForm" METHOD="post"> <table border=0 bgcolor=#c0c0c0 width=30%> <tr> <td WIDTH=30%>Login Name: </td> <td><INPUT TYPE=text ID="txtLogin" NAME="txtLogin" MAXLENGTH="12" VALUE="<?php print($login) ?>"></td> </tr>
Tehnologii WEB
<tr> <td>Password: </td> <td><INPUT TYPE=text ID="txtPassword" NAME="txtPassword" MAXLENGTH="20" VALUE="<?php print($pass) ?>"> </td> </tr> <tr> <td>Email: <td><INPUT TYPE=text ID="txtEmail" NAME="txtEmail" MAXLENGTH="50" VALUE="<?php print($email) ?>"> </td> </tr>
32
Tehnologii WEB
<tr> <td colspan=2 align=right> <INPUT TYPE=button ID="btnSave" ONCLICK="Save()" VALUE="Save"> <INPUT TYPE=button ID="btnClear" ONCLICK="Clear()" VALUE="Clear"> <INPUT TYPE=button ID="btnDelete" ONCLICK="Delete()" VALUE="Delete"> </td> </tr> </table>
33
Tehnologii WEB
<INPUT TYPE=hidden ID="hdnID" NAME="hdnID" VALUE="<?php print($id) ?>"> <INPUT TYPE=hidden ID="hdnFor" NAME="hdnFor"> </FORM> <hr>
34
Tehnologii WEB
<?php // AFISAREA INREGISTRARILOR EXISTENTE $query = "SELECT ID, Login, Password, Email FROM ExempluUtilizatori ORDER BY Login"; $result = mysql_query ($query) or die ("Query failed");
35
Tehnologii WEB
print "<table width=30% bgcolor=#abcabc cellspacing=1 border=0>\n"; print "<tr bgcolor=#abcabc>"; print "<td>#</td>"; print "<td>Login</td>"; print "<td>Password</td>"; print "<td>E-mail</td>"; print "</tr>";
36
Tehnologii WEB
while ($row = mysql_fetch_array ($result)) { if ($row[0] == $id) $bgcolor = "#abcdef"; else $bgcolor = "#ffffff"; print "<tr bgcolor=$bgcolor>"; print "<td><a href='javascript:Edit(".$row[0].")'>***</a></td>"; print "<td>".$row[1]."</td>"; print "<td>".$row[2]."</td>"; print "<td>".$row[3]."</td>"; print "</tr>"; }
37
Tehnologii WEB
38
Tehnologii WEB
ntrebri?
39