原文出处:http://www.maidaole.com/index.php?op=ViewArticle&articleId=27&blogId=1
转载请标明出处,谢谢!
现在很多网站在用户登录的时候都增加了验证码功能,目的无非就是安全,避免程序机器人的骚扰。
但是现在很多网站是单纯使用ASP或者PHP来实现图片的显示,一般使用<img src="img.php?id=2222">这类的形式,这种表面上是增加了一层校验,其实程序机器人只要增加一个截取就可以获得这个id数字,从而使这种校验失去作用。
今天我用js+php的方式,主要目的是把验证的内容在页面的源码中不显示出来,这样才能真正实现到拒绝机器人的目的。
js代码主要如下:
<script language="javascript" >
function RndNum(n)
{
var rnd="";
for(var i=0;i<n;i++)
rnd+=Math.floor(Math.random()*10);
return rnd;
}
var rndnum = RndNum(4);
//alert(rndnum);
</script>
这个代码生成一个4位的数字校验码。
在FORM中用下面的方式来调用
<script language=javascript>
document.write('<img src="img.php?id=' + rndnum + '">');
</script>
<input type="text" name="authinput" size="6" value="">
增加一个隐含变量
<script language=javascript>
document.write('<input type="hidden" name="authnum" value="' + rndnum + '">');
</script>
<input name="Submit" type="submit" onClick="return check_form(this.form)" value="确定">
提交判断代码如下:
<script language="javascript">
<!--
function check_form(form)
{
if(form.authinput.value == "") { alert('请输入验证码');form.authinput.focus(); return false;}if(form.authinput.value != form.authnum.value) { alert('验证码输入失败');form.authinput.focus(); return false;}
}
//-->
</script>
这样就可以实现了。img.php就自己写吧,不给代码了。
更多内容见:http://www.maidaole.com
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=747062