Vom folosi formularul si scriptul din tutorialul Verificare Formular cu 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>
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.
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.
In urmatoarea imagine putem vedea cum se vede mesajul, incluzand headerele.
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.
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
Tweet
Daca ti-a fost folositor acest tutorial/articol, poti copia urmatorul cod pe pagina ta