PHP – Slanje e-mail poruka sa web-a (I deo)

Nakon osnovnog upoznavanja sa PHP jezikom i njegovom sintaksom, konačno prelazimo na neke ozbiljnije stvari. U ovom i nekoliko narednih priloga obradićemo temu „slanje e-mail poruka uz pomoć PHP-a“, koja uopšte nije „težak zalogaj“. Prolaskom kroz ovu temu, prodiskutovaćemo i još nekoliko pitanja, kao što su: prikaz „rezultujuće“ stranice, validacija ulaznih podataka itd. Radeći na ovom „e-mail“ skriptu, javiće vam se više ideja kako da ga upotrebite i čime možete da ga dopunite. Za početak, evo i same sintakse PHP „mail“ instrukcije:


mail ([primalac], [tema], [telo_poruke], [zaglavlja]);

Kao što vidite, nema ničega što bi trebalo da vas uplaši. Ako ste već napredniji PHP „skripter“, u ovom trenutku ćete već znati šta dalje raditi. Ali, ako ste totalni početnik, onda je je ovo pravo mesto za vas. Evo i koje tačke ćemo obraditi kroz ovu temu:
  • Provera, da li se poziv e-mail forme i izvršenje, vrši sa vašeg sajta, a ne sa neke druge lokacije.
  • Dinamičko kreiranje tela e-mail poruke.
  • Osnovna provera grešaka i provera popunjenosti svih polja (validacija).
  • Kreiranje „rezultujuće“ stranice i „rezultujuće“ stranice u slučaju greške.
  • Kreiranje mail forme.
Pa, da krenemo odmah.

Krećemo sa prvom tačkom, a to je detekcija „pošiljaoca“. Ovo je vrlo važna tačka, jer ako ne implementirate ovu mogućnost, neki zlonamerni PHP „skripteri“ mogu lako da iskoriste vašu web mail formu za slanje velikog broja spam poruka. Nećemo vam prikazati, i kako se to radi, ali verujte – lakše je nego što mislite. Dosta teoretisanja, imamo „puno posla“, pa zato prelazimo na konkretne stvari. Prvo, na prethodnu liniju PHP koda „nakalemićemo“ jedno uslovno „if…then“ grananje, tako da možemo zaustaviti slanje e-mail-a u slučaju da nešto nije u redu:


if (!$greska) {
mail ([primalac], [tema], [telo_poruke], [zaglavlja]);
}

Izleda već komplikovanije, zar ne? Potom, ćemo preći na deo koji je vazan za odašiljaoca poruke, gde prvo kreiramo promenljivu – niz:


$odasiljaoci = array (‘krstarica.com’,’www.krstarica.com’);

Gornjom linijom kreiramo niz u kome se nalaze nazivi domena sa kojih će biti dozvoljeno izvršavanje e-mail skripta. Nije bitno kojim redom navedete elemente niza, a umesto naziva domena možete koristiti i IP adrese datih domena. Sledi PHP kod koji proverava da li se odašiljalac nalazi u našem nizu dozvoljenih odašiljaoca ($odasiljaoci):


$privremeni = explode("/",getenv("HTTP_REFERER"));
$brojac = 0;
while($brojac < count($odasiljaoci)){
if (ereg($odasiljaoci[$brojac], $privremeni[2])) {
$ispravno = "true";
}
$brojac++;
}
if ($ispravno != "true") { $autorizacija .= "neautorizovan "; }

Da vidimo šta se tu dešava:
  • Potencijalni pošiljalac se ubacuje u niz „$privremeni[ ]“.
  • Petljom proveravamo pošiljaoca, tako što upoređujemo domen iz varijable „$privremeni[ ]“ sa predefinisanim vrednostima iz niza „$odasiljaoci[]“.
  • Ukoliko se neki od domena iz niza „$odasiljaoci[]“ poklopi sa prosleđenim domenom, prolazi se kroz ovu „kontrolnu tačku“ i varijabli „$ispravno“ dodeljuje se vrednost „true“.
  • Poslednja instrukcija u „if…then“ instrukcija jednostavno popunjava varijablu „$autorizacija“ sa stringom „neautorizovan“, u slučaju da neko koristi e-mail formu sa drugog servera.
Ovde ćemo se zaustaviti, te nastavljamo u sledećem PHP prilogu.

Pratite Krstaricu na www.krstarica.com