• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用图像处理技术生成验证码(PHP图形图像的典型应用教程3)

php 搞代码 4年前 (2022-01-22) 24次浏览 已收录 0个评论

使用图像处理技术生成验证码(PHP图形图像的典型应用教程3)

验证码功能的实现方法很多,有数字验证码、图形验证码和文字验证码等。在本节中介绍一种使用图像处理技术生成的验证码。

在上一篇文章《如何使用GD2函数在图片上添加文字(PHP图形图像的典型应用教程2)》中,我们介绍了如何在图片中添加文字的介绍,那么我们今天继续给大家介绍如何使用图像技术生成验证码。

下面介绍使用图像处理技术生成验证码,具体代码如下:

<?phpsession_start();// 告诉浏览器,这个文件,是一个png图片header('Content-type: image/png');// 创建图像$image = imagecreatetruecolor(50,20);// 填充颜色 - ps里的点击画布填色imagefill($image,0,0,imagecolorallocate($image,149,188,205));//加入干扰象素 , 循环100次for ($i = 0; $i < 100; $i++) {    $randcolor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));//画像素点函数    imagesetpixel($image, rand(1, 55), rand(1,18), $randcolor);}// 设置颜色$red = imagecolorallocate($image, 255,255,255);$code = "";for( $i=1; $i <=4; $i++){    $rand_code = rand(1,9); // 生成1-9的随机数    imagestring($image, 5, 5+($i-1)*10, 2, $rand_code,$red); // 将文字写入图片    $code .= $rand_code;}// 生成图片imagepng($image);// 销毁图片, 释放内存imagedestroy($image);?>

输出结果为:

上面是最简单的一个生成验证码的实例,下面我们介绍一个在日常开发中紧张用到的实例。具体步骤如下:

(1)创建一个checks.php文件,在该文件中使用GD2函数创建一个4位的验证码,并且将生成的验证码保存在Session变量中,代码如下:

<?phpsession_start();          //初始化Session变量header("content-type:image/png");        //设置创建图像的格式$image_width=70;                          //设置图像宽度$image_height=18;                          //设置图像高度srand(microtime()*100000);                //设置随机数的种子for($i=0;$i<4;$i++){                      //循环输出一个4位的随机数    $new_number.=dechex(rand(0,15));}$_SESSION[check_checks]=$new_number;       //将获取的随机数验证码写入到Session变量中$num_image=imagecreate($image_width,$image_height);    //创建一个画布imagecolorallocate($num_image,255,255,255);         //设置画布的颜色<p style="color:transparent">本文来源gao!%daima.com搞$代*!码$网3</p><strong>搞代gaodaima码</strong>for($i=0;$i<strlen($_SESSION[check_checks]);$i++){     //循环读取    Session变量中的验证码$font=mt_rand(3,5);                                //设置随机的字体$x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标$y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标$color=imagecolorallocate($num_image,mt_rand(0,100),    mt_rand(0,150),mt_rand(0,200)); //设置字符的颜色imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);   //水平输出字符}imagepng($num_image);              //生成PNG格式的图像imagedestroy($num_image);          //释放图像资源?>

在上面的代码中,对验证码进行输出时,每个字符的位置、颜色和字体都是通过随机数来获取的,可以在浏览器中生成各式各样的验证码,还可以防止恶意用户攻击网站系统。

(2)创建一个用户登录的表单,并调用checks.php文件,在表单页中输出图像的内容,提交表单信息,使用if条件语句判断输入的验证码是否正确。如果用户填写的验证码与随机产生的验证码相等,则提示"用户登录成功!",代码如下:

<?phpsession_start();           //初始化Sessionif($_POST["Submit"]!=""){    $checks=$_POST["checks"];        //获取验证码文本框的值    if($checks==""){           //如果验证码的值为空,则弹出提示信息        echo "<script> alert('验证码不能为空');window.location.href='index.php';</script>";    }//如果用户输入验证码的值与随机生成的验证码的值相等,则弹出登录成功提示    if($checks==$_SESSION[check_checks]){        echo "<script> alert('用户登录成功!');window.location.href='index.php';</script>";    }else{            //否则弹出验证码不正确的提示信息        echo "<script> alert('您输入的验证码不正确!');window.location.href='index.php';</script>";    }}?>

大家可以在自己的电脑上试一试,这里就不贴出图片了,关于使用图像处理技术生成验证码的内容就介绍到这里了,下面我们将为大家介绍《使用GD2函数绘制几何图形(PHP图形图像的典型应用教程4)》!

以上就是使用图像处理技术生成验证码(PHP图形图像的典型应用教程3)的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用图像处理技术生成验证码(PHP图形图像的典型应用教程3)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址