Astăzi o să vă arăt cum să faceți o formă de contact cu PHP! Tutorialul o sa conțină 2 părți, prima parte unde vă arăt cea mai ușoară forma de contact pe care o puteți face, dar si una mai sigură care vă va liniști noaptea!
Parameter | Description |
---|---|
destinatar | Necesar. Trebuie să specificăm unde vom trimite emailul. |
subiect | Necesar. Trebuie să specificam scopul mesajului. |
mesaj | Necesar. Mesajul în sine. |
cap | Opțional. Putem specifica aici de la cine este mesajul. |
parametrii | Optional. Aici specificam un parametru aditional. |
Primul mail cu PHP
Este posibil să nu funcționeze, mai ales pe localhost căci trebuie configurat un mail server
Cel mai simplu mod de a trimite un email cu PHP este printr-un email text. În exemplul de mai jos vom declara variabilele($catre, $subiect, $mesaj, $autor, $cap) apoi vom utiliza funcția mail() pentru a trimite e-mailul.
<?php $catre = "cineva@example.com"; $subiect = "Un test e-mail!"; $mesaj = "Buna!Acesta este un e-mail simplu!"; $autor = "altcinevasaueu@example.com"; $cap = "Autor: $autor";mail($catre,$subiect,$mesaj,$cap); //functia mail va trimite informatia! echo "E-mail trimis!.";//Acest mesaj este aratat dupa ce trimiti e-mailul! ?>
Numai 9 linii de cod și o formă de contact simpla este gata!
<html> <body> <?php if (isset($_REQUEST['email']))//if "email" is filled out, send email {//send email $email = $_REQUEST['email'] ; $subiect = $_REQUEST['subiect'] ; $mesaj = $_REQUEST['mesaj'] ; mail( "cineva@example.com", "Subject: $subiect",$mesaj, "From: $email" ); echo "Multumim ca ne utilizezi forma!"; } else //daca "e-mailul" nu este in forma arata forma {echo " <form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subiect: <input name='subiect' type='text' /><br /> Mesaj:<br /><textarea name='mesaj' rows='15' cols='40'></textarea><br /> <input type='submit' /></form>"; } ?> </body> </html>
Acum să vă explic:
- funcția $_REQUEST este folosită în cazul în care avem date ce utilizează și funcția $_GET, dar și $_POST în același timp!
- if else este o instrucțiune condițională. Ea verifică dacă userul a introdus deja detaliile trimițând mail-ul, iar dacă nu îi afișează încă o dată forma HTML.
Totuși aceasta este o formă de contact nesigură și un spammer ar putea introduce de exemplu 100 de e-mailuri in casuța pentru e-mail, iar aceasta va trimite la fiecare în parte mesajul!Așa că în urmatoarea parte o să vedem cum putem crea o formă de contact mai sigură. Aceasta aș considera-o viabilă pentru un website fiindcă am elimina una din amenințări.
Email sigur cu PHP
<html> <body> <?php function spamcheck($field){ //filter_var() sterilizeaza e-mailul;adresa ce utilizeaza FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() valideaza e-mailul;adresa ce utilizeaza FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; }} if (isset($_REQUEST['email'])){//daca campul pentru e-mail este scris continua //verifica daca adresa de email este invalida $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Camp invalid"; } else {//trimite emailul $email = $_REQUEST['email'] ; $subiect = $_REQUEST['subiect'] ; $mesaj = $_REQUEST['mesaj'] ; mail("someone@example.com", "Subiect: $subiect", $mesaj, "De la: $email" ); echo "Multumim ca ne contactezi!"; } } else{//daca e-mailul nu este nu este completat arata forma echo " <form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subiect: <input name='subiect' type='text' /><br /> Mesaj:<br /><textarea name='mesaj' rows='15' cols='40'></textarea> <br /> <input type='submit' /></form>"; } ?> </body> </html>
Pentru mărirea siguranței folosim filtre PHP.
- filtrulFILTER_SANITIZE_EMAIL elimina orice caractere ilegale dintr-un string ce contine un email
- filtrul FILTER_VALIDATE_EMAIL valideaza valoarea pentru a verifica daca adresa este un e-mail
Cam asta este tot…personal forma de contactare sigura nu este grea…doar cateva taguri mai noi!Si in proportie de 80% se repeta de la cea anterioara!Nu este nevoie de baze de date, SQL sau nimic asemanator!Doar cateva functii si gata!