IsaacZ 发表于 2006-9-3 08:14:17

防止注册机的方法 修改简单 不改模版 不增加回答问题

by: zhangjint5(动网论坛)
刚刚没事一直盯着IIS日志,突然想到一个防止注册机的办法,拿出来与大家共享。如果有人已经发过类似思路的方法纯属巧合。


正常用户注册的时候通常会有浏览论坛,浏览帖子等操作。而注册机注册的时候直接从 Dv_GetCode.asp 取得验证码,从 reg.asp 取得注册表单之类的,在向 reg.asp 发送数据进行注册。也就是说注册机注册的时候仅访问过少量几个文件。根据这个特征,可以做如下修改:
在 dispbbs.asp 的第一个 <% 下面加入代码:
Session("AllowReg") = 1
在 reg.asp 的第一个 <% 下面加入代码:
If Session("AllowReg") <> 1 Then
Response.Write ("注册前请先浏览论坛任意一个帖子")'(你也可以改成跳转到某个帖子)
Response.End
End if
(修改完之后别忘了在 管理-->用户注册管理-->修改注册设置 里提交一下再退出,否则会一直提示“注册前请先浏览论坛任意一个帖子”)
这样,注册机直接访问 reg.asp 文件,由于没有访问过帖子(即dispbbs.asp) 所以 Session("AllowReg") 不等于 1 ,reg.asp 就会输出 Response 的内容并中断运行。


大家还可以稍微变通一下,比如:
在 announcements.asp 的第一个 <% 下面加入代码:
Session("AllowReg") = 1
在 reg.asp 的第一个 <% 下面加入代码:
If Session("AllowReg") <> 1 Then
Response.Write ("注册前请先浏览论坛公告")
Response.End
End iF


问:“注册前请先浏览论坛任意一个帖子”这句话怎么才可以使用弹出对话框进行显示?
答:把 Response.Write 那句替换成
Response.Write("<script language=""javascript"">" & VbCrLf)
Response.Write("<!--" & VbCrLf)
Response.Write("alert (""注册前请先浏览论坛任意一个帖子"");" & VbCrLf)
Response.Write("window.location.href = ""http://bbs.dianbo.org/"";" & VbCrLf)
Response.Write("// ->" & VbCrLf)
Response.Write("</script>" & VbCrLf)
(注意原来下面有个 Response.End 别漏掉了)
这样就可以出现对话框,随后跳转到 http://bbs.dianbo.org/。你可以替换成其它地址!


问:怎样改成跳转到专用贴?(例如:它必须访问某一个固定的贴子)
答:如果必须浏览指定帖子,修改 dispbbs.asp 的时候把 Session("AllowReg") = 1 改成以下内容直接跳转到某个帖子:
'(以 boardID 为2,ID 为 18 的帖子为例子。你可以可从浏览器地址栏看你要的帖子的 boardID 和 ID)
If Request.QueryString.Item("boardID") = 2 And Request.QueryString.Item("ID") = 18 Then
Session("AllowReg") = 1
End If
response那几行作相应变动。 (之后别忘了在管理-->用户注册管理-->修改注册设置里提交一下再退出.)
页: [1]
查看完整版本: 防止注册机的方法 修改简单 不改模版 不增加回答问题