Sunteți pe pagina 1din 39

Universitatea Constantin Brncui din Trgu-Jiu Facultatea de Inginerie Departamentul de Automatic, Energie i Mediu

Tehnologii Web

Lector univ. dr. Adrian Runceanu

Curs 12

MySQL (partea III)

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

1.1. Expedierea mesajelor de e-mail


Configuratia

PHP standard accepta expedierea mesajelor de e-mail prin intermediul SMTP.

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

<?php /* Pentru crearea tabelei ExempluUtilizatori, in mySQL se executa scriptul urmtor:


CREATE TABLE ExempluUtilizatori ( ID INT PRIMARY KEY AUTO_INCREMENT, Login VARCHAR (12) NOT NULL, Password VARCHAR (20) NOT NULL, Email VARCHAR (50) ); */
17
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

<HTML> <HEAD> <script language=javascript> function Save() {


/*funcia este apelat atunci cand se apas butonul Save*/ /*1. primul pas este validarea completarii campurilor obligatorii*/ /*- n caz de necompletare, execuia este sistat cu return*/

if(document.frmForm.txtLogin.value == ""){ alert("Eroare! Completati campul Login!"); return; }


26
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) */

document.frmForm.hdnFor.value = "EDIT"; document.frmForm.hdnID.value = i; document.frmForm.submit(); }

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

print "</table>"; mysql_free_result ($result); mysql_close ($link); ?> </BODY> </HTML>

38
Tehnologii WEB

ntrebri?

39