Pondi Web Hosting
 
 

Print :: Pretraga
» Formmail primjeri - slanje podataka na e-mail iz kontakt forme
Prvo ćemo kreirati stranicu u kojoj ćete ubaciti formu s kojom će posjetitelji Vaše stranice moći poslati svoje podatke POST metodom na skriptu nazvanu contact.php.

U HTML-u će ta forma izgledati slično slijedećem:

Ime i Prezime:  
E-mail: 
Poruka:  
   


Za potrebe Vaših stranica možete promijeniti sami izgled forme, samo pripazite na nazive unutar ''input'' i "textarea" tag-a (npr. riječ mail u name=''mail''), kako bi sve funkcioniralo kako treba.

HTML kod forme izgleda ovako:

<form action="contact.php" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td align="right"><strong>Ime i Prezime: </strong></td>
<td><input name="name" type="text"></td>
<td width="90"> </td>
</tr>
<tr>
<td align="right"><strong>E-mail:</strong></td>
<td><input name="mail" type="text"></td>
<td> </td>
</tr>
<tr>
<td align="right" valign="top"><strong>Poruka: </strong></td>
<td><textarea name="text" cols="30" rows="5" wrap="VIRTUAL"></textarea></td>
<td> </td>
</tr>
<tr>
<td align="right" valign="top"> </td>
<td><input name="submit" type="submit" value="Pošalji"></td>
<td> </td>
</tr>
</table>
</form>

Prije samog kreiranja contact.php, koja nam je potrebna za obradu i slanje mailova, morate odabrati način na koji ćete slati mailove pomoću PHP-a, te je potrebno definirati podatke za konfiguraciju u contact.php. Za lakše poimanje podataka potrebnih u konfiguraciji moramo Vam objasniti jedan pojam koji će se često spominjati, a to je lokalna e-mail adresa.
Lokalna e-mail adresa predstavlja e-mail kreiran unutar Vaše domene, tj. domene na koju ćete postaviti contact.php, te koja se nalazi na našim serverima. Npr. uzmimo da se radi o domeni www.moja-domena.com, te bi na osnovu toga lokalna e-mail adresa bila info@moja-domena.com.

Skripta contact.php nakon što obradi primljene podatke će na osnovu toga slati posjetitelje na stranice koje Vi navedete u konfiguraciji. Na jednoj stranici može pisati da je e-mail uspješno poslan, a na drugoj može pisati da e-mail nije poslan, te da povratkom na prethodnu stranicu Vaši posjetitelji mogu probati ponovo poslati e-mail. Da bi e-mail bio poslan ovisi o tome da li su upisani svi podaci, da li upisana e-mail adresa odgovara određenim standardima, te da li su podaci upisani kako je to dozvoljeno u samoj skripti.


1. Slanje mailova na lokalnu e-mail adresu koristeći mail() funkciju:


Primjer s www.moja-domena.com. Plavom bojom su obojane varijable koje morate promijeniti. Kopirajte slijedeći kod i sačuvajte ga u skripti pod nazivom contact.php, ako želite koristiti ovaj primjer.


<?php
define("VAS_EMAIL", "info@moja_domena.com"); // lokalna e-mail adresa

define("NASLOV_MAILA", "Kontakt s moja-domena.com"); // naslov maila

define("SUCCESS_URL", "http://www.moja-domena.com/uspjesno_poslan_mail.htm"); // stranica za uspješno poslan mail

define("ERROR_URL", "http://www.moja-domena.com/greska_kod_slanja_maila.htm"); // stranica upozorenja

function check($str){
if(eregi('cc:|bcc:|Content-Type:|MIME-Version:|Content-Transfer-Encoding:|<|%0A|%3C',$str)){
return 1;
}
return 0;
}

function checkMail($email){
if(eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email)){
return 1;
}
return 0;
}

if($_SERVER['REQUEST_METHOD']!='POST' or !isset($_SERVER['HTTP_USER_AGENT'])){
header("Location: ".ERROR_URL);
exit;
}


