ToLGMaN
14.02.2008, 17:05
Merhabalar.Yine geçende bir forumda soruldu ve yine cevabını buradan vermek istedim.Çünkü bizim amacımız herkese faydalı olabilmek.Olay çok basit.Bir form girişinde bir alan daha belirtiyorsunuz.Örneğin bir üye girişinde genelde 2 form alanı vardır.Kullanıcı Adı & şifre buna bir de Güvenlik alanı ekliyoruz ve diğer sayfada güvenlik şifresini kontrol ediyoruz.Uygulama 2 asp dosyasından oluşmakta.Kod üzerinde küçük oynamalarla kendinize göre düzenleyebilirsiniz.
Form.asp
___________________________________________________________
<%
'Güvenlik parolasının uzunluğunu 1. satırdan
'Parola içinde harf olup olmayacağını 2. satırdan
'Parola içinde sayı olup olmayacağını 3. satırdan
'Ayarlıyoruz bu arada 1 evet 2 hayır anlamına geliyor (2. & 3. satırlar için)
ParolaUzunluk=5
strHarf=1
strSayi=1
'Burada karmaşık bir şifre üretecek fonksiyonumuz var
Function SifreUret(KarekterMiktari, RakamOlacakmi, strHarf)
Harfler=Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z")
Rakamlar=Array("1","2","3","4","5","6","7","8","9")
If RakamOlacakmi = "1" AND strHarf = "1" Then
Kontrol = "3"
Elseif RakamOlacakmi = "1" Then
TempK = "2"
Elseif strHarf = "1" Then
TempK = "1"
End if
i = DatePart("s", Now)+2 : do while i > j : j=DatePart("s", Now) : loop
Randomize Timer
For I = 1 To INT(KarekterMiktari)
If Kontrol = "3" Then TempK = Int((Rnd * 2) + 1)
If TempK = 1 Then
TempPass = TempPass & "" & Harfler(Int((Rnd * 25) + 0))
Elseif TempK = 2 Then
TempPass = TempPass& "" & Rakamlar(Int((Rnd * 9) + 0))
End if
Next
SifreUret = TempPass
End Function
'şifre üreten fonksiyonumuz bitiyor
'Üretilen şifreyi Ekrana Yazdıracağımız Fonksiyonumuz
Function ParolaYazdir(Veri)
for i = 1 to Len(Veri) : TH = Mid(Veri,i,1)
response.write "" & TH &""
next
end function
'Bu Fonksiyonumuzda Bitiyor
'Session nesnemize şifremizi atıyoruz & sonra yazdırıyoruz
Session("Parola") = SifreUret(ParolaUzunluk,strSayi,strHarf)
ParolaYazdir Session("Parola")
%>
<FORM ACTION="kontrol.asp" METHOD="get">
Lütfen yukarıdaki güvenlik kodunu aşağıdaki alana yazınız.<BR>
<INPUT TYPE="text" NAME="frmParola" SIZE="20"><INPUT TYPE="submit">
</FORM>
Gördüğünüz gibi form.asp sayfasının yapısı bu şekilde.Fonksiyonları anlamasanızda olur önemli olan ben bu sayfada işlemi normal yazı şeklinde yazdırdım.Siz belki resim şeklinde yazdırmak isteyebilirsiniz.Ya da sitenizin tasarımına uygun bir hale getirmek isteyebilirsiniz.ışte bu durumları "ParolaYazdir" Fonksiyonundan düzenliyoruz.Ve orda görmüş bulunduğunuz TH kelimesi her bir parola karakterini temsil ediyor.Yani bunu resimle yapmak isterseniz oraya;
<img src=resim_"& TH &".gif>
gibi bir ifade kullanmanız gerekecek.Peki buradan gelen formu nasıl kontrol edeceğiz.
Kontrol.asp
___________________________________________________________
<table width="100%">
<tr>
<td width="50%">Yazmanız Gereken Parola</td>
<td width="50%"><%=Session("Parola")%></td>
</tr>
<tr>
<td width="50%">Yazdığınız Parola</td>
<td width="50%"><%=request("frmParola")%></td>
</tr>
<tr>
<td width="100%" colspan="2"><b><%
If Request("frmParola")=Session("Parola") Then
Response.Write "<font size=""5"" color=""#008000"">Denetimi Geçti</font>"
Else
Response.Write "<font size=""5"" color=""#FF0000"">Denetimi Geçemedi</font>"
End If
%></b>
</td>
</tr>
</table>
ışte bu kadar.
Form.asp
___________________________________________________________
<%
'Güvenlik parolasının uzunluğunu 1. satırdan
'Parola içinde harf olup olmayacağını 2. satırdan
'Parola içinde sayı olup olmayacağını 3. satırdan
'Ayarlıyoruz bu arada 1 evet 2 hayır anlamına geliyor (2. & 3. satırlar için)
ParolaUzunluk=5
strHarf=1
strSayi=1
'Burada karmaşık bir şifre üretecek fonksiyonumuz var
Function SifreUret(KarekterMiktari, RakamOlacakmi, strHarf)
Harfler=Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z")
Rakamlar=Array("1","2","3","4","5","6","7","8","9")
If RakamOlacakmi = "1" AND strHarf = "1" Then
Kontrol = "3"
Elseif RakamOlacakmi = "1" Then
TempK = "2"
Elseif strHarf = "1" Then
TempK = "1"
End if
i = DatePart("s", Now)+2 : do while i > j : j=DatePart("s", Now) : loop
Randomize Timer
For I = 1 To INT(KarekterMiktari)
If Kontrol = "3" Then TempK = Int((Rnd * 2) + 1)
If TempK = 1 Then
TempPass = TempPass & "" & Harfler(Int((Rnd * 25) + 0))
Elseif TempK = 2 Then
TempPass = TempPass& "" & Rakamlar(Int((Rnd * 9) + 0))
End if
Next
SifreUret = TempPass
End Function
'şifre üreten fonksiyonumuz bitiyor
'Üretilen şifreyi Ekrana Yazdıracağımız Fonksiyonumuz
Function ParolaYazdir(Veri)
for i = 1 to Len(Veri) : TH = Mid(Veri,i,1)
response.write "" & TH &""
next
end function
'Bu Fonksiyonumuzda Bitiyor
'Session nesnemize şifremizi atıyoruz & sonra yazdırıyoruz
Session("Parola") = SifreUret(ParolaUzunluk,strSayi,strHarf)
ParolaYazdir Session("Parola")
%>
<FORM ACTION="kontrol.asp" METHOD="get">
Lütfen yukarıdaki güvenlik kodunu aşağıdaki alana yazınız.<BR>
<INPUT TYPE="text" NAME="frmParola" SIZE="20"><INPUT TYPE="submit">
</FORM>
Gördüğünüz gibi form.asp sayfasının yapısı bu şekilde.Fonksiyonları anlamasanızda olur önemli olan ben bu sayfada işlemi normal yazı şeklinde yazdırdım.Siz belki resim şeklinde yazdırmak isteyebilirsiniz.Ya da sitenizin tasarımına uygun bir hale getirmek isteyebilirsiniz.ışte bu durumları "ParolaYazdir" Fonksiyonundan düzenliyoruz.Ve orda görmüş bulunduğunuz TH kelimesi her bir parola karakterini temsil ediyor.Yani bunu resimle yapmak isterseniz oraya;
<img src=resim_"& TH &".gif>
gibi bir ifade kullanmanız gerekecek.Peki buradan gelen formu nasıl kontrol edeceğiz.
Kontrol.asp
___________________________________________________________
<table width="100%">
<tr>
<td width="50%">Yazmanız Gereken Parola</td>
<td width="50%"><%=Session("Parola")%></td>
</tr>
<tr>
<td width="50%">Yazdığınız Parola</td>
<td width="50%"><%=request("frmParola")%></td>
</tr>
<tr>
<td width="100%" colspan="2"><b><%
If Request("frmParola")=Session("Parola") Then
Response.Write "<font size=""5"" color=""#008000"">Denetimi Geçti</font>"
Else
Response.Write "<font size=""5"" color=""#FF0000"">Denetimi Geçemedi</font>"
End If
%></b>
</td>
</tr>
</table>
ışte bu kadar.