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.
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
Morate biti prijavljeni kako bi mogli komentirati.





