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

ilker()photon.iyte.edu.tr


http://start.at/preprint .... Fizik Makaleleri
http://nukleer.fw.nu/ ......... Nukleer Enerji
http://mepe.findhere.org/ .. MP3 Arama Motorum
http://ilkerf.tripod.com/cbm.html ... C64/C128
http://ilkerf.tripod.com/pratik/ Linux & misc

Voice Mail: +1-(888)-392-4832--312-434-3829