Yeni bir makale ile karşınızdayım ;
Bugün kulllanıcı girişi yapmayı , oturum açmayı , md5 şifrelemeyi öğreneceğiz.

Oturum nedir ; Windows sunucularda siteye bağlanan her istemci için benzersiz bir oturum numarası açılır Bunu Session.SessionID komutu ile öğreniriz, ama konumuz gereği buna pek değinmeyeceğim.

Ekteki Dosyayı PC nize indirip Localhost unuzda yada Sunucunuzda çalıştırınız [Yazma izni vermeyi unutmayını tabi]

Default.asp
<%@LANGUAGE="VBSCRIPT"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Default</title>
</head>

<body>
<center>
<p><a href="Login.asp">Üye Girişi</a></p>
<p>&nbsp;</p>
<p><a href="Kayit.asp">Üye Kaydı</a></p>
</center>
</body>
</html>

Login.asp
<%@LANGUAGE="VBSCRIPT"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Giriş Kontrol</title>
</head>

<body>
<form action="" method="post">
  <label>Kullanıcı Adı
  <input name="user" type="text" id="user" />
  </label>
  <label>Parola :
  <input name="pass" type="password" id="pass" />
  </label>
  <input type="submit" name="Submit" value="Giriş" />
</form>
<%
'include yöntemi ile lazım olan dosyaları sayfada çalıştıralım
'include etmek sayfalarda tekrar tekrar aynı şeyleri yazacağımıza bir defa yazıp gerekli yerlerde kullanmamız için iyi olur
%>
<!--#include file="Baglanti.asp" -->
<!--#include file="Koruma.asp" -->
<!--#include file="Md5.asp" -->
<%

IF REQUEST.ServerVariables("REQUEST_METHOD")="POST" THEN
'Giriş Butonuna basılıp Post edlince Çalışacaktır

Dim KullaniciADI
Dim Parolasi

KullaniciADI=Trim(Temizlik(Request.Form("user")))
Parolasi=Trim(HashEncode(Request.Form("pass")))
'Kullanıcı adını ve parolasını tanımladık inputların name lerinden alır değerleri
'Sql injection lara karşı önlemimizide aldık
'Parola için MD5 şifremele yöntemini kullandık

	Set Login = adoCon.Execute ("SELECT idno,Username,Password,Uyebanli FROM tbl_users WHERE Username='"&KullaniciADI&"' AND Password='"&Parolasi&"' AND Uyebanli=0;")
		
		If Login.EOF Then
			
			Response.Write("Hatalı bilgi!")
				
				Else
				
				Session("Uyegirisi")="Tamamdir" 'İstemciye oturum açtık Uyegirisi=Tamamdir dedik
				Session("Uyenumarasi")=Login("idno") 'Üyeyi tanımak için idnumarasını alacağız
				Response.Redirect("Panel.asp") 'Panel.asp ye yönlendirdik
				
				End If
'Veritabanına bağlanıp tbl_users tablosuna girdik ve KullaniciADI&Parolasi sını sorgulattık eğer böyle bir bilgi varsa
'İstemciye oturum açtık ve Panel.asp ye yönlendirdik


END IF
%>
</body>
</html>
Kayit.asp
<%@LANGUAGE="VBSCRIPT"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Kayıt</title>
</head>

<body>
<form action="" method="post">
<table width="480" border="0" align="center">
  <tr>
    <td width="165">Kullanıcı Adı </td>
    <td width="10">:</td>
    <td width="291"><input name="userr" type="text" id="userr" /></td>
  </tr>
  <tr>
    <td>Parola</td>
    <td>:</td>
    <td><input name="pass" type="password" id="pass" /></td>
  </tr>
  <tr>
    <td>Mail Adres </td>
    <td>:</td>
    <td><input name="mail" type="text" id="mail" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Adınız Soyadınız </td>
    <td>:</td>
    <td><input name="adsoyad" type="text" id="adsoyad" /></td>
  </tr>
  <tr>
    <td>Hakkınızda</td>
    <td>:</td>
    <td><textarea name="hakkinda" cols="30" rows="5" id="hakkinda"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input type="submit" name="Submit" value="  KAYDET  " /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>
