Kreiranje jednostavne kontakt forme (PHP, HTML)

Postavljanje forme preko koje se uspostavlja kontakt sa korisnicima (kontakt forme, feedback forme) je danas gotovo imperativ za bilo koji veb-sajt. Kontakt forma je jako korisna alatka koja omogućava posetiocima na stranici da Vas momentalno kontaktiraju šaljući Vam pitanja, komentare, itd., bez potrebe da Vam šalju poruku na imejl. Stoga je postala dobra praksa da imate kontakt formu na svojoj stranici, uz kontakt (poštansku) adresu, broj telefona i imejl adresu, a što bi takođe trebalo da se nađe na Vašem sajtu.

Da kreirate PHP skriptu za slanje poruka sa Vašeg sajta, možete koristiti ugrađenu mail() funkciju. Ova funkcija može sadržati nekoliko elemenata unutar zagrada (koji se zovu argumenti), od kojih su neki obavezni.

Konkretno, sledeći elementi moraju postojati unutar zagrada ili u vidu stringa, ili kao imena varijabli, kojima su ovi elementi dodeljeni kao vrednost:

  1. imejl adresa na koju će poruka biti poslata (primalac - Vaša imejl adresa),
  2. naslov (tema) poruke,
  3. sâm tekst tj. sadržaj poruke,
  4. dodatno zaglavlje sa imejl adresom pošiljaoca, tj. adresom na koju možete poslati odgovor.

Prilikom unosa elemenata unutar zagrada, mora se ispoštovati njihov tačan redosled, onako kako je to navedeno u tekstu iznad. Pojedinačni elementi odvojeni su jedan od drugog zarezima. Tako će sintaksa funkcije izgledati ovako:

mail(Vaša imejl adresa, naslov poruke, sâma poruka, imejl adresa pošiljaoca)

Kako biste sâmu poruku prosledili kao argument, unutar zagrada mail() funkcije, a nakon što se poruka unese od strane korisnika, ona mora biti dodeljena kao vrednost varijabli kao što je npr. $message. U tom slučaju, poruka će se pojaviti unutar zagrada u formi $message varijable postavljene na treću poziciju, nakon imejl adrese na koju se poruka šalje i naslova poruke. Imejl adresa na koju će poruka biti poslata (Vaša imejl adresa) može se direktno proslediti kao string, npr. [email protected]

Sadržina prvog i drugog argumenta mail() funkcije - Vaša imejl adresa i naslov poruke - upisuju se u zaglavlje imejla. Ovo je deo svakog imejla koji se nalazi iznad sâme poruke. Imejl adresa na koju je poruka poslata (Vaša imejl adresa na koju ćete primiti poruku iz forme) nalazi se u redu zaglavlja obično označenim sa "To:" ili "Kome:", dok se naslov (tema) poruke uobičajeno nalazi u redu zaglavlja označenim sa "Subject:" ili "Naslov:".

Posle zaglavlja imejla sledi njegov glavni deo - sadržaj sâme poruke, koji je prosleđen kao treći argument mail() funkciji. Nakon sadržaja poruke, unutar zagrada mail() funkcije mogu biti navedena dodatna zaglavlja (polja, redovi), označena u imejlovima sa "From:" ili "Od:", "Cc:" ili "Kopija:" i "Bcc" ili "Skrivena kopija". Dodatno "From:" tj. "Od:" zaglavlje, koje sadrži informaciju o imejl adresi pošiljaoca, je obavezno.

Informacije sadržane u 4 argumenta mogu se proslediti mail() funkciji kao niz karaktera (string), ili kao imena varijabli koje za vrednost uzimaju odgovarajuće stringove. Na primer, drugom argumentu (naslovu poruke) se za vrednost naslova može dodeliti string (sastavljen od jedne ili više reči), koji će biti isti za sve poslate poruke, na primer "Poruka iz kontakt forme", ili "Komentar korisnika", itd. Ukoliko bi u formi postojalo posebno polje za naslov poruke, onda bismo svaki put imali drugačiji naslov koji korisnik unese. U ovom slučaju, taj naslov iz forme bismo izvukli i smestili u niz $_POST, a zatim ga dodelili varijabli, npr. $subject, kako bi ga u tom obliku varijable ($subject) prosledili kao argument mail() funkciji.

Najpre, napravimo formu koristeći poznate HTML tagove. Najjednostavnija kontakt forma mora sadržati barem 2 polja: jedno gde će korisnik (posetilac na stranici) uneti svoju imejl adresu na koju Vi možete odgovoriti, i jedno višeredno polje za sâm tekst tj. sadržaj poruke. Forma može izgledati nešto poput ove:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Kontakt forma</title>
</head>
<body>
<form action="contactscript.php" method="POST">
Imejl:<br/>
<input type="text" name="email"/><br/>
Komentar:<br/>
<textarea name="komentar" cols="30" rows="5"></textarea><br/>
<input type="submit" value="Pošalji komentar"/>
</form>
</body>
</html>

U formi imamo dva polja koja smo nazvali "Imejl" i "Komentar", respektivno. Imena polja mogu biti i bilo koja druga, Vi ih birate. Vrednost atributa action sugeriše šta se dalje dešava nakon što se podaci iz forme pošalju (klikom na dugme "Pošalji komentar"). U našem primeru, pokreće se skripta contactscript.php koja dalje postupa sa podacima.

Sačuvajte gornji kôd kao .html ili .php fajl, recimo forma1.html.

U veb-pregledaču (browser), forma će izgledati ovako:

kontakt forma 1

Sada treba da kreiramo contactscript.php skriptu, koja će na Vašu imejl adresu poslati imejl poruku sa podacima prikupljenim iz forme.

