Simdi de bir ornek
yaparak konunun anlatimina devam edelim.
Text editorunuzu acarak asagidaki asamalari uygulayiniz.Burada
sayilar asamalari,yanindaki aciklamalarda o asamanin ne amacla
yapildigini gostermek amaciyla kullanilmistir.Gercek kodlamada
bu sayilari ve aciklamalari kullanmaniza gerek yoktur.
1.Programimizi yazmaya klasik olarak HTML ust kismini hazirlayarak
baslayalim.Bunun icin bir fonksiyon yaziyorum.Basitce her
sayfa icin <HTML> ve <HEAD> ve </HEAD> taglarini
icerecek.Fonksiyonuma eposta_ustkisim adini verdim.Bir modulun
parcalari gibi her kisimi ayri ayri yazip sonra bana gerekli
oldukca fonksiyonlari cagirarak gerekli icerigi elde etmis
olacam...
<?php
//postaci.php
function eposta_ustkisim ()
{
?>
<HTML>
<HEAD><TITLE>Net uzerinden eposta gonderme programi</TITLE></HEAD>
<BODY>
<?php
}
2.Simdi de alt kismini hazirlayalim.Basitce kapatma taglarini
bu kisima koyuyorum.Her sayfa icin alt kisimi bu fonksiyonla
saglayacagiz.Fonksiyonuma eposta_altkisim adini verdim.Siz
de deneme yaparken kkendi isimlerinizi kullanabilirsiniz...
function eposta_altkisim ()
{
?>
</BODY>
</HTML>
<?php
}
3.Hata mesajlarini ele alacak kisa bir fonksiyon yaziyorum.Bu
fonksiyon ile kontrolumuz disina cikan prosesler icin hatalari
ele almis ve uygulamamiza profosyonel bir gorunum kazandirmis
olacagiz.Fonksiyonuma hata_mesaji adini verdim.
function hata_mesaji ($mesaj)
{
eposta_ustkisim ()
echo "<SCRIPT>alert(\"Hata: $mesaj\");history.go(-1)</SCRIPT>";
eposta_altkisim ();
exit;
}
4.Yukarida hazirladigim fonksiyonun bir benzerinide kullanicilara
istedigim bilgi mesajlarini vermek icin hazirliyorum.Bu fonksiyon
ile bazi islemlerin sonucunu kullaniciya gosterebilecegim.Fonksiyonuma
kullanici_mesaji adini verdim....
function kullanici_mesaji ($mesaj)
{
eposta_ustkisim ();
echo "<SCRIPT>alert(\"Bilgi: $mesaj\");history.go(-1)</SCRIPT>";
eposta_altkisim ();
exit;
}
5.epostanin gonderilecegi web arayuzunu hazirliyorum.Bunun
icin hazirladigim fonksiyona eposta_form ismini verdim...
function eposta_form ()
{
global $PHP_SELF;
/*
Fonksiyonun disindan bir degiskeni kullanacagim icin global
tanimlamasi yaptim.Bundan sonra basitce HTML olarak formu
hazirliyorum.Buraya kadar aklinizi karistiracak bir bolum
oldugunu zannetmiyorum.Isinizi kolaylastirmak icin herseyi
en basit sekilde gerceklestiriyorum.
*/
?>
<FORM METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA"
ACTION="<?php echo $PHP_SELF ?>">
<INPUT TYPE="hidden" NAME="islem" VALUE="eposta_gonder">
<DIV ALIGN="CENTER">
<TABLE CELLSPACING="2" CELLPADING="5" WIDTH="%90" BORDER="1">
<TR>
<TH ALIGN="CENTER" WIDTH="%30">Kime</TH>
<TD WIDTH="%70"><INPUT NAME="eposta_kime" SIZE="20"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Karbon Kopya(Cc)</TH>
<TD WIDTH="70%"><INPUT NAME="eposta_cc" SIZE="20"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Kor Kopya(Bcc)</TH>
<TD WIDTH="70%"><INPUT NAME="eposta_bcc" SIZE="20"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Kimden</TH>
<TD WIDTH="70%"><INPUT NAME="eposta_kimden" SIZE="20"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Yanitlanacak Adres</TH>
<TD WIDTH="70%"><INPUT NAME="eposta_reply_to" SIZE="20"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Konu</TH>
<TD WIDTH="70%"><INPUT NAME="eposta_konu" SIZE="40"></TD>
</TR>
<TR>
<TH ALIGN="CENTER" WIDTH="30%">Mesaj Govdesi</TH>
<TD WIDTH="70%"><TEXTAREA NAME="eposta_govde" ROWS="16"
COLS="70"></TEXTAREA></TD>
</TR>
<TR>
<TH WIDTH="100%" COLSPAN="2" ALIGN="CENTER">
<INPUT TYPE="SUBMIT" VALUE="Gonder" NAME="SUBMIT">
<INPUT TYPE="RESET" VALUE="Temizle" NAME="RESET">
</TH>
</TR>
</TABLE>
</DIV>
</FORM>
<?php
}
6.mail_gonder () isimli bir fonksiyon hazirlayip icinde kendi
mail fonksiyonumu yaratacam.Kendi mail fonksiyonumun ismi
benim_mailim() olacak.Bu hazirlayacagim fonksyion ile PHP
nin mail () fonksyionuna gerekli bilgileri gonderecem.Evet
baslayalim...
function eposta_gonder ()
{
/*
Once fonksiyon disinda tanimli olan bazi degiskenleri fonksiyon
icinde kullanabilmek amaciyla fonksiyonuma burada belirledigim
bazi degiskenlerin degerlerinin fonksiyonun disinda oldugunu
belirtiyorum.Bunun icin "global" komutunu kullanarak degiskenlerimi
yaziyorum.
*/
global $eposta_kime, $eposta_cc, $eposta_bcc, $eposta_kimden,
$eposta_reply_to;
global $eposta_govde, $eposta_konu;
$eposta_parcalari["eposta_kime"] = $eposta_kime;
$eposta_parcalari["eposta_kimden"] = $eposta_kimden;
$eposta_parcalari["eposta_reply_to"] = $eposta_reply_to;
$eposta_parcalari["eposta_cc"] = $eposta_cc;
$eposta_parcalari["eposta_bcc"] = $eposta_bcc;
$eposta_parcalari["eposta_konu"] = trim($eposta_konu);
$eposta_parcalari["eposta_govde"] = $eposta_govde;
if (benim_mailim($eposta_parcalari))
kullanici_mesaji('$eposta_konu' konulu emailiniz basarili
sekilde gonderildi.");
else
hata_mesaji("Bilinmeyen bir hata meydana geldi.");
}
7.Simdi de kendi email fonksiyonumuzu yazalim.Bu fonksiyon
ile aslinda mail () fonksiyonuna hazirladigimiz bilgileri
belirli bir kontrol cercevesinde gecirecek...
function benim_mailim ($eposta_parcalari)
{
$eposta_kime = $eposta_parcalari["eposta_kime"];
$eposta_kimden = $eposta_parcalari["eposta_kimden"];
$eposta_reply_to = $eposta_parcalari["eposta_reply_to"];
$eposta_cc = $eposta_parcalari["eposta_cc"];
$eposta_bcc = $eposta_parcalari["eposta_bcc"];
$eposta_konu = $eposta_parcalari["eposta_konu"];
$eposta_govde = $eposta_parcalari["eposta_govde"];
if (empty($eposta_kime) hata_mesaji("Kime bolumu bos birakilmis!");
if (empty($eposta_konu) hata_mesaji("Konu bolumu bos birakilmis!");
if (empty($eposta_govde) hata_mesaji("Mesaj bolumu bos birakilmis!");
$eposta_kime = str_replace(";", ",", $eposta_kime);
$eposta_basliklari = ' ';
if (!empty($eposta_kimden)) $eposta_basliklari .= "From: $eposta_kimden\n";
if (!empty($eposta_reply_to)) $eposta_basliklari .= "Reply-to:
$eposta_reply_to\n";
if (!empty($eposta_cc)) $eposta_basliklari .= "Cc: " . " .
str_replace(";", ",", $eposta_cc) . "\n";
if (!empty($eposta_bcc)) $eposta_basiklari .= "Bcc: ". str_replace(";",
",", $eposta_bcc) . "\n";
$eposta_konu = stripslashes($eposta_konu);
$eposta_govde = stripslashes ($eposta_govde);
return mail($eposta_kime, $eposta_konu, $eposta_govde, $eposta_basliklari);
}
8.En son olarak gizli HTML kontrolleri ile sagladigimiz ve
yapilacak islemlere gore fonksiyonlarin secilmesini sagladigimiz
bolumu yazalim.
switch ($islem)
{
case "eposta_gonder":
eposta_ustkisim ();
eposta_gonder ();
eposta_altkisim ();
break;
case "eposta_form":
eposta_ustkisim ();
eposta_form ();
eposta_altkisim ();
break;
default:
eposta_ustkisim ();
eposta_form ();
eposta_altkisim ();
break;
}
?>
9. Burada yazilan kodlari "postaci.php" olarak kayit edin.
10.Programinizi browser yardimiyla calistirin...
Ornek Dosyalar
http://www.turk-php.com/ornekler/postaci.php
http://www.turk-php.com/ornekler/postaci.phps
Program nasil calisiyor?
Programin ana omugasi zaten kendi kendini acikliyor.Biz anahtar
fonksiyonlar uzerinde duralim.Sonuc itibari ile basit bir
php programi ve ornek olmasi amaciyla yazildi...
Ilk olarak benim_mailim () fonksiyonunu inceleyelim.Bu fonksiyon
argument olarak bir diziyi almaktadir.Dizideki elemanlarin
indexini biz belirledik.
Bu dizinin elemanlari icin bir deger tasiyip tasimadiklarina
bakiliyor.Buna gore kullaniciya hata mesajlari ile bilgi veriliyor.
Hem konu hemde govdesi bos emailler gondermke icin programdan
asagidaki satirlari cikarin.
if (empty($eposta_konu) hata_mesaji("Konu bolumu bos birakilmis!");
if (empty($eposta_govde) hata_mesaji("Mesaj bolumu bos birakilmis!");
Bundan sonra $eposta_basliklari isimli degiskeni bos olarak
baslatiyorum.Bu cok gerekli degil ama guzel bir programcilik
teknigi.
Bu asamadan sonra gozumuze takilan bazi komutlari neden kullandigimizi
aciklayalim.Burada kullanilan str_replace komutu ile kullanicinin
girmis olabilcegi ";" noktali virgul karekteri "," virgul
ile degistirilmektedir.Biliyorsunuz PHP'nin mail gonderme
fonksiynu olan mail () yanlizca girdileri "," virgul ile ayirmamiza
izin vermektedir.
stripslashes fonksyonu ile mesaj konusu ve govdesi icinde
yer alabilcek ters slash isaretlerini siler.Ornek verecek
olursak (\' bicimindeki bir yazim 'haline getirilir.
Daha fazla bilgi icin bakiniz:
http://turk-php.com/manual/function.stripslashes.html
Eger yanlizca HTML taglarinin veya PHP taglarinin yazilan
mesajdan silinmesini istiyorsaniz strip_tags () fonksiyonunu
da kullanabilirsiniz.
Strip kelimesinin turkcedeki anlami soymak manasindadir.Bu
sekilde kullanirsak mesajin icindeki herseye text muamalesi
yapilmasinida saglamis olacagiz.Bunun icin ikinci satiri asagidaki
gibi degistirin...
$eposta_govde = strip_tags(stripslashes($eposta_govde));
Unutmayin mail() fonksiyonu emaili,gonderilen kullanciya ulasmasini
garanti etmez.Fonksiyon basarili olarak donmus olsa bile bu
her zaman mailin kullaniciya ulastigini gostermez.
Ikinci bolumde epostalara PHP ile nasil dosya eki yapabilceginiz
konusuna deginilecektir.
Kalin Sagilicakla,
Her turlu gorus ve onerinizi eposta yoluyla serkan@turk-php.com adresine
gonderebilir veya turk-php.com/forum adresinde tartisilmasini
saglayabilirsiniz...
Serkan Hadi Ceylani
serkan@turk-php.com
|