if (!isset($_POST['name']) or (trim($_POST['name']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$name = stripslashes(trim($_POST['name']));

if (!isset($_POST['mail']) or (trim($_POST['mail']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$mail = trim($_POST['mail']);

if (!isset($_POST['text']) or (trim($_POST['text']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$text = wordwrap(str_replace(array("\r\n","\n")," ",$_POST['text']),60);

if(!checkMail($mail) or check($name) or check($text)){
header("Location: ".ERROR_URL);
exit;
}

$poslanmail = mail(VAS_EMAIL,
NASLOV_MAILA,
"Ime i prezime: $name\nE-mail: $mail\nIP: ".$_SERVER['REMOTE_ADDR']."\nPoruka:\n$text",
"From: ".VAS_EMAIL."\nReply-To: $name <$mail>\nContent-Type: text/plain; charset=windows-1250");

if($poslanmail){
header("Location: ".SUCCESS_URL);
exit;
}
else{
header("Location: ".ERROR_URL);
exit;
}

?>


2. Slanje mailova na e-mail adresu koja nije lokalna, koristeći podatke od lokalne e-mail adrese za SMTP autorizaciju:


Primjer s www.moja-domena.com. Plavom bojom su obojane varijable koje morate promijeniti. Kopirajte slijedeći kod i sačuvajte ga u skripti pod nazivom contact.php, ako želite koristiti ovaj primjer.


<?php

define("SMTP_SERVER", "mail.moja-domena.com"); // domena gdje se nalazi contact.php

define("MAIL_USERNAME", "info@moja-domena.com"); // lokalna e-mail adresa

define("MAIL_PASSWORD", "lozinka"); // lozinka za lokalnu e–mail adresu

define("VAS_EMAIL", "info@neka_druga_domena.com"); // e-mail adresa na koju će ići mailovi

define("NASLOV_MAILA", "Kontakt s moja-domena.com"); // naslov maila

define("SUCCESS_URL", "http://www.moja-domena.com/uspjesno_poslan_mail.htm"); // stranica za uspješno poslan mail

define("ERROR_URL", "http://www.moja-domena.com/greska_kod_slanja_maila.htm"); // stranica upozorenja



function mail_($tko, $kome, $subject, $sadrzaj){
$handle = fsockopen(SMTP_SERVER,25);
if(!$handle) return 0;
if(substr(fread($handle, 1024),0,3) != "220"){ fclose($handle); return 0; }

fputs($handle, "EHLO\r\n");
if(substr(fread($handle, 1024),0,3) != "250"){ fclose($handle); return 0; }

fputs($handle, "AUTH LOGIN\r\n");
if(substr(fread($handle, 1024),0,3) != "334"){ fclose($handle); return 0; }

fputs($handle, base64_encode(MAIL_USERNAME)."\r\n");
fread($handle, 1024);
fputs($handle, base64_encode(MAIL_PASSWORD)."\r\n");
if(substr(fread($handle, 1024),0,3) != "235"){ fclose($handle); return 0; }

fputs($handle, "MAIL FROM: ".MAIL_USERNAME."\r\n");
if(substr(fread($handle, 1024),0,3) != "250"){ fclose($handle); return 0; }

fputs($handle, "RCPT TO: $kome\r\n");
if(substr(fread($handle, 1024),0,3) != "250"){ fclose($handle); return 0; }

fputs($handle, "DATA\r\n");
if(substr(fread($handle, 1024),0,3) != "354"){ fclose($handle); return 0; }

fputs($handle, "Reply-To: $tko\nFrom: ".MAIL_USERNAME."\nTo: <$kome>\nSubject: $subject\nContent-Type: text/plain; charset=windows-1250\n\n$sadrzaj\r\n.\r\n");
if(substr(fread($handle, 1024),0,3) != "250"){ fclose($handle); return 0; }

fputs($handle, "QUIT\r\n");
if(substr(fread($handle, 1024),0,3) != "221"){ fputs($handle, "QUIT\r\n"); }

if($handle) {
fclose ($handle);
}

return 1;
}

function check($str){
if(eregi('cc:|bcc:|Content-Type:|MIME-Version:|Content-Transfer-Encoding:|<|%0A|%3C',$str)){
return 1;
}
return 0;
}

function checkMail($email){
if(eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email)){
return 1;
}
return 0;
}

if($_SERVER['REQUEST_METHOD']!='POST' or !isset($_SERVER['HTTP_USER_AGENT'])){
header("Location: ".ERROR_URL);
exit;
}


if (!isset($_POST['name']) or (trim($_POST['name']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$name = stripslashes(trim($_POST['name']));

if (!isset($_POST['mail']) or (trim($_POST['mail']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$mail = trim($_POST['mail']);

if (!isset($_POST['text']) or (trim($_POST['text']) == '')){
header("Location: ".ERROR_URL);
exit;
}
$text = wordwrap(str_replace(array("\r\n","\n")," ",$_POST['text']),60);


if(!checkMail($mail) or check($name) or check($text)){
header("Location: ".ERROR_URL);
exit;
}

$poslanmail = mail_($mail,VAS_EMAIL,NASLOV_MAILA,"Ime i prezime: $name\nE-mail: $mail\nIP: ".$_SERVER['REMOTE_ADDR']."\nPoruka:\n$text");


if($poslanmail){
header("Location: ".SUCCESS_URL);
exit;
}
else{
header("Location: ".ERROR_URL);
exit;
}
?>

Navedeni su među jednostavnijim primjerima s kojima je moguće slati mailove pomoću PHP-a, a za kompleksnija rješenja možete koristiti gotove primjere na slijedećim stranicama:


FAQ Manager » Linux i PHP » Formmail primjeri - slanje podataka na e-mail iz kontakt forme

Broj naredbi izvršenih za 0.002 s= 3
GZIP Kompresija: Enabled
© Stephen Ball of Aquonics Scripting
 
 
Copyright © 1998-2019 PONDI Web Hosting. Sva prava zaštićena.
Opći uvjeti poslovanja | Zaštita osobnih podataka