home > tutoriale > php > trimiterea-datelor-colectate-la-adresa-de-email.php

Trimiterea datelor colectate la adresa de e-mail cu PHP

Serie Tut : 3/3

5 Octombrie 2010 de Mihail Alin

Vom folosi formularul si scriptul din tutorialul Verificare Formular cu PHP

tutorial php : autor
Autor :   Mihail Alin

Modificam scriptul PHP

Dupa cum am spus , vom folosi scriptul si formularul din tutorialul anterior.
O sa copiez scriptul PHP ( punctul 3 "PhP-ul" din tutorial ):

	   
<?php
//Script distribuit de www.rotuts.com
//verificam e-mailul folosind o expresie regulara .
function is_valid_email($string)
{
	return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $string);
}
//daca submid_id este egal cu 1 atunci incepem verificarea
if($_POST['submit_id'] == 1)
{
	//verificam numele, daca este NULL ( campul este gol ) atunci ...
	if($_POST['nume'] == NULL)
	{
		//stocam in variabila $message mesajul .
		$message ="Trebuie sa va scrieti numele";
	}
	//verificam daca s-a introdus e-mail-ul, daca variabila $message este goala ( deci nu s-au gasit erori la verificarea numelui ) si functia de validare pentru e-mail este falsa , atunci ... 
	if($message == NULL && is_valid_email($_POST['email']) == false)
		{
			$message = "Introduceti o adresa de e-mail valida";
		}
	//verificam mesajul
	if($message == NULL && $_POST['mesaj'] == NULL )
	{
		$message = "Trebuie sa scrieti un mesaj";
	}
}
//daca variabila $message nu este goala , atunci aratam eroarea prin intermediul unui DIV , se poate folosi CSS pentru o mai buna prezentare a acestui DIV.
if($message != NULL ){
?>

	 <div><?=$message;?>&/div>
     <br/>
<?php } ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" name="form" onsubmit="return ValidareForm(this);" method="post">
        <label>Name <br />
       		 <input type="text" name="nume" value="<?php $_POST['nume'];?>" />
        </label><br />
        <label>E-mail <br />
        	<input type="text" name="email" value="<?php $_POST['email'];?>" />
       </label><br />
        <label>Mesaj <br />
        	<textarea name="mesaj" cols="100"><?php $_POST['mesaj'];?></textarea>
        </label><br /><br />
        	<input type="submit" name="submit" value="Go"/>
		<input name="submit_id" type="hidden" id="submit_id" value="1">
        </form>
	   
	   

Modificam :

<?php
/* ################################################### 
##                   OPTIUNI                        ##
##          http://www.rotuts.com/                 ##
####################################################*/
//DESTINATAR
$destinatar = 'adresaMeaDeEmail@yahoo.com';
//subiect
$subject = 'Formular de contact www.pagina.com';
// optiuni e-mail
//titlul ( arata de la cine ai primit mesajul )
$OPTIUNI['TITLE'] = $_POST['email'];
//de unde vine acest e-mail
$OPTIUNI['FROM'] = $_POST['email'];
//charset
$OPTIUNI['CHARSET'] = 'utf-8';
//tipul mesajului HTML=text/html sau Text = text/plain
$OPTIUNI['TYPE'] = 'text/html';

//facem un template, asa o sa primim mesajul ( practic il formatam sa arate un pic mai bine :P ) si il salvam in variabila $TEMPLATE
$TEMPLATE = '<span>Mesaj primit de la <b>$+nume+$</b> adresa lui/ei de e-mail este <b>$+email+$</b></span><br/><br/><span>Mesajul acestuia este :<br/><br/> <b>$+mesaj+$</b> .</span>';


//verificam numele , email,motiv,mesaj

function is_valid_email($string)
{
	return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $string);
}


if($_POST['submit_id'] == 1)
{
	//verificam numele
	if($_POST['nume'] == NULL)
	{
		$message ="Trebuie sa va scrieti numele";
	}
	//verificam daca s-a introdus e-mail-ul
	if($message == NULL && is_valid_email($_POST['email']) == false)
		{
			$message = "Introduceti o adresa de e-mail valida";
		}
	//verificam mesajul
	if($message == NULL && $_POST['mesaj'] == NULL )
	{
		$message = "Trebuie sa scrieti un mesaj";
	}
}
// incepem procesarea
if ($message == NULL && $_POST['submit_id'] == 1)
{
	/*inlocuim "$+nume+$", "$+email+$" si "$+mesaj+$" din variabila $TEMPLATE cu valorile introduse de user in formular
	folosind functia str_replace */
	
	$cauta = array ('$+nume+$','$+email+$','$+mesaj+$');
	$inlocuieste = array ($_POST['nume'],$_POST['email'],$_POST['mesaj']);
	$subiect = str_replace($cauta,$inlocuieste,$TEMPLATE);
	
	//email headers
	$headers = "Return-Path: ".$OPTIUNI['TITLE']." <".$OPTIUNI['FROM'].">\r\n"; 
	$headers .= "From: ".$OPTIUNI['TITLE']." <".$OPTIUNI['FROM'].">\r\n";
	$headers .= "Content-Type: ".$OPTIUNI['TYPE']."; charset=".$OPTIUNI['CHARSET'].";\n\n\r\n";

	//trimitem e-mail
	mail($destinatar,$subject,$subiect,$headers);
	$message = "Acest e-mail a fost trimis";
	$_POST == NULL ;
}
//daca variabila $message nu este goala , atunci aratam eroarea prin intermediul unui DIV , putem folosi CSS pentru prezentare
if($message != NULL ){
?>

	 <div><?=$message;?></div>
     <br/>
<?php } ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" name="form" onsubmit="return ValidareForm(this);" method="post">
        <label>Name <br />
       		 <input type="text" name="nume" value="<?php $_POST['nume'];?>" />
        </label><br />
        <label>E-mail <br />
        	<input type="text" name="email" value="<?php $_POST['email'];?>" />
       </label><br />
        <label>Mesaj <br />
        	<textarea name="mesaj" cols="100"><?php $_POST['mesaj'];?></textarea>
        </label><br /><br />
        	<input type="submit" name="submit" value="Go"/>
		<input name="submit_id" type="hidden" id="submit_id" value="1">
        </form>
	   
	   

