Hakinen Yeni Üye
Kayıt Tarihi: 01-Ağustos-2007 Ülke: Türkiye Gönderilenler: 1
|
Gönderen: 03-Ağustos-2007 Saat 13:58 | Kayıtlı IP
|
|
|
Arkadaşlar aşağodaki Anket kodunun Form kısmında aynı ankete 2 kez oy kullandırmamak için önlem var.
Ancak bu formdaki bilgilerin eklendiği kayıt bölümünde yok.
Haliyle anket aynı anda 100lerce sayfada açılıp oy kullandırılabiliyor..
Bunun için Formda yer alan IP Session ve Cookie kontrölünü nasıl bilgilerin eklendiği kısımda da yaptıtabiliriz ?
Kodlar aşağıda.
<%
On Error Resume Next
Response.Buffer = True
fff = f
if not fff = "yama" then
%>
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<base target="_self"> </head> <body topmargin="20" leftmargin="20" bgcolor="#9DBFE2">
<% end if
%>
<!-- #include file = "ilave.asp" -->
<% if not fff = "yama" then %>
<% bic () %> <br><br><br>
<% end if
Dim yuzde, anket, scnk, toplamOy, izin, digerAnk, SQL(10)
if REQUEST.QUERYSTRING( "a" ) <> "" Then If Not biseylerinkontrolu(REQUEST.QUERYSTRING( "a" )) = 0 Or _ Not IsNumeric(REQUEST.QUERYSTRING( "a" )) Then Response.redirect "default.asp"
SQL(1) = "SELECT anket_id, anket_basligi, anket_acilis_tarihi " &_ "FROM anket WHERE anket_id = "& eleme(REQUEST.QUERYSTRING( "a" )) &" ;"
elseif gosterilecek_anket_idSi <> "" then
SQL(1) = "SELECT anket_id, anket_basligi, anket_acilis_tarihi " &_ "FROM anket WHERE anket_id = "& gosterilecek_anket_idSi &" ;"
else
SQL(1) = "SELECT anket_id, anket_basligi, anket_acilis_tarihi " &_ "FROM anket ORDER BY anket.anket_id DESC ;"
end if
Set anket = ConnStr.Execute ( SQL(1) )
if anket.eof or anket.bof then 'gösterecek anket ya da ankey numarası kayıtlı değilse gerisi hikaye..
Response.write "Olmayan anket!.." Response.end
end if
SQL(2) = "SELECT scnk_id, anket_id, scnk_metni, scnk_oy FROM scnk " &_ "WHERE anket_id = "& anket( "anket_id" ) &" ORDER BY scnk.scnk_id ASC ;" 'en son eklenen anketi anasayfada götsterir.
Set scnk = ConnStr.Execute ( SQL(2) ) Dim aypibakisi Set aypibakisi = ConnStr.Execute ( "SELECT * FROM aypiler WHERE " &_ "ip = '"& Request.ServerVariables("REMOTE_ADDR") &"' AND anketaydi = "& anket( "anket_id" ) &" ;" )
if Request.Cookies( "anKet" )( ""& anket( "anket_id" ) &"" ) = "oyKullandi" or _ Session( "anKet" ) = anket( "anket_id" ) Or Not aypibakisi.eof then izin = false else izin = true 'eğer oykullanangil oyunu kullanmışsa bazı şeyleri gizleyeceğiz.
if izin = true then %> <script language="javascript"> <!-- buooo
function kabul(f) { if ( document.forms.oyVer.scnkOYat.checked == false ) { document.forms.oyVer.Gonder.disabled=true; return false; } else { document.forms.oyVer.Gonder.disabled=false;   ; return true; } }
// busuuu --> </script>
<body OnLoad="self.focus(); document.forms.oyVer.Gonder.disabled=true;" bgcolor="#9DBFE2" >
<% end if
SQL(3) = "SELECT SUM(scnk_oy) FROM scnk WHERE anket_id = "& anket( "anket_id" ) &" ;" Set toplamOy = ConnStr.Execute ( SQL(3) ) if izin = true then if fff = "yama" then Response.write "<form name=""oyVer"" method=""post""" &_ "action=""default.asp?i=oyAt&a="& gosterilecek_anket_idSi &""">" else Response.write "<form name=""oyVer"" method=""post"" action=""default.asp?i=oyAt"">" end if end if 'kullanıcımız oyunu kullanmamışsa yukarıda satırı işlet.
Response.write "<table border=""0"" cellspacing=""1"" cellpadding=""3""><tr><td></td><td colspan=""2"">" Response.write "<b>" & anket( "anket_basligi" ) & "</b> <i>("& anket( "anket_acilis_tarihi" ) &")</i><br><font size=""1"">Bu ankete</i> <b>"& FormatNumber(Int(toplamOy(0)),0) &"</b> <i>kişi tarafından oy verildi.</font>" Response.write "<hr size=""1"" color=""#C0C0C0""></td></tr>"
dim n, nid, renk, muse
do until scnk.eof 'seçeneklerin dibini görene kadar ilerle.
if toplamOy(0) = 0 then yuzde = 0
else yuzde = ((scnk( "scnk_oy" ) / toplamOy(0)) * 100) 'çubukların büyüklüğüne(ya da uzunluğuna) böyle karar veriyoruz. 'seçeneğin aldığı oy bölü toplam oy çarpı yüz
end if
Response.write "<tr><td valign=""top"">"
if izin = true then
Response.write "<input type=""radio"" id="""& scnk( "scnk_id" ) &""" onclick=""kabul(this)"" " &_ "name=""scnkOYat"" value="""& scnk( "scnk_id" ) &""">"
end If
n=n + 1 nid=right(n,1)
select case nid case "2","4","6","8" renk = "#FFFFFF" '1.renk case else renk = "#E1E0D9" '2. renk end Select
Response.write "</td><td bgcolor="""& renk &""" style=""padding-right: 10px;""" if izin = false Then Response.write "align=""right""" Response.write ">"
if izin = True Then Response.write "<label for="""& scnk( "scnk_id" ) &""">" set muse = new cilek
muse.yaza = scnk( "scnk_metni" ) muse.satirKacKarakter = 40 'kaç karakterden sonra alt satıra geçeceğini buradan ayarlıyoruz. muse.yazit
set muse = Nothing
if izin = True Then Response.write "</label>" if izin = false then 'ancak oy kullananlar yüzdeleri ve verilen oyları görebilecek.
Response.write "</td><td valign=""top"" bgcolor="""& renk &""" style=""padding-right: 30px;"">" Response.write "<img src=""krmz.gif"" width="""& FormatNumber(yuzde,3) + 1 &""" " Response.write "height=""12""> " Response.write "<font size=""1"">%"& FormatNumber(yuzde,1) &" ("& FormatNumber(scnk( "scnk_oy" ),0) &" oy)</font>" 'yüzde resimlerinin ve aldııkları oyların göründüğü yer. Response.write "</td></tr>"
end if
scnk.movenext loop if izin = true then 'oy kullanan bir daha oy kullanmasın diye "gönder" düğmesini kaldırıyoruz.
Response.write "<tr><td></td><td colspan=""2""><hr size=""1"" color=""#C0C0C0""><input name=""Gonder"" type=""submit""" &_ "value=""gönder / sonuçları göster"" class=""form1""></td></tr>"
end if
if izin = true then Response.write "</form>"
if izin = false then
Response.write "<tr><td></td><td colspan=""2""><hr size=""1"" color=""#C0C0C0""><font size=""1""><i>" Response.write "Daha önce oy kullandığınız için bi'daha oy kullanamazsınız." 'daha önceden oy kullanmış olanlara söylenecek söz. Response.write "</i></font></td></tr>"
end If Response.write "</table>"
if fff = "yama" then Response.write "<br>- <a href=""default.asp?a="& gosterilecek_anket_idSi &""">Diğer anketler</a>" end if
if not fff = "yama" then
Response.write "<h2>Diğer Anketler:</h2><hr size=""1"" width=""200"" align=""left"">"
if REQUEST.QUERYSTRING( "i" ) = "oyAt" then oyKaydet ()
SQL(6) = "SELECT anket_id, anket_basligi, anket_acilis_tarihi " &_ "FROM anket WHERE anket_id <> "& anket( "anket_id" ) &" ;" 'görünen anket hariç, diğer anketleri göstermek için. Set digerAnk = ConnStr.Execute ( SQL(6) )
do until digerAnk.eof
Response.write "<img src=""rats.gif"" align=""absbottom""> <a href=""default.asp?a=" & digerAnk( "anket_id" ) & """>" Response.write "" & digerAnk( "anket_basligi" ) & "" Response.write "</a> <i>("& digerAnk( "anket_acilis_tarihi" ) &")</i> <br>"
digerAnk.movenext : loop
Response.write "<hr size=""2"" width=""340"" align=""left"" color=""#000000"">"
end if
Private Sub oyKaydet ()
if Request.Form( "scnkOYat" ) = "" then Response.redirect "default.asp"
Dim anketiNe
SQL(4) = "SELECT * FROM scnk WHERE scnk_id = "& Request.Form( "scnkOYat" ) &" ;" Set anketiNe = ConnStr.Execute ( SQL(4) )
SQL(5) = "UPDATE scnk SET scnk_oy = (scnk_oy + 1) WHERE scnk_id = "& Request.Form( "scnkOYat" ) &"" ConnStr.Execute ( SQL(5) ) 'böylece oy sayısını bir artırdık.
Response.Cookies( "anKet" )( ""& anketiNe( "anket_id" ) &"" ) = "oyKullandi" 'kullanan bir daha kullanmasın diye cookie attık.
Response.Cookies( "anKet" ).expires = Now() + 365 'attığımız coookie'yi bir yıl - 6 saat sonra sileceğiz.
Session( "anKet" ) = anketiNe( "anket_id" ) 'cookie'yi silerse ardında Session göz-kulak olsun.
Set anketiNe = ConnStr.Execute ( "INSERT INTO aypiler (ip, anketaydi) VALUES " &_ "('"& Request.ServerVariables("REMOTE_ADDR") &"', "& anketiNe( "anket_id" ) &") ;" ) 'anketin, yeni sürümünün, yeni sürümünün çıkmasının asıl nedeni olan ip kontrolü yapmamasını kapatmış olduk arada.
end If
if fff = "yama" then
Response.redirect "default.asp?a="& Int( gosterilecek_anket_idSi ) &""
else
Response.redirect REQUEST.SERVERVARIABLES( "HTTP_REFERER" ) 'gelinen sayfaya götürme işlemi.
end if
End Sub %>
<% if not fff = "yama" then sahip ()
%>
<% if not fff = "yama" then
%>
</body> </html>
<% end if %>
|