語言為ASP,由於論壇有單一使用者,卻能連續投票無數次的缺陷
,打算從IP著手防止灌票,所以想出了這寫法:
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & Server.
MapPath("DATA/main.mdb")
sql = "select * from online where online_ip ='" & ip & "'"
ip=Request.ServerVariables("REMOTE_ADDR")
SET rs = Server.CreateObject("ADODB.Recordset")
rs.Open Sql,conn,1,3
if ip=rs("online_ip") then
founderr=true
errmsg=errmsg+"
"+"
2007-02-05 21:44:00 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 ➔ 程式設計
嗨。你的 if ip=rs("online_ip") then 這一列從測試觀點會有幾種例外:
1. Recordset rs 的 online_ip 回傳值可能不只一個,因為你的 sql 並無限定單一紀錄回傳。可以用
sql = "select distinct * from online where online_ip ='" & ip & "'"
2. rs("online_ip") 的型別是什麼?電腦是不是還沒有跑到操作子就因為例外跳出?
3. rs("online_ip") 回傳會不會沒有值?
建議:
1. online 這個 table 應該加上 time_stamp 紀錄,然後把 time_stamp 紀錄也放入判斷。意思是允許管理員設定多長時間從一台相同電腦不能重複投票。
2. 根據 ip 屏閉投票有其限制,例如使用者在大賣場、網咖等等公開電腦登入論壇投票忘記登出。
2007-02-10 21:23:40 · answer #1 · answered by mh 7 · 0⤊ 0⤋