- PONDI
- web presence provider
- MaXtel telekomunikacije
- Mikrotik Shop
- Mikrotik RouterOS
- ePoslovanje eRačuni
- HOSTING
- windows Web hosting
- linux Web hosting
- besplatni Web hosting
- sponzorirani hosting
- pravila
- faq
- narudžba
- cjenik
- DOMENE
- registracija domena
- transfer domena
- servis domena
- faq
- cjenik
- promjena korisnika
- SERVERI
- dedicated serveri
- vps
- AFFILIATE
- prijava
- registracija
- zaboravljena lozinka
- pravilnik
- faq
- RESELLER PAKETI
- detalji/narudžba
- WEB DESIGN
- detalji/narudžba
- KONTAKT
- pošalji poruku
|
» 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:
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
|