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