<!--#include file="Koruma.asp" -->
<!--#include file="Md5.asp" -->
<!--#include file="Baglanti.asp" -->
<%
IF REQUEST.ServerVariables("REQUEST_METHOD")="POST" THEN
'KAYDET Butonuna basılıp Post edlince Çalışacaktır


Dim KullaniciADI
Dim Parolasi
Dim MailAdresi
Dim AdiSoyadi
Dim Hakkinda
'Değişkenlerimizi Hafızaya aldık


KullaniciADI=Trim(Temizlik(Request.Form("userr")))
Parolasi=Trim(HashEncode(Request.Form("pass")))
KontrolParolasi=Trim(Request.Form("pass"))

MailAdresi=Trim(Temizlik(Request.Form("mail")))

AdiSoyadi=Trim(Temizlik(Request.Form("adsoyad")))
Hakkinda=Trim(Temizlik(Request.Form("hakkinda")))
'Formdan gelen verileri değişkenlere atadık
'Temizlik İşlemleri de yaptık


	If Len(KullaniciADI) <= 4 Then
		Response.Write("Kullanıcı Adı Yazınız")
	Elseif Len(KontrolParolasi) <= 5 Then
		Response.Write("Parola Yazınız")
	Elseif Len(MailAdresi) <= 8 Then
		Response.Write("Mail Adres Yazınız")
	Elseif Len(AdiSoyadi) <= 6 Then
		Response.Write("Adınızı Soyadınızı Yazınız")
	Elseif Len(Hakkinda) <= 9 Then
		Response.Write("Hakkınızda Bişeyler Yazınız")
	Else
	Call KayitIslemleri 'KayitIslemleri Bölümüne  geç
	End if
'Form kontrolleri tamam boş bilgi istemiyoruz


Sub KayitIslemleri 'Sub istendiğinde çalıştırılan istenmediğinde pas geçilen bir bölümdür

Dim Kontrol
Dim Kaydet

Set Kontrol = adoCon.Execute ("SELECT * FROM tbl_users WHERE Username='"&KullaniciADI&"' OR MailAdres='"&MailAdresi&"';")
'Daha önce kişi kaydolmuşmu kontrol edeceğiz

	If Kontrol.EOF Then 'Eğer Kullanıcı adı veya mail daha önce kayıt olunmamışsa kayıt işlemini yapalım
	
Set Kaydet = Server.CreateObject("Adodb.Recordset")
Kaydet.Open "tbl_users" , adoCon,1,3	'Okuma yazma yetkisi ile tabloyu açtık
	
	Kaydet.Addnew 'Yeni Kayıt Girmek için komut yazdık
	Kaydet("Username")=KullaniciADI
	Kaydet("Password")=Parolasi
	Kaydet("AdSoyad")=AdiSoyadi
	Kaydet("MailAdres")=MailAdresi
	Kaydet("KayitTarihi")=Now()
	Kaydet("Hakkinda")=Hakkinda
	Kaydet.Update 'Kayıt işlemini Update ettik
	Kaydet.Close 'Kayıt işlemini kapattık
	
	'Yazdıralım sonucu
	Response.Write("Üye Kaydınız Tamamlandı<br>")
	Response.Write("Üye Girişi Yapabilirsiniz <a href=""Login.asp"">Tıklayın<a>")
	
	Else 'Değilse Uyaralım
		Response.Write("Bu bilgilerle daha önce kayıt olunmuş")
	End If


End Sub



END IF
%>
</body>
</html>
Panel.asp
<%@LANGUAGE="VBSCRIPT"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Panel</title>
</head>
<%
'Bu sayfa üyelere açık bir sayfadır
'Eğer Kullanıcı Girişi Yapılmamışsa Login.asp ye yönlendireceğiz
%>
<!--#include file="OturumKontrol.asp" -->
<!--#include file="Baglanti.asp" -->

