E-Posta Takibi 1. Gonderilecek e-posta bir kod icerecek. 2. Bu kod calisinca bir yere tetikleme yapacak. 3. Tetikleme yaptigi yerdeki programcik gerekli veriyi alip hemen log'a isleyecek. 1. Gonderdiginiz e-posta'nin konusu. (Daha onceden yazdigim gibi; bunu e-postayi gonderirken siz belirleyeceksiniz) 2. E-postanin okundugu tarih ve saat. 3. E-postayi okuyan kisinin IP adresi. 1. Kod e-posta okundugu anda calismali. 2. Kod gizli olmali. 3. Kodun calistigi e-postayi okuyan kullanici tarafindan farkedilmemeli. Bu 3 sartin bir arada meydana gelebilmesi biraz karmasik ve zor gorunuyor sanirim. :) Burada ilk aklima gelen sey (FZ'nin de yardimlari ile) e-postanin icerigine bir JavaScript ekleyerek OnBodyLoad fonksiyonu ile bu adresi calistirmak oldu ama bu fikirden acilen vazgecmek zorunda kaldim! :) Sebebi ise karsidaki kullanicinin tarayicisinin desteklemeyebilecek olmasi ve dahasi herhangi bir ScriptBlocking kullanabilecek olmasi. Bir sonraki fikir ise koordinatlari goruntunun disinda bir yere tekabul eden bir pop-up pencere actirmak ve kod calistiktan hemen sonra bu pop-up pencerenin kapanmasi oldu ama sizin de farkedebileceginiz gibi ilk akla gelen JavaScript problemlerinden dolayi bundan da vazgecmek zorunda kaldim! :) Burada HTML hacking devreye girdi ve degisik bir teknik denedim. HTML formatinda gonderdigim e-postanin icerigine gizli (hidden) bir katman (layer) eklemek ve bu katman icerisinde gerekli kodu cagirmak! :) Eklenecek katman ve tabii ki bunun gizlenmesi temel HTML bilgisi ile cok kolay bir sekilde halledilebilir ama bu kod bu katmanda nasil calistirilabilir? Ilk deneme ve sonuc basarili! ;) Katman icerisine bir IMG etiketi yazilir ve "src" source (kaynak) olarak yukarida iki kere belirttigim logger.php adresi ve degiskenler verilir! IMG fonksiyonu cagiracagi adreste uzanti (extension) kontrolu yapmadigi icin normal olarak logger.php'yi cagirmaya calisir. Sonuc olarak bekledigi resmi (image) dondurememis olsa da adresi fetch (cagirmak) ettigi icin logger.php sunucuda devreye girerek gerekli kaydin tutulmasi islemini baslatir! :) Peki gonderecegim e-postaya nasil bir kod eklemeliyim? Gonderdiginiz e-postaya asagidaki kodu ekliyorsunuz: <div id="layer1" style="position:absolute; width:1px; height:1px; z-index:1; visibility: hidden"> <img 1/5
src="http://sizin_sunuzunuz/log_dizininiz/logger.php?konu=e-postanizin_konusu&sifre=si Burada dikkat edilmesi gereken 3 onemli husus var: 1. E-posta gonderilirken preview (onizleme) yapildigi icin logger.php cagirilmis oluyor ve sizin konu olarak belirlediginiz degeri (string) sayfa degiskeninde "logunuzun_tutulacagi_sayfa" olarak belirlediginiz "logunuzun_tutulacagi_sayfa.html" dokumanina "::: E-postanizin_Konusu ::: konulu e-posta "onizlemenin 2/5
yapildigi tarih ve zaman" da gonderildi. IP: "sizin o an sahip oldugunuz IP adresi" olarak isliyor ve daha sonra her cagirildiginda "konu=" degiskenini "logunuzun_tutulacagi_sayfa.html" dosyasinin iceriginden bir RegExp (Bkz: Duzenli Ifadeler) "preg_match" ile kontrol ederek "eger konu dokuman iceriginde varsa okundu olarak isle, yoksa gonderildi olarak isle" seklinde isliyor. Bu sayede e-postanin gonderildigi tarihi ve okundugu tarihi ve dolayisi ile aradaki zaman farkini kolayca anlayabiliyorsunuz. 2. Eger sunucunuzda bulunan PHP'nin Turkce Dil Destegi varsa loglara gececek tarih Turkce cikacaktir, aksi takdirde PHP kodunun basinda gecen "setlocale(lc_all,tr_tr);" satiri hicbir ise yaramayacaktir... 3. Ikinci maddede belirttigim; sunucunuzda bulunan PHP'nin Turkce Dil Destegi sayet yoksa logger.php calistirilirken vereceginiz degiskenler kesinlikle Turkce karakter (s,i,g,u,o,c,i,u,g,c,s,o) icermemeli. Aksi takdirde PHP karakter eslemesi yapamadigi icin [ben oyle sanmaktayim :)] hata verecektir... Peki bu loglara nasil ulasacagim? Daha once yukarida birkac kere belirttigim logger.php'nin calismasi icin gerekli olan degiskenlerden "sayfa" degiskeninin icerigi + ".html" olarak ulasabilirsiniz. Yani orenkte verdigim "logunuzun_tutulacagi_sayfa" degiskenini vermis oldugunuzu dusunursek, loglariniza erismek icin kullanmaniz gereken adres asagidaki gibi olacaktir: http://sizin_sunucunuz/log_dizininiz/logunuzun_tutulacagi_sayfa.html Ve IE (Internet Explorer) kullanicilari icin bir ufak kiyak daha yapayim hemen! :) Aciklamasini yapmaya useniyor olmamdan ve yine temel JavaScript bilgisi vermekten pek haz etmememden dolayi cok fazla uzerinde durmayacak olsam da. Asagidaki kodu dosya ismini sizin belirleyeceginiz bir HTML dokumani olarak bilgisayariniza kaydedecek olursaniz, e-posta gonderirken icerigine ekleyeceginiz kodu kolayca olusturabilirsiniz! :) <html> <head> <title>logger Layer Kodu Olustur</title> <meta http-equiv="content-type" content="text/html; charset="> </head> <body bgcolor="#000000"> <script language=javascript> function loggerlayer() { bir = "<div id=\"layer1\" style=\"position:absolute; width:1px; height:1px; z-index:1; visibility: hidden\">"; iki = "<img src=\"http://sizin_sunucunuz/log_dizininiz/logger.php?konu="; uc = "\&sifre="; dort = "\&sayfa="; bes = "\">" kodcu.kod.value = bir + iki + kodcu.konu.value + uc + kodcu.sifre.value + dort + kodcu.sayfa.value + bes; } </script> <form method="post" action="" name="kodcu"> <center><textarea name="kod" rows="3" cols="80"></textarea> <br> <br> </center> <table width="75" border="0" cellspacing="0" cellpadding="0" align="center"> Helvetica, sans-serif" size="2">konu: </font></b></font> 3/5
<input type="text" name="konu"> Helvetica, sans-serif" size="2">sifre:</font></b></font> <input type="password" name="sifre"> Helvetica, sans-serif" size="2">sayfa: </font></b></font> <input type="text" name="sayfa"> </table> <div align="center"><a HREF="javascript:loggerlayer()"><font face="verdana, Arial, Helvetica, sans-serif" size="2"><b><font color="#0066cc">kod Olustur </font></b></font></a> </form> </body> </html> Yukaridaki kodda "http://sizin_sunucunuz/log_dizininiz/logger.php" kismini icerigindende anlasilabilecegi gibi kendi sunucunuza gore ayarlamaniz gerekmekte. :) Not #1: Yukaridaki HTML dokumani ve icerdigi JavaScript kodu sadece IE'de (Internet Explorer) calismaktadir. Diger tarayicilarla uyumlu bir hale getirecek arkadaslara minnettar kalirim! Tabii ki bizlerle paylasacaklarindan da suphem yok yazdiklari kodu! ;) Not #2: Hemen yukaridaki HTML dokumani ve icerdigi JavaScript kodu haricindeki diger tum kodlar; logger.php ve e-postanin icerigine eklenecek layer kodu Mozilla ve IE'de (Internet Explorer) denenmis ve problemsiz bir sekilde calistigi gozlemlenmistir. Not #3: E-postanin icerigine ekleyeceginiz layer kodu dogal olarak gonderecegini iletinin HTML formatinda olmasini saglamakta. Bu nedenle de gonderdiginiz kisinin HTML Formatting yapiyor olmasi gerekmekte. Hotmail, Yahoo ve Outlook Express uzerinde calisan ayri iki POP e-posta hesabi uzerinde denenmis ve problemsiz bir sekilde calistigi gozlemlenmistir. Ayrica Hotmail ve Yahoo e-posta sunucularinin default (varsayilan ayar) olarak HTML Formatting yaptigini belirteyim! :) Not #4: FZ'nin verdigi fikirler, logger.php'nin duzenlenmesine olan katkilari ve deneme yapabilemem icin bana sunucusunda bir dizin acmasi nedeniyle kendisine sonsuz tesekkur ederim! :) Not #5: Bu programi yazmama sebep olan kisiye ozellikle tesekkur ederim. Simdi arabesk geyiklere vurup "o kendini biliyor" tribine girmenin bir alemi yok ama gercekten de ise yarar oldugunu dusundugum bir program ortaya cikartmamda farkinda olmayarak tesvik edici etken oldu kendisi! :) Not #6: Not olayini biraz abarttim sanirim, can sikici olduysam ozur dilemeyi bir borc bilirim! ;) (: "Bilgi paylastikca artar..." :) 4/5
Saygilar, Gokhan "Crematorium" OLGUN Kaynak Site: Ismail KIRBAS ile Web Sitesi Tasarimi http:// Belge Adresi: www.kirbas.com/index.php?id=151 5/5