Ce este formularul de contact?
De regula, paginile web detin pe langa sectiunile cu un continut specific si o pagina de contact cu datele de contact ale firmei si un formular de contact pentru a livra rapid mesaje. Un astfel de formular se poate crea relativ usor folosind functia mail() din PHP.
Pentru inceput, vom scrie codul HTML ce va afisa formularul respectiv:
<table width="400" border="0" cellpadding="2" cellspacing="2">
<tr>
<th width="70"> </td>
<th>Formular de contact simplu<hr/></td>
</tr>
<form name="formular" method="post" action="<?php echo $PHP_SELF; ?>">
<tr>
<td class="label">Nume:</td>
<td><input type="text" name="nume" value="<?php echo $_POST['nume']; ?>"> <?php echo $verifica1; ?></td>
</tr>
<tr>
<td class="label">Email:</td>
<td><input type="text" name="email" value="<?php echo $_POST['email']; ?>"> <?php echo $verifica2; ?></td>
</tr>
<tr>
<td class="label">Subiect:</td>
<td><input type="text" name="subiect" value="<?php echo $_POST['subiect']; ?>"> <?php echo $verifica3; ?></td>
</tr>
<tr>
<td class="label">Mesaj:</td>
<td><textarea rows="4" cols="30" name="mesaj"><?php echo $_POST['mesaj']; ?></textarea><?php echo $verifica4; ?></td>
</tr>
<tr>
<td class="label"></td>
<td><input type="submit" name="trimite" value="Trimite" class="buton"></td>
</tr>
</form>
</table>
Copiaza codul HTML si salveaza-l intr-un fisier contact.php. Ceea ce trebuie sa retii este ca acest cod creeaza trei casute de tip input in care utilizatorul va introduce numele, adresa de email si subiectul mesajului si o casuta de tip textarea in care utilizatorul va scrie continutul mesajului. Linia <input type="submit" name="trimite" value="Trimite" class="buton"> defineste un buton care, la apasare, va trimite formularul cu toate datele completate catre fisierul specificat prin atributul action al tag-ului <form> (in acest caz fisierul curent dat de variabila globala $PHP_SELF).
Pentru a nu obliga utilizatorul sa completeze din nou campurile in cazul unei erori, vom folosi functia echo in interiorul atributului value al input-urilor si in interiorul campului textarea. De exemplu, atributul value din campul nume va fi completat astfel:
value="<? echo $_POST['nume'];
Aceste valori sunt necesare deoarece validarea datelor este facuta in php, dupa transmiterea formularului; ele pot lipsi daca verificarea se face inainte de submit, cu javascript.
Validarea datelor
In continuare vom prelua datele transmise de formularul html si le vom verifica. In acelasi fisier (contact.php), scrie codul de mai jos:
<?php
// Daca este activat butonul de submit
if (isset($_POST['trimite'])) {
// Citim din formular numele utilizatorului
$nume = $_POST['nume'];
// Citim din formular subiectul mesajului trimis
$subiect = $_POST['subiect'];
// Citim din formular mesajul
$mesaj = $_POST['mesaj'];
// Citim din formular adresa de email a vizitatorului
$email = $_POST['email'];
// Definim o variabila in care retinem adresa de email a administratorului
$to ='admin@domeniu.com';
}
?>
Pentru inceput, am verificat daca butonul de submit a fost apasat, apoi am preluat din formular informatiile cu privire la utilizator (nume / email / subiect) si mesajul acestuia. In final, am creat o variabila cu adresa de email a administratorului ce va primi toate mesajele (aceasta va fi inlocuita de fiecare cu adresa corecta).
Tot in cadrul instructiunii conditionale ce verifica apasarea butonului (if (isset($_POST['trimite']))) facem si validarea datelor. Fiecarui camp din formularul de contact ii este atribuita o variabila. Inainte de a trimite mesajul verificam daca fiecare din aceste variabile este completata, apoi ,in dreptul fiecarui camp din formular, afisam o imagine de succes sau eroare, in functie de caz. Imaginile sunt stocate in variabilele $verifica1, $verifica2, $verifica3 si $verifica4, afisate cu ajutorul functiei echo, astfel: <? echo $verifica1; ?>.
<?php
if($_POST['nume'] != ""){
$verifica1 = "<img src='images/ok.png' width='20px'>";
} else{
$verifica1 = "<img src='eroare.png' width='20px'>";
}
if($_POST['email'] != ""){
$verifica2 = "<img src='images/ok.png' width='20px'>";
}
else{
$verifica2 = "<img src='eroare.png' width='20px'>";
}
if($_POST['subiect'] != ""){
$verifica3 = "<img src='images/ok.png' width='20px'>";
}
else{
$verifica3 = "<img src='eroare.png' width='20px'>";
}
if($_POST['mesaj'] != ""){
$verifica4 = "<img src='images/ok.png' width='20px'>";
}
else{
$verifica4 = "<img src='eroare.png' width='20px'>";
}
?>
Trimiterea mesajului
Daca toate campurile sunt completate, trimitem mesajul catre adresa de email a administratorului.
<?php
if($_POST['nume'] != "" && $_POST['email'] != "" && $_POST['subiect'] != "" && $_POST['mesaj'] != ""){
$header = "From: $nume <$email>";
$send = mail($to,$subiect,$mesaj,$header);
if ($send){
echo "<div class='notificare'>$verifica4 Mesajul tau a fost trimis. </div>";
} else {
echo "Mesajul nu a putut fi trimis din cauza unei erori.";
}
}
?>
Sirul de caractere from: $nume <$email> ne ajuta sa specificam numele si adresa de email a expeditorului. Functia mail() accepta mai multe tipuri de headere, cum ar fi adresa CC, adresa de reply, formatul mesajului (html sau text), etc. Iata un exemplu:
<?php
// Pentru a trimite un mesaj in format HTML, trebuie sa specificam Content-type
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Headere aditionale
$header .= 'To: Nume destinatar 1 <destinatar1@exemplu.com>, Nume destinatar 2 <destinatar2@exemplu.com>' . "\r\n";
$header .= 'From: Nume expeditor <expeditor@exemplu.com>' . "\r\n";
$header .= 'Cc: adresa_cc@exemplu.com' . "\r\n";
$header .= 'Bcc: adresa_bcc@exemplu.com' . "\r\n";
?>
Retine ca functia mail() intoarce valoarea 1 in caz de succes si 0 daca a survenit o eroare la transmiterea mesajului.
Pentru a descarca sursele, inclusiv fisierul .css, acceseaza linkul Download din partea de sus a paginii.
sursa aici (http://www.e-learn.ro/tutorial/php/formular-de-contact-in-php/127/1/502.htm)