<%
UyeNUMARASI=Session("Uyenumarasi")
'Giriş yaparken üyenin numarasını oturum bilgisine atamıştık

Set Uyebilgi = adoCon.Execute ("SELECT * FROM tbl_users WHERE idno="&UyeNUMARASI&" AND Uyebanli=0;")
	If Uyebilgi.EOF Then Response.Redirect("Login.asp")
		'Oturumu açtıktan sonra kullanıcı oturumu kapatana kadar üyelere açık bölümlere girebilecektir
		'Fakat diyelim Biz kullanıcıyı üye oturum açtığı sırada sildik yada banladık hala üyelere açık yerlere girebilir
		'Onun için hersayfada veritanından kontrol edelimki banlamamiz yada silmemiz işe yarasın

KullanicinADISOYADI=Uyebilgi("AdSoyad")

Uyebilgi.Close
Set Uyebilgi = NOTHING
%>
<body>
<p>Merhaba Sayın [<strong><%=(KullanicinADISOYADI)%></strong>] 
Başarılı Bir şekilde giriş yaptınız </p>
<p><a href="Logout.asp">Çıkış</a></p>
</body>
</html>
Logout.asp
<%
'İstemci için açılmış olan tüm oturum bilgilerini sıfırlıyoruz
'Tekrar Login.asp ye gönderiyoruz
'Başka bir yere de gönderebiliriz o bizim isteğimize kalmış
Session.Abandon()
Response.Redirect("Default.asp")
%>

Yardımcı Dosyalar
Baglanti.asp
<%
'--------------------------------------
VeritabaniYolu="VeriTabani.mdb"
'---------------------------------------