Skripta može izgledati kao ova:

<?php
$email = $_POST["email"];
$message = $_POST["komentar"];
mail("[email protected]", "Poruka iz kontakt forme", $message, "From: $email");
?>
Vaša poruka je uspešno poslata!

Različite vrednosti niza mogu se pozivati (tj. koristiti) navođenjem indeksa (ključa), koji odgovara tim vrednostima, u uglastim zagradama []. U gornjem kôdu, iz niza $_POST izvlačimo sadržaj "Imejl" polja i sadržaj višerednog polja "Komentar". Ovo postižemo upisivanjem indeksa (tj. ključa) za ove vrednosti u uglastim zagradama nakon naziva niza $_POST. Ključevi koji odgovaraju vrednostima ovih polja (a što je praktično sadržaj koji korisnik unosi u njih) zapravo su imena tih polja iz forme specificirana kao vrednost atributa name. Tj. unutar uglastih zagrada upisujemo imena polja forme, u ovom slučaju "email" i "komentar".

Zatim definišemo dve vrednosti iz $_POST niza kao vrednosti $email i $message varijabli, respektivno. Na ovaj način, ove dve varijable sadržaće korisničku imejl adresu, odnosno njegovu poruku (komentar). Imena $email i $message varijabli su nasumice izabrana; mogu biti kakva god izaberete.

Naposletku, mail() funkciji prosleđujemo argumente:

  1. imejl adresu na koju se poruka iz forme šalje, u našem primeru [email protected] (zamenite je svojom imejl adresom),
  2. naslov poruke, u našem primeru "Poruka iz kontakt forme",
  3. sâm tekst tj. sadržaj poruke, koji zapravo predstavlja vrednost varijable $message,
  4. korisnička imejl adresa, koja zapravo predstavlja vrednost varijable $email - pojaviće se u zaglavlju imejla, a navedena je kao argument mail() funkcije "From: $email".

Na kraju skripte, postavili smo rečenicu "Vaša poruka je uspešno poslata!", koja će se prikazivati korisnicima nakon uspešnog slanja podataka iz forme.

Kao što se može videti iz gorenavedene skripte, zaglavlje mejla je unapred definisano string vrednošću drugog argumenta mail() funkcije i uvek će biti isto - "Poruka iz kontakt forme". Formu možemo dodatno usložniti dodavanjem još jednog polja formi, posebno za naslov poruke, gde će korisnici samostalno moći da upišu naslov (temu) poruke koji žele. To će sada izgledati ovako:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Kontakt forma</title>
</head>
<body>
<h2>Kontakt forma</h2>
<form action="contactscript2.php" method="POST">
<table>
<tr>
<td>Naslov (tema):</td>
<td><input type="text" name="naslov" size="35"/></td>
</tr>
<tr>
<td>Vaša imejl adresa:</td>
<td><input type="text" name="email" size="35"/></td>
</tr>
<tr>
<td>Vaša poruka:</td>
<td><textarea name="poruka" cols="35" rows="6"></textarea><br/>
<input type="submit" value="Pošalji"/></td>
</tr>
</table>
</form>
</body>
</html>

U veb-pregledaču (browser), forma će izgledati ovako:

kontakt forma 2

Skripta contactscript2.php može izgledati kao ova:

<?php
$email_posiljaoca = $_POST["email"];
$naslov_poruke = $_POST["naslov"];
$poruka = $_POST["poruka"];
$posiljalac = "From: $email_posiljaoca";
mail("[email protected]", $naslov_poruke, $poruka, $posiljalac);
?>
<html>
<head>
<title>Poruka je uspešno poslata</title>
</head>
<body>
<h4>Zahvaljujemo! Vaša poruka je uspešno poslata.</h4>
<a href="https://kompanija.com">Kliknite ovde</a> da se vratite na početnu stranicu.
</body>
</html>

Razlika između prve i druge skripte je u tome što smo sadržaj koji korisnik unese u polje forme "Naslov (tema)" postavili za vrednost varijable $naslov_poruke, a sadržaj dodatnog reda zaglavlja koji označava povratnu imejl adresu (tj. imejl adresu korisnika koji je popunjavao formu i na koju bismo odgovorili) smo postavili za vrednost varijable $posiljalac.

Na kraju skripte, imamo HTML kôd koji prikazuje poruku "Zahvaljujemo! Vaša poruka je uspešno poslata." i sadrži link za povratak na početnu stranicu veb-sajta.

Da bi obe skripte radile, zamenite imejl adresu iz primera ([email protected]) sopstvenom imejl adresom.

Imajte u vidu da će skripta raditi samo ukoliko posetioci na stranici ispravno popune polja forme. Međutim, ako posetilac zaboravi da ostavi svoju imejl adresu, na primer, primićete poruku, ali nećete znati na koju adresu da odgovorite. Zato su, generalno govoreći, ovakve skripte složenije jer proveravaju da li je neko polje forme ostalo prazno, kao i da li su u polju predviđenom za unos imejl adrese korisnika prisutni karakteri @ i . (koji su inače sadržani u svakoj imejl adresi), tj. proverava se da li je format imejl adrese ispravan. Takve skripte se mogu pronaći i preuzeti sa raznih sajtova za besplatne PHP skripte.

Takođe treba imati na umu da će skripte ovog tipa raditi na Vašem lokalnom računaru samo ukoliko na istom imate instaliran mejl server. Iz tog razloga, da bi bili u mogućnosti da šaljete poruke pokretanjem takvih skripti, one moraju biti otpremljene u hosting nalog na serveru gde postoji mejl server i PHP podrška.

Obnovljen: 24. јула 2019.

Da li Vam je ovaj članak bio koristan?