Oglasi

Izrada jednostavne kontakt forme

Vjerojatno prva korisna stvar koju ćete raditi u PHP-u je izrada kontakt forme. Za ovu priliku ćemo koristiti dvije vanjske PHP klase (PHPMailer i PHP Validation). Korištenje ovih klasa daje predodžbu o tome kako kod treba izgledati da se može ponovno i ponovno koristiti (reusability). Tako da na cijelom projektu imate samo jednu klasu koja je zadužena za slanje e-mailova i samo jednu preko koje radite svu validaciju korisničkih podataka.

jednostavna_kontakt_forma

PHPMailer je jedna od popularnijih skripti za slanje e-mailova, te sam ju odlučio uklopiti u ovaj jednostavan primjer (iako nije potrebna tako kompleksna) jer daje mogućnost jednostavnog proširenja cijele skripte (na slanje privitaka, slanje preko GMail računa i sl.). Dokumentacija i link za download se nalaze na službenim stranicama: Codeworx Tehnologies.

PHP Validation je mala klasa koja pruža jednostavno i brzo validiranje unešenih podataka preko forme. Možete ju preuzeti ovdje i pročitati dodatnu dokumentaciju kako bi ju mogli koristiti i u vlastitim projektima.

Pošto je ova forma manje-više identična svim ostalim, fokusirat ćemo se na najvažnije dijelove. Pa prvo, krenimo sa validacijom unjetih podataka:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
require_once("includes/class.validation.php");
 
	//postavljanje pravila validacije na prazno polje
	$rules = array();
 
	//pravila se postavljaju tako da prvo navedete pravilo, zatim ID polja forme, i na kraju poruku o pogrešci
	//ako je potrebno vise pravila navedite ih zasebno, jedan iza drugog
	$rules[] = "required,name,Ime mora biti uneseno.";
	$rules[] = "length>2,name,Ime mora imati više od 2 znaka.";
	$rules[] = "required,surname,Prezime mora biti uneseno.";
	$rules[] = "length>2,surname,Prezime mora imati više od 2 znaka.";
	$rules[] = "required,email,E-mail adresa mora biti unesena.";
	$rules[] = "valid_email,email,E-mail adresa nije ispravna.";
	$rules[] = "length>10,message,Poruka mora sadržavati više od 10 znakova.";
 
	//provjera da li su sva polja ispravna
	$errors = validateFields($_POST, $rules);

Varijabla $rules je obični array u kojeg nizamo pravila koja će se primjeniti na unešene podatke. Pravila se postavljaju, kao što vidite tako da napišete ime pravila, pa id polja u formi na koje se odnosi te na kraju poruka koja će biti upotrijebljena u slučaju da validacija ne prođe. Tako da ako dođe do pogreške, te poruke će biti spremljene u array $errors te ih možemo prikazati korisniku. Nizanje više pravila za isto polje radite tako da jednostavno dodate još jedan red u array sa novim pravilom i novom (ili istom porukom).

Drugi važan dio koda je samo slanje e-maila:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
	//ako je forma uredu, jos malo doradi primljene vrijednosti (brisanje praznih znakova te html tagova)
	$message = strip_tags(trim($_POST['message']));
	$name = strip_tags(trim($_POST['name']));
	$surname = strip_tags(trim($_POST['surname']));
	$city = strip_tags(trim($_POST['surname']));
 
	//vasa e-mail adresa na koju ce stizati mailovi
	$address = "email@moja-domena.com";
 
	//ukljuci klasu za slanje mailova
	require_once 'includes/class.phpmailer.php';
	$mail = new PHPMailer(); // klasa defaultno koristi "mail()" funkciju
 
	//email from
	$mail->SetFrom($_POST['email'], $name . ' ' . $surname);
	//email to
	$mail->AddAddress($address);
	//naslov
	$mail->Subject = 'Poruka od moje forme';
	//html sadrzaj
	$mail->MsgHTML($message);
	//sadrzaj kao cisti tekst za one preglednike koji ne podrzavaju html formatiranje
	//kako je kod nas vec cisti tekst, mozemo slobodno koristiti originalnu poruku
	$mail->AltBody = $message;
 
	//salji
	if(!$mail->Send()) {
		//pogreska
		$message = 'Došlo je do pogreške kod sljanja email poruke. Molimo pokušajte ponovno ili pošalite email na
		<a href="mailto:'.$address.'">'.$address.'</a>';
	} else {
		//sve je proslo ok
		$message = 'Vaša poruka je uspiješno poslana! Zahvaljujemo na javljanju....';
	}

Na početnu radimo još jednu sigurnosu “provjeru”, a to je brisanje svih praznih znakova (space) i svih html tagova iz unjetih polja. Nakon toga, uključujemo phpmailer klasu, te joj predajemo potrebne informacije. Ukoliko je sve prošlo ok, javimo korisniku to isto (tomu služi varijabla $message). Ukoliko je došlo do pogreške kod slanja, prikažemo korisniku poruku da je nešto pošlo po zlu i damo mu e-mail adresu na koju nas može kontaktirati direktno.
Napomena: PHP mail() funkcija neće raditi lokalno na vašem serveru, nego skriptu trebate uploadati na pravi server.

Vaš komentar

XHTML: Možete koristiti slijedeće tagove: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Morate biti prijavljeni kako bi mogli komentirati.