JAVASCRIPT İLE EPOSTA ARAMA MOTORU
İlker Fıçıcılar
ilkerf()geocities.com
Mayıs 2000
Geçenlerde Umut'un sayfasını hazırlarken bir "E-posta Adresi Arama"
özelliğinin iyi olabileceğini düşündük. Sayfa Tripod'da yer aldığından,
bu özelliği Tripod'un cgi servisiyle de yapabilmek mümkündü, ama
veritabanındaki adresler fazla olmadığından daha basit bir çözüm
olarak Javascript düşünülebilirdi.
Eposta araması, aranan isme karşılık gelen eposta adresi sayfanın
yapısı bozulmadan ve yeni bir sayfa yüklenmeden küçük bir alanda
belirse iyi olur dedik ve işe koyulduk.
Javascript'teki .indexOf yapısını kullanarak yaptığım çözümü, örnek
olması için yalnızca birkac eposta adresiyle birlikte aşağıya alıyorum;
kodun ardından ise birkaç açıklama, kodla birlikte kullanılacak form ve
bu kodu oluşturmak için kullanılabilecek Unix shell scripti yer alıyor:
< !-- Eposta Adresi Aramak icin Javascript Kodu -->
< script language="JavaScript">
< !--
Ad = new Object();
Adr = new Object();
Ad[0] = "???";
Adr[0] = "adres bulunamadı";
Ad[1]="umut devrim eryarar";
Adr[1]="udevrim()yahoo.com";
Ad[2]="ilker ficicilar";
Adr[2]="ilkerf()geocities.com";
Ad[3]="esref abay";
Adr[3]="abay()edebiyat.ege.edu.tr";
var Adet = 3
function ara() {
var Kisi = 0;
var Durum = false;
var Nesne = document.forms[0].arayiver.value.toLowerCase();
if (Nesne != null) {
for ( var i=1; i < = Adet; i++) {
if (Ad[i].indexOf(Nesne) != -1) {
Durum=true;
Kisi = i;
}
}
document.forms[0].adres.value = Adr[Kisi];
}
}
// -->
< /script>
Görüldüğü gibi gayet basit bir şekilde, formdaki arayiver isimli
girdiyi önce küçük harfli bir hale dönüştürüyor, sonra da küçük
harflerden oluşmuş Ad dizisinde indexOf ile arıyoruz, bulduğumuzda
ise karşılık gelen en son e-posta adresini formdaki adres isimli
nesneye yazıyoruz. Bu adres isimli yer ister bir text alanı, ister
bir girdi kutucuğu isterseniz de bir "button" olabilir.
Biz sonuncusunu kullandık:
< html> < body bgcolor=white>
< meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-9">
< br>
< table border=1 cellspacing=0 cellpadding=0 width=200 align=top>
< tr> < td bgcolor=black> < center> < font color=white> E-posta Adresi Arama< /font>
< /center> < /td> < /tr> < tr> < td>
< form name="form1" action="javascript:ara()">
< table border="0">
< tr> < td> < font size="2"> Aranan Ad ve/veya Soyad:< br> < /font> < /td> < /tr>
< tr> < td> < font size="2">
< input type="text" name="arayiver" value="" onClick="ara()">
< /font> < /td>
< td> < font size="2"> < input type="button" value=" Ara " onClick="ara()">
< /font> < /td> < /tr>
< tr> < td> < font size="2">
< !--
Bu da farkli bir yontem ile adres gostermek icin (ama digeri iptal edilmeli)
< input type="text" size=30 name="adres" value="" onClick="ara()"> < br>
-->
< input type="button" name=adres value=" Adres Burada Belirecek " >
< /font> < /td> < /tr>
< /table>
< /form>
< /td> < /tr> < /table>
< br>
< /body> < /html>
Bu arada bir hatırlatma: eğer bu form sayfadaki ilk form değilse,
koddaki forms[0] kısımları ona göre ayarlanmalı. Yani, ilk form ise
forms[0], ikinci form ise forms[1], üçüncü ise forms[2] vs. kullanılacak.
Bir de, bu javascript kodunu faklı adreslerle yeniden oluşturmak kolay
olsun diye ufak bir Unix sh scripti ayarladım, aşağıdaki script
"arkeo.adr" dosyasına
adres ad soyad
şeklinde girilmiş bilgi satırlarını kullanarak "mailara.js" dosyasını
oluşturuyor, bu ise yukarıdaki javascript kodunun farklı adreslerle
oluşturulmuş biçimi.
Aşağıdaki shell scriptiyle kullanilabilecek örnek "arkeo.adr" dosyası
satır satır şunları içerebilir:
ilkerf()geocities.com Ilker Ficicilar
udevrim()yahoo.com Umut Devrim Eryarar
bilgi()nukleer.findhere.com Nukleer Enerji Karsiti Platform
root()gk.ods.org Gece Kusu - sistem yoneticisi
...
script ise bu:
#!/bin/sh
#
# e-posta arama javascripti ureteci
#
# ilker Ficicilar
# ilkerf()geocirties.com
#
# adres ad soyad
# seklindeki girdileri kullanarak uygun javascript kodunu olusturur.
#
dosya=arkeo.adr
cat < < EOF1 > mailara.js
< !-- Eposta Adresi Aramak icin Javascript Kodu -->
< script language="JavaScript">
< !--
Ad = new Object();
Adr = new Object();
Ad[0] = "???";
Adr[0] = "adres bulunamadi";
EOF1
# Bu kisim veritabanini olusturuyor.
i=0
cat $dosya | while read qw
do
i=`expr $i + 1`
set $qw
adr=$1
shift
# buyuk harfleri kucuk harflere donusturuyoruz
ad=`echo $* | tr A-Z a-z`
echo "Ad["$i"]="$ad";"
echo "Adr["$i"]="$adr";"
done > > mailara.js
adet=`wc $dosya`
set $adet
adet=$1
echo > > mailara.js
echo "var Adet =" $adet > > mailara.js
echo > > mailara.js
# scriptin devami
cat < < EOF2 > > mailara.js
function ara() {
var Kisi = 0;
var Durum = false;
var Nesne = document.forms[0].arayiver.value.toLowerCase();
if (Nesne != null) {
for ( var i=1; i < = Adet; i++) {
if (Ad[i].indexOf(Nesne) != -1) {
Durum=true;
Kisi = i;
}
}
document.forms[0].adres.value = Adr[Kisi];
}
}
// -->
< /script>
EOF2
Bu shell scriptini örneğin "jsyap" adıyla kaydedip chmod u=rwx jsyap
ile calıştırılabilir bir komut haline getirdikten sonra ./jsyap
diyerek, daha önce "arkeo.adr" dosyasına yazdığınız adresler kullanılarak
"mailara.js" dosyasının oluşturulmasını sağlayabilirsiniz. Daha sonra
geriye yalnızca yukarıda verilen form örneğini ve "mailara.js" dosyasını
birleştirerek bir HTML sayfasında kullanmak kalıyor.
Bu kodun çalışan bir örneğini, arkeologların e-posta adresleriyle
oluşturulmuş bir biçimde Umut'un arkeoloji sayfasında,
http://mezopotamya.tripod.com/
adresinde bulabilirsiniz. Sayfa henüz yeni, zaman içinde baska özellikler
ve bilgiler de koyarız sanırım.
Bir diğer örnek sayfa olarak da buradaki epostaara.html dosyasını inceleyebilirsiniz.
Kolay gelsin
İlker Fıçıcılar
ilkerf()geocities.com
http://ekitap.kolayweb.com/ ......... Palm için Ekitap
http://nukleer.fw.nu/ ......... Nukleer Enerji
https://ilkerf.tripod.com/cbm.html ... C64/C128
https://ilkerf.tripod.com/teknik/ Linux & Bilgisayarlar