在php等等程序开发的系统中很多都会用到验证码,这里给大家分享一个php验证码生成和使用的方法哈,属本博客原创绝非网上转载,也绝对可以用的哈。此验证码是四位的由数字和小写字母组成。采用session认证的哈
<?php session_start();//启动session $Arr="0123456789abcdefghijklmnopqrstuvwxyz"; for($i=1; $i<=4;$i++) { $rand.=$Arr[rand(0,35)];//累加四个随机数 这里的取值范围是 0-9A-F } //建一个图片 $im=imagecreatetruecolor(60,22);//宽度,高度 //设置验证码背景色 $bg=imagecolorallocate($im,246,246,246);//第一次为背景色 imagefill($im,0,0,$bg);//使用背景色 $tc=imagecolorallocate($im,2,2,225);//第二次为前景色 //画字符串 imagestring($im,6,rand(3,20),rand(1,4),$rand,$tc); //图片,随机字体(系统默认的六种),x坐标,y坐标,验证字符,前景色 //画线条 for($j=0;$j<3;$j++) { $tg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imageline($im,rand(2,60),rand(2,20),rand(8,58),rand(2,20),$tg); } $_SESSION["qige_login_yzm"]=$rand;//存储验证码 //输出图片 header("Content-type:image/jpeg"); imagejpeg($im); ?>
将这部分代码保存为yzm.php , 然后在需要展示验证码的地方假如一句代码
<img src="yzm.php" width="60" title="点击刷新验证码" id="yzm" onclick="RefreshImage('yzm');" style="cursor:pointer;" height="22"/>
直接将src地址赋值为php文件地址,宽度和高度参考yzm.php代码中的图片宽度和高度,这里给了一个id和onclick事件,这样就能通过点击验证码图片刷新验证码了。具体刷新方法如下
<script language="javascript"> function RefreshImage(id) { document.getElementById(id).src ='yzm.php?'+Math.random(1); } </script>
最后讲讲怎么判断验证码是否输入正确,因为验证码在生成的时候已经将验证码写入了session,所以当用户通过表单(比如用post方法)传递过来验证码的时候直接用 $_POST["验证码输入框的name属性值"]和$_SESSION["qige_login_yzm"];进行比较看是否一样,相同则正确,否则错误,呵呵 这当中的过程大家可以再晚上下。
验证码效果展示