海外邮件中继,海外退信中继,美国高速VPS,不限流量VPN,邮局维护和管理,邮件网关,EMOS邮件中继,POSTFIX邮件中继,Winwebmail邮件中继,Winmail邮件中继,DBMail邮件中继,JDMail邮件中继,Exchange邮件中继,MDaemon邮件中继 淘宝店:http://shantan.taobao.com 云邮科技官网:www.yunrelay.com
【字体设置:大 中 小】
这个功能的修改是我最喜欢的一个,因为很人性化,按照浏览习惯,访客们一般都是进入日志页后把日志看完才会去发表评论,但PJblog的验证码是打开日志页面就直接显示了验证码,等访客把文章看完再去评论的时候,验证码的时效已经过期了,就会导致发表评论时验证码错误,这样辛辛苦苦写的评论就有可能丢失,最重要的是有可能访客就会放弃了评论。将验证码修改成点击输入框才显示验证码,这样就会很好的解决这个问题,并且能增强访客的浏览体验。关于这个的修改有很多的版本,我参考了一些,最终结合PJblog的验证码结构,修改出最简单的一个方法,这里要谢谢静脉,他写的代码都很简洁,是我很喜欢的。
不多说了,下面是具体的修改方法:
打开common\function.asp文件,找到程序代码: [ 复制代码到剪贴板 ]
getcode= "<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()""/>"
End Function
替换为程序代码: [ 复制代码到剪贴板 ]
getcode= "<span id=""divcode"" style=""margin-left:6px;color:#990000"">点击输入框即可显示验证码</span>" & vbcrlf &_
"<script type=""text/javascript"">" & vbcrlf &_
"document.getElementsByName(""validate"")[0].onfocus=function(){" & vbcrlf &_
"var validate_obj = document.getElementById(""divcode"");" & vbcrlf &_
"var validate_text = validate_obj.innerHTML;" & vbcrlf &_
"if (validate_text==""点击输入框即可显示验证码""){" & vbcrlf &_
"validate_obj.innerHTML = ""<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:2px;\"" onclick=\""src='common/getcode.asp?s='+Math.random()\""/>"";}}" & vbcrlf &_
"</script>" & vbcrlf
End Function
Function link_getcode()
link_getcode= "<span id=""divcode"" style=""margin-left:6px;color:#990000"">点击输入框即可显示验证码</span>" & vbcrlf &_
"<script type=""text/javascript"">" & vbcrlf &_
"document.getElementsByName(""link_validate"")[0].onfocus=function(){" & vbcrlf &_
"var validate_obj = document.getElementById(""divcode"");" & vbcrlf &_
"var validate_text = validate_obj.innerHTML;" & vbcrlf &_
"if (validate_text==""点击输入框即可显示验证码""){" & vbcrlf &_
"validate_obj.innerHTML = ""<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:2px;\"" onclick=\""src='common/getcode.asp?s='+Math.random()\""/>"";}}" & vbcrlf &_
"</script>" & vbcrlf
End Function
因为PJblog的所有有验证码的地方的调用基本上都一样,只有bloglink页面不同,所以我们还要对这个页面进行修改,打开bloglink.asp,找到 getcode() ,替换成 link_getcode() 就OK了,切记别忘了这一步!
另外,根据大家的输入习惯,在评论的时候都是从上至下的填写输入框,而PJblog的验证码输入框是在评论框的上面,这样就会先点击了验证码输入框,提前显示的验证码,并且自v2.7版以后,PJblog的验证码有点击刷新验证码的功能,这里有个小BUG,访客填写完验证码之后再点击评论框时,验证码会再次刷新,这样又要重新输入验证码,不注意的访客,不重新输入,发表评论后就会验证码错误,所以我们要将验证码移到评论框下面,完美解决评论验证码的问题。
打开cls_article.asp,找到程序代码: [ 复制代码到剪贴板 ]
把上面这行代码剪切到下面这行代码的上面程序代码: [ 复制代码到剪贴板 ]
这样就OK了,除了引用链接的验证码(这个地方个人认为没必要修改),所有页面有验证码的地方都点击输入框显示验证码了。
发表评论 - 不要忘了输入验证码哦!