PJBlog3优化——单击自动输入验证码
作者:dudo 来源:dudo博客 发布时间:2009-05-17 11:03:00
从PJBlog 2.7开始,验证码的功能就很好很强大了,但是同时也给手工输入带来了不小的麻烦——经常输错。之前我写了一个《自己写的一个PJBlog中可以双击输入验证码的修改》,不过在那篇文章里用的方法是在页面底部加一个iframe来实现的双击,在PJBlog 3里面已经有了AJAX的功能,所以完全不用那么麻烦了。
一、不用担心失去保护机制
当然很多人的疑问就是,这样做的话似乎验证码的保护机制就完全失去了意思。其实不然,所有的灌水机都是一段程序代码,由于验证码还是以图片的形式存在,只有点击之后才能获得数字形式,所以灌水机很难轻松模拟这个单击的动作。当然,对于手动的灌水行为无论是哪种验证码保护方式都是避免不了的,除非你限制发表留言的间隔时间。
二、改进步骤:
1、在common/ajax.js的最后面添加如下代码:
function get(url,obj1,obj2)
{
var xmlhttp = CreateXMLHTTP();
if(!xmlhttp)
{
alert("你的浏览器不支持XMLHTTP!!");
return;
}
xmlhttp.onreadystatechange=requestdata;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
function requestdata()
{
fopen(obj1);
echo(obj1,"<img src='images/loading.gif'>");
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
if(obj1!=obj2){fclose(obj1);};
$(obj2).value = xmlhttp.responseText;
}
}
}
}
2、在根目录下的Action.asp中找到
If request.QueryString("action") = "checkAlias" then
替换为
'-------------- [code] -----------------
If request.QueryString("action") = "code" Then
If ChkPost() Then
Dim code
code = Session("GetCode")
Response.Write code
End If
'-------------- [Alias] -----------------
ElseIf request.QueryString("action") = "checkAlias" then
3、更改模板文件:在template/static.htm中找到(注:为了排版方便,下面的代码有断行和空格)
<input name="validate" type="text" size="4" class="userpass" maxlength="4"
onfocus="this.select()"/>
<img id="vcodeImg" src="about:blank" onerror="this.onerror=null;this.src='common/getcode.asp?s='+Math.random();"
alt="验证码" title="看不清楚?点击刷新验证码!" style="margin-right:40px;cursor:pointer;width:40px;height:18px;margin-bottom:-4px;margin-top:3px;"
onclick="src='common/getcode.asp?s='+Math.random()"/>
替换为
<input id="validate" name="validate" type="text" size="4" class="userpass" maxlength="4"
onfocus="this.select()" onclick="get('action.asp?action=code','c','validate')" />
<img id="vcodeImg" src="about:blank"
onerror="this.onerror=null;this.src='common/getcode.asp?s='+Math.random();"
alt="验证码" title="看不清楚?点击刷新验证码!" style="margin-right:40px;cursor:pointer;
width:40px;height:18px;margin-bottom:-4px;margin-top:3px;"
onclick="src='common/getcode.asp?s='+Math.random()"/><span id="c">提示:单击验证码</span>
如果你使用的是动态或者半静态模式,那么你需要在class/cls_article.asp中将上面的代码替换为
<input id="validate" name="validate" type="text" size="4" class="userpass" maxlength="4"
onfocus="this.select()" onclick="get('action.asp?action=code','c','validate')" />
<%=getcode()%><span id="c">提示:单击验证码</span>
至此,修改完毕了。如果大家有什么好的意见可以给我留言:)


猜你喜欢
- 最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现其中在zip_long
- 对于access数据库的日期时间类型字段存储的日期,直接从数据库中读出显示的效果是带时间的如,2009-06-13 18:00 ,如果只是希
- 废话不多说了,直接上代码吧!import numpy as nparray = np.array([0, 0])for i in range
- 本文实例讲述了GO语言筛选法求100以内的素数。分享给大家供大家参考。具体实现方法如下:思路:找出一个非素数就把它挖掉,最后剩下就是素数。下
- 本文实例讲述了JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能。分享给大家供大家参考,具体如下:单例模式单例模式
- 加密解密字符串的asp函数,如用于ASP链接地址栏参数的加密,看代码就明白。比如:show.asp?id=DB26538FA54C70E1E
- 身份证校验码的计算方法1、将前面的身份证号码17位数分别乘以不同的系数。第i位对应的数为[2^(18-i)]mod11。从第一位到第十七位的
- 1、如何认识可视化?需要指出的是,虽然不同绘图工具包的功能、效果会有差异,但在常用功能上相差并不是很大。与选择哪种绘图工具包相比,更重要的是
- 安装方法一: ①进入python文件夹执行指令(前提是支持pip指令):pip3 install Beautifulsoup4②回
- 前言由于两个表同一字段类型不一样,甚至是编码类型不一样也会导致查询不走索引,速度会很慢。强转直接举例说明:A 表id是int 类型 &nbs
- 1.打包项目期间遇到的坑,提前说下,避免重复工作。1.1打包的app出现白屏。出现原因:路径不对,需要改config\index.js解决办
- SQL Server 2005相对于SQL Server 2000做了很大的改进,许些新特性是非常实用的。本文中将通过几个具体示例进行详细的
- 简介深度学习需要熟悉使用一个框架,本人选择了TensorFlow,一边学习一边做项目,下面简要介绍TensorFlow中的基本常量、变量和运
- 前言PyTorch是一个开源的深度学习框架,基础教学从开始安装学起,一步一个脚印。提示:以下是本篇文章正文内容,下面案例可供参考一、Pyor
- 话说网站首页是用.NET语言写的,而二级栏目页却是用ASP写的,然后再配上众多全手工的静态专题页,整个网站形成了一个大杂烩。想要在这大杂烩中
- 一套javascript摇奖程序,随机6+1选号码,类似游戏彩票摇奖效果,实时滚动。截图:<style>.inp{ width:
- 这也许是学习一门语言时大家都会问的一个问题,其实我个人认为无所谓哪个最好,关键在于哪个用着顺手,方便。还有很多人乐于去做排名,去看排名,哪个
- commit 粒度commit message 在工程开发中有很重要的作用。一个好的 message 不仅仅能够降低 reviewer 的心
- 1、什么是全局变量?在Python中,全局变量指的是可以作用于函数内部和外部的变量。在这里有两种情况:在函数的外部定义和内部定义添加glob
- 本文实例讲述了python飞机大战pygame碰撞检测实现方法。分享给大家供大家参考,具体如下:目标了解碰撞检测方法碰撞实现01. 了解碰撞