PHP + JS 实现验证码功能

知道91 | PHP | 2014-04-17 | 阅读:7371

验证码是网站防止恶意攻击最常用的手段,怎样使用PHP来生成验证码呢,下面就直接上例子

首先给出生成验证码的PHP代码:


将上面的代码放在一个单独的php文件中,如:auth_code.php,最好不要讲验证码的代码放到其他文件中间,因为验证码图片的输出之前,不能再输出其他的内容,不然验证码的输出就是乱码,而不是图片。

既然知道了验证码的生成代码,只要访问auth_code.php输出的就是一张验证码的图片,那么怎样显示在前台网页呢,很简单,利用img图片标签,如下面的内容:


这样在网页中就可以加载出验证码了。

当有了验证码,应该怎样去验证呢,我们可以通过js去验证用户输入的验证码是否正确。方法当然就是用户输入的验证码和正确的验证码对比了,用户的验证码在js中很容易得到,那么正确的验证码是什么呢,我们当然不会去图像分析验证码的图片,还记得上面生成验证码的代码吧:

$_SESSION['SESSION_VALIDATE_CODE'] = $authnum.'';

是的,我们已经将正确的验证码存在了session中,只要读取session就可以了,所以我们需要再请求一次,去或者session的验证码,代码如下:


把上面的代码存在get-session.php的文件中,使用jquery的ajax请求就get-session.php就可以获得验证码的值,然后将其与用户输入的验证码对比就可以知道验证码是否正确。

刷新验证码

刷新验证码,就是重新在请求一次生成验证码的代码,道理很简单,使用js就可以轻易做到,代码如下:

function auth_code_reload(){
	var change=document.getElementById('auth_code');
	change.src="/auth_code.php";
}

只要把auth_code_reload函数绑定到js点击事件就可以做到点击刷新验证码了。