Set adoCon=Server.CreateObject("AdoDb.Connection")
adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(VeritabaniYolu)
%>
Koruma.asp
<%
Function Temizlik(Temizle)
Temizle = Replace (Temizle ,"é","",1,-1,1)
Temizle = Replace (Temizle ,"'","",1,-1,1)
Temizle = Replace (Temizle ,"^","",1,-1,1)
Temizle = Replace (Temizle ,"%","",1,-1,1)
Temizle = Replace (Temizle ,"*","",1,-1,1)
Temizle = Replace (Temizle ,"£","",1,-1,1)
Temizle = Replace (Temizle ,"$","",1,-1,1)
Temizle = Replace (Temizle ,"½","",1,-1,1)
Temizle = Replace (Temizle ,"`","",1,-1,1)
Temizle = Replace (Temizle ,"´","",1,-1,1)
Temizle = Replace (Temizle ,"<","",1,-1,1)
Temizle = Replace (Temizle ,">","",1,-1,1)
Temizle = Replace (Temizle ,"""","",1,-1,1)
Temizlik=Temizle
End Function
%>
Md5.asp
<%

' Written By: Mark G. Jager
' Written Date: 8/10/2000

Function getSalt(intLen)



	Dim strSalt
	Dim intIndex, intRand

	If Not IsNumeric(intLen) Then
		getSalt = "00000000"
		exit function
	ElseIf CInt(intLen) <> CDbl(intLen) Or CInt(intLen) < 1 Then
		getSalt = "00000000"
		exit function
	End If

	Randomize

	For intIndex = 1 to CInt(intLen)
		intRand = CInt(Rnd * 1000) Mod 16
		strSalt = strSalt & getDecHex(intRand)
	Next
	
	getSalt = strSalt

End Function


Function HashEncode(strSecret)

    Dim strEncode, strH(4)
    Dim intPos
    
    
    If len(strSecret) = 0 or len(strSecret) >= 2^61 then
		HashEncode = "0000000000000000000000000000000000000000"
		exit function
    end if
    
    
    'Initial Hex words are used for encoding Digest.  
    'These can be any valid 8-digit hex value (0 to F)
    strH(0) = "FB0C14C2"
    strH(1) = "9F00AB2E"
    strH(2) = "991FFA67"
    strH(3) = "76FA2C3F"
    strH(4) = "ADE426FA"
    
    For intPos = 1 to len(strSecret) step 56
		
		strEncode = Mid(strSecret, intPos, 56) 'get 56 character chunks
		strEncode = WordToBinary(strEncode) 'convert to binary
		strEncode = PadBinary(strEncode) 'make it 512 bites
		strEncode = BlockToHex(strEncode) 'convert to hex value
		strEncode = DigestHex(strEncode, strH(0), strH(1), strH(2), strH(3), strH(4))
		strH(0) = HexAdd(left(strEncode, 8), strH(0))
		strH(1) = HexAdd(mid(strEncode, 9, 8), strH(1))
		strH(2) = HexAdd(mid(strEncode, 17, 8), strH(2))
		strH(3) = HexAdd(mid(strEncode, 25, 8), strH(3))
		strH(4) = HexAdd(right(strEncode, 8), strH(4))
		
    Next
    
    HashEncode = strH(0) & strH(1) & strH(2) & strH(3) & strH(4)
    
End Function



Function HexToBinary(btHex)

    Select Case btHex
    Case "0"
        HexToBinary = "0000"
    Case "1"
        HexToBinary = "0001"
    Case "2"
        HexToBinary = "0010"
    Case "3"
        HexToBinary = "0011"
    Case "4"
        HexToBinary = "0100"
    Case "5"
        HexToBinary = "0101"
    Case "6"
        HexToBinary = "0110"
    Case "7"
        HexToBinary = "0111"
    Case "8"
        HexToBinary = "1000"
    Case "9"
        HexToBinary = "1001"
    Case "A"
        HexToBinary = "1010"
    Case "B"
        HexToBinary = "1011"
    Case "C"
        HexToBinary = "1100"
    Case "D"
        HexToBinary = "1101"
    Case "E"
        HexToBinary = "1110"
    Case "F"
        HexToBinary = "1111"
    Case Else
        HexToBinary = "2222"
    End Select
End Function

Function BinaryToHex(strBinary)

    Select Case strBinary
    Case "0000"
        BinaryToHex = "0"
    Case "0001"
        BinaryToHex = "1"
    Case "0010"
        BinaryToHex = "2"
    Case "0011"
        BinaryToHex = "3"
    Case "0100"
        BinaryToHex = "4"
    Case "0101"
        BinaryToHex = "5"
    Case "0110"
        BinaryToHex = "6"
    Case "0111"
        BinaryToHex = "7"
    Case "1000"
        BinaryToHex = "8"
    Case "1001"
        BinaryToHex = "9"
    Case "1010"
        BinaryToHex = "A"
    Case "1011"
        BinaryToHex = "B"
    Case "1100"
        BinaryToHex = "C"
    Case "1101"
        BinaryToHex = "D"
    Case "1110"
        BinaryToHex = "E"
    Case "1111"
        BinaryToHex = "F"
    Case Else
        BinaryToHex = "Z"
    End Select
End Function

Function WordToBinary(strWord)

	Dim strTemp, strBinary 
	Dim intPos

	For intPos = 1 To Len(strWord)
	    strTemp = Mid(strWord, cint(intPos), 1)
	    strBinary = strBinary & IntToBinary(Asc(strTemp))
	Next

	WordToBinary = strBinary

End Function

Function HexToInt(strHex)

	Dim intNew, intPos, intLen

	intNew = 0
	intLen = CDbl(len(strHex)) - 1
	
	For intPos = CDbl(intLen) to 0 step -1
	    Select Case Mid(strHex, CDbl(intPos) + 1, 1)       
	    Case "0"
			intNew = CDbl(intNew) + (0 * 16^CDbl(intLen - intPos))
	    Case "1"
	        intNew = CDbl(intNew) + (1 * 16^CDbl(intLen - intPos))
	    Case "2"
	        intNew = CDbl(intNew) + (2 * 16^CDbl(intLen - intPos))
	    Case "3"
	        intNew = CDbl(intNew) + (3 * 16^CDbl(intLen - intPos))
	    Case "4"
	        intNew = CDbl(intNew) + (4 * 16^CDbl(intLen - intPos))
	    Case "5"
	        intNew = CDbl(intNew) + (5 * 16^CDbl(intLen - intPos))
	    Case "6"
	        intNew = CDbl(intNew) + (6 * 16^CDbl(intLen - intPos))
	    Case "7"
	        intNew = CDbl(intNew) + (7 * 16^CDbl(intLen - intPos))
	    Case "8"
	        intNew = CDbl(intNew) + (8 * 16^CDbl(intLen - intPos))
	    Case "9"
	        intNew = CDbl(intNew) + (9 * 16^CDbl(intLen - intPos))
	    Case "A"
	        intNew = CDbl(intNew) + (10 * 16^CDbl(intLen - intPos))
	    Case "B"
	        intNew = CDbl(intNew) + (11 * 16^CDbl(intLen - intPos))
	    Case "C"
	        intNew = CDbl(intNew) + (12 * 16^CDbl(intLen - intPos))
	    Case "D"
	        intNew = CDbl(intNew) + (13 * 16^CDbl(intLen - intPos))
	    Case "E"
	        intNew = CDbl(intNew) + (14 * 16^CDbl(intLen - intPos))
	    Case "F"
	        intNew = CDbl(intNew) + (15 * 16^CDbl(intLen - intPos))
		End Select

	Next

	HexToInt = CDbl(intNew)
	
End Function

Function IntToBinary(intNum)

    Dim strBinary, strTemp
    Dim intNew, intTemp
    Dim dblNew
    
    intNew = intNum
    
    Do While intNew > 1
        dblNew = CDbl(intNew) / 2
        intNew = Round(CDbl(dblNew) - 0.1, 0)
        If CDbl(dblNew) = CDbl(intNew) Then
            strBinary = "0" & strBinary
        Else
            strBinary = "1" & strBinary
        End If

    Loop
    
    strBinary = intNew & strBinary
    
    intTemp = Len(strBinary) mod 8
    
    For intNew = intTemp To 7
        strBinary = "0" & strBinary
    Next
    
    IntToBinary = strBinary
    
End Function

Function PadBinary(strBinary)

	Dim intPos, intLen
	Dim strTemp
	    
	intLen = Len(strBinary)
	    
	strBinary = strBinary & "1"
	    
	For intPos = Len(strBinary) To 447
	    strBinary = strBinary & "0"
	Next
	    
	strTemp = IntToBinary(intLen)
	    
	For intPos = Len(strTemp) To 63
	    strTemp = "0" & strTemp
	Next
	    
	strBinary = strBinary & strTemp
	    
	PadBinary = strBinary
	    
End Function

Function BlockToHex(strBinary)

	Dim intPos
	Dim strHex

	For intPos = 1 To Len(strBinary) Step 4
	    strHex = strHex & BinaryToHex(Mid(strBinary, intPos, 4))
	Next

	BlockToHex = strHex

End Function

Function DigestHex(strHex, strH0, strH1, strH2, strH3, strH4)

	Dim strWords(79), adoConst(4), strTemp, strTemp1, strTemp2, strTemp3, strTemp4
	Dim intPos
	Dim strH(4), strA(4), strK(3)

    strK(0) = "5A827999"
    strK(1) = "6ED9EBA1"
    strK(2) = "8F1BBCDC"
    strK(3) = "CA62C1D6"
    
    strH(0) = strH0
    strH(1) = strH1
    strH(2) = strH2
    strH(3) = strH3
    strH(4) = strH4
    
	For intPos = 0 To (len(strHex) / 8) - 1
	    strWords(cint(intPos)) = Mid(strHex, (cint(intPos)*8) + 1, 8)
	Next

	For intPos = 16 To 79
	    strTemp = strWords(cint(intPos) - 3)
	    strTemp1 = HexBlockToBinary(strTemp)
	    strTemp = strWords(cint(intPos) - 8)
	    strTemp2 = HexBlockToBinary(strTemp)
	    strTemp = strWords(cint(intPos) - 14)
	    strTemp3 = HexBlockToBinary(strTemp)
	    strTemp = strWords(cint(intPos) - 16)
	    strTemp4 = HexBlockToBinary(strTemp)
	    strTemp = BinaryXOR(strTemp1, strTemp2)
	    strTemp = BinaryXOR(strTemp, strTemp3)
	    strTemp = BinaryXOR(strTemp, strTemp4)
	    strWords(cint(intPos)) = BlockToHex(BinaryShift(strTemp, 1))
	Next

	strA(0) = strH(0)
	strA(1) = strH(1)
	strA(2) = strH(2)
	strA(3) = strH(3)
	strA(4) = strH(4)

	For intPos = 0 To 79
	    strTemp = BinaryShift(HexBlockToBinary(strA(0)), 5)
	    strTemp1 = HexBlockToBinary(strA(3))
	    strTemp2 = HexBlockToBinary(strWords(cint(intPos)))
	    
	    Select Case intPos
	    
	    Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
	        strTemp3 = HexBlockToBinary(strK(0))
	        strTemp4 = BinaryOR(BinaryAND(HexBlockToBinary(strA(1)), _
				HexBlockToBinary(strA(2))), BinaryAND(BinaryNOT(HexBlockToBinary(strA(1))), _
				HexBlockToBinary(strA(3))))
	    Case 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
	        strTemp3 = HexBlockToBinary(strK(1))
	        strTemp4 = BinaryXOR(BinaryXOR(HexBlockToBinary(strA(1)), _
				HexBlockToBinary(strA(2))), HexBlockToBinary(strA(3)))
	    Case 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59
	        strTemp3 = HexBlockToBinary(strK(2))
	        strTemp4 = BinaryOR(BinaryOR(BinaryAND(HexBlockToBinary(strA(1)), _
				HexBlockToBinary(strA(2))), BinaryAND(HexBlockToBinary(strA(1)), _
				HexBlockToBinary(strA(3)))), BinaryAND(HexBlockToBinary(strA(2)), _
				HexBlockToBinary(strA(3))))
	    Case 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
	        strTemp3 = HexBlockToBinary(strK(3))
	        strTemp4 = BinaryXOR(BinaryXOR(HexBlockToBinary(strA(1)), _
				HexBlockToBinary(strA(2))), HexBlockToBinary(strA(3)))
	    End Select
	    
	    strTemp = BlockToHex(strTemp)
	    strTemp1 = BlockToHex(strTemp1)
	    strTemp2 = BlockToHex(strTemp2)
	    strTemp3 = BlockToHex(strTemp3)
	    strTemp4 = BlockToHex(strTemp4)
	    
	    strTemp = HexAdd(strTemp, strTemp1)
	    strTemp = HexAdd(strTemp, strTemp2)
	    strTemp = HexAdd(strTemp, strTemp3)
	    strTemp = HexAdd(strTemp, strTemp4)
	    
	    strA(4) = strA(3)
	    strA(3) = strA(2)
	    strA(2) = BlockToHex(BinaryShift(HexBlockToBinary(strA(1)), 30))
	    strA(1) = strA(0)
	    strA(0) = strTemp
	    
	Next

	DigestHex = strA(0) & strA(1) & strA(2) & strA(3) & strA(4)

End Function

Function HexAdd(strHex1, strHex2)

    Dim intCalc
    Dim strNew
    
    intCalc = 0
    intCalc = CDbl(CDbl(HexToInt(strHex1)) + CDbl(HexToInt(strHex2)))
    Do While CDbl(intCalc) > 2^32
		intCalc = CDbl(intCalc) - 2^32
    Loop
       
    strNew = IntToBinary(CDbl(intCalc))
    Do While Len(strNew) < 32
        strNew = "0" & strNew
    Loop
    strNew = BlockToHex(strNew)
    
    if InStr(strNew, "00") = 1 and len(strNew) = 10 then
		strNew = right(strNew, 8)
    end if
    
    HexAdd = strNew

End Function

Function getHexDec(strHex)

    Select Case strHex
    Case "0"
        getHexDec = 0
    Case "1"
        getHexDec = 1
    Case "2"
        getHexDec = 2
    Case "3"
        getHexDec = 3
    Case "4"
        getHexDec = 4
    Case "5"
        getHexDec = 5
    Case "6"
        getHexDec = 6
    Case "7"
        getHexDec = 7
    Case "8"
        getHexDec = 8
    Case "9"
        getHexDec = 9
    Case "A"
        getHexDec = 10
    Case "B"
        getHexDec = 11
    Case "C"
        getHexDec = 12
    Case "D"
        getHexDec = 13
    Case "E"
        getHexDec = 14
    Case "F"
        getHexDec = 15
    Case Else
        getHexDec = -1
    End Select
End Function

Function getDecHex(strHex)

    Select Case CInt(strHex)
    Case 0
       getDecHex = "0"
    Case 1
       getDecHex = "1"
    Case 2
       getDecHex = "2"
    Case 3
       getDecHex = "3"
    Case 4
       getDecHex = "4"
    Case 5
       getDecHex = "5"
    Case 6
       getDecHex = "6"
    Case 7
       getDecHex = "7"
    Case 8
       getDecHex = "8"
    Case 9
       getDecHex = "9"
    Case 10
       getDecHex = "A"
    Case 11
       getDecHex = "B"
    Case 12
       getDecHex = "C"
    Case 13
       getDecHex = "D"
    Case 14
       getDecHex = "E"
    Case 15
       getDecHex = "F"
    Case Else
       getDecHex = "Z"
    End Select
End Function

Function BinaryShift(strBinary, intPos)

    BinaryShift = Right(strBinary, Len(strBinary) - cint(intPos)) & _
		Left(strBinary, cint(intPos))

End Function

Function BinaryXOR(strBin1, strBin2)

    Dim strBinaryFinal
    Dim intPos
    
    For intPos = 1 To Len(strBin1)
        Select Case Mid(strBin1, cint(intPos), 1)
        
        Case Mid(strBin2, cint(intPos), 1)
            strBinaryFinal = strBinaryFinal & "0"
        Case Else
            strBinaryFinal = strBinaryFinal & "1"
        End Select
    Next
    
    BinaryXOR = strBinaryFinal
    
End Function

Function BinaryOR(strBin1, strBin2)

    Dim strBinaryFinal
    Dim intPos
    
    For intPos = 1 To Len(strBin1)
        If Mid(strBin1, cint(intPos), 1) = "1" Or Mid(strBin2, cint(intPos), 1) = "1" Then
            strBinaryFinal = strBinaryFinal & "1"
        Else
            strBinaryFinal = strBinaryFinal & "0"
        End If
    Next
    
    BinaryOR = strBinaryFinal
End Function

Function BinaryAND(strBin1, strBin2)

    Dim strBinaryFinal
    Dim intPos
    
    For intPos = 1 To Len(strBin1)
        If Mid(strBin1, cint(intPos), 1) = "1" And Mid(strBin2, cint(intPos), 1) = "1" Then
            strBinaryFinal = strBinaryFinal & "1"
        Else
            strBinaryFinal = strBinaryFinal & "0"
        End If
    Next
    
    BinaryAND = strBinaryFinal
End Function

Function BinaryNOT(strBinary)

    Dim strBinaryFinal
    Dim intPos
    
    For intPos = 1 To Len(strBinary)
        If Mid(strBinary, cint(intPos), 1) = "1" Then
            strBinaryFinal = strBinaryFinal & "0"
        Else
            strBinaryFinal = strBinaryFinal & "1"
        End If
    Next
    
    BinaryNOT = strBinaryFinal
    
End Function

Function HexBlockToBinary(strHex)

    Dim intPos
    Dim strTemp
    
    For intPos = 1 To Len(strHex)
        strTemp = strTemp & HexToBinary(Mid(strHex, cint(intPos), 1))
    Next
    
    HexBlockToBinary = strTemp
    
End Function
%>
OturumKontrol.asp
<%
'Eğer Kullanıcı Girişi Yapılmamışsa Login.asp ye yönlendireceğiz
IF NOT Session("Uyegirisi")="Tamamdir" THEN Response.Redirect("Login.asp")
%>