Cum functioneaza ?

In variabila $destinatar vom trece adresa de e-mail unde se va trimite mesajul.Iar in variabila $subject vom scrie subiectul mesajului.
Optiunile $OPTIUNI['TITLE'] si $OPTIUNI['FROM'] vor stoca e-mailul trecut in capul formularului de catre vizitator si vor fi trecute ca headere pentru e-mail.

Un header indentifica informatii despre mesaj cum ar fi: data, expeditorul, destinatarul, etc..Unele sunt obligatorii altele optionale

Dupa cum puteti vedea in imaginea de mai jos, cand am trimis un mesaj pentru testare, in formular am trecut in campul "E-mail" adresa test@yahoo.com si aceasta a fost inclusa in variabilele $OPTIUNI['TITLE'] si $OPTIUNI['FROM'] .
Ceea ce vedem in imagine este de fapt variabila $OPTIUNI['TITLE'] si $subject.
Daca in variabila $OPTIUNI['TITLE'] am schimba $_POST['email'] cu $_POST['nume'] atunci in campul FROM din e-mail am avea valoarea trecuta in campul "NUME" din formular,adica numele expeditorului.

tutoriale php- Cum sa trimiti un e-mail cu php

In urmatoarea imagine putem vedea cum se vede mesajul, incluzand headerele.

tutoriale php

Dupa cum am spus mai sus, daca in variabila $OPTIUNI['TITLE'] am fi schimbat $_POST['email'] cu $_POST['nume'] atunci in headerul "FROm" din e-mail am fi avut "Mihail Alin <test@yahoo.com>" .
In urmatoarea imagine putem vedea cum se trec valorile in campul "To:" si "Subject" dupa ce am apasat butonul Reply.

tutoriale php

Mai multe informatii despre functiile folosite in acest tutorial puteti gasi pe php.net, cum ar fi : str_replace, mail si preg_match
Gata :P, acesta a fost ultimul tutorial din aceasta serie, astept comenturile voastre.O zi bune !!!



Da si tu un like
  


Daca ti-a fost folositor acest tutorial/articol, poti copia urmatorul cod pe pagina ta

Tutoriale din Categoria PHP

  Trimiterea datelor din formular la adresa de e-mail   -   Cum sa detectezi ip utilizator   -   Validarea unui formular   -

Tutoriale aleatorii

  Un simplu meniu in CSS si HTML   -   Trimiterea datelor din formular la adresa de e-mail   -   Cum sa detectezi ip utilizator   -   Cum sa centrezi o fereastra/popup   -   Cum sa faci un ceas cu JavaScript   -   Ferestre in Javascript/popups   -   Efecte de mergini in PhotoShop   -
Spune-le prietenilor tai despre acest tutorial/articol
Nume:
Email:
Email-ul prietenului tau:
Mesajul:

Comenturi

7 comenturi pana acum... (posteaza si tu)

frumoasa serie de tutoriale , merci , apropo ActionScript poate trimite datele dintr-un formular flash sau trebuie sa il conectezi cu ceva php ?

Postat de Radu pe data de: Wednesday, 05.11.11 @ 19:16pm

in sfarsit un tutorial bine explicat , acum inteleg si eu cum sa treaba trimiterea datelor, bun tutorial in php

Postat de Silviu pe data de: Sunday, 03.27.11 @ 07:13am

Multumesc Alin, acest tutorial mi-a fost foarte folositor, imi place php-ul dar inca nu il inteleg prea bine

Postat de Gabi pe data de: Saturday, 03.19.11 @ 15:13pm

Multumesc mult pentru acest tutorial.Este foarte bine explicat

Postat de Simona pe data de: Monday, 02.14.11 @ 07:29am

multumesc !!! foarte bine explicat.

Postat de Badea Ovidiu pe data de: Thursday, 12.30.10 @ 09:29am

foarte bine explicat , dar in special imaginile mi-au fost foarte folositoare pentru a putea intelege

Postat de Adrian pe data de: Friday, 11.5.10 @ 17:54pm

Salut, fratele meu mi-a spus de pagina asta, inca o pagina foarte buna de tutoriale in lb. romana , bravo

Postat de Petru Vlad pe data de: Friday, 10.22.10 @ 17:40pm

Comentarii:

Nume:

Email:

Comentariu:


 

*Intrebare de verificare : Raspunde la intrebarea din imaginea de mai jos ...

 
HINT : Raspunsul este din 6 litere, incepe cu r si se termina cu s


 


Important:
E-mailul nu va fi vizibil si NU va fi folosit de catre rotuts.com .
Nu sunt permise linkuri catre alte pagini.
Va rugam , comentariile sa ramana strict relationate cu topicul.
Comentariile considerate ofensive sau care nu au nici o legatura cu topicul vor fi sterse(trolling).

Folosirea codului HTML nu este permisa.
Puteti folosi BBcode pentru a va formata textul.