• PHP生成图形验证码


    PHP生成图形验证码

    效果:随机生成6位验证码,100个干扰的黑点,一条干扰线

    代码:image.php(生成验证码)和check.php(验证验证码是否输入正确)

    效果图详见代码下面的截图

    image.php

    1. <?php
    2. session_start(); //启动session
    3. header('Content-type: image/gif'); //输出头信息
    4. $image_w=100; //验证码图形的宽
    5. $image_h=25; //验证码图形的高
    6. $number=range(0,9); //定义一个成员为数字的数组
    7. $character=range("Z","A"); //定义一个成员为大写字母的数组
    8. $result=array_merge($number,$character); //合并两个数组
    9. $string=""; //初始化
    10. $len=count($result); //新数组的长
    11. for($i=0;$i<6;$i++)
    12. {
    13. $new_number[$i]=$result[rand(0,$len-1)]; //在$result数组中随机取出6个字符
    14. $string=$string.$new_number[$i]; //生成验证码字符串
    15. }
    16. $_SESSION['string']=$string; //使用$_SESSION变量传值
    17. $check_image=imagecreatetruecolor($image_w,$image_h); //创建图片对象
    18. $white=imagecolorallocate($check_image, 255, 255, 255);
    19. $black=imagecolorallocate($check_image, 0, 0, 0);
    20. imagefill($check_image,0,0,$white);//设置背景颜色为白色
    21. $line_color=imagecolorallocate($check_image, 255, 0, 0);//设直线的颜色
    22. imageline($check_image, 0, 10, 100,20, $line_color);//画线
    23. for($i=0;$i<100;$i++) //加入100个干扰的黑点
    24. {
    25. imagesetpixel($check_image, rand(0,$image_w), rand(0,$image_h),$black);
    26. }
    27. for($i=0;$i<count($new_number);$i++) //在背景图片中循环输出4位验证码
    28. {
    29. $x=mt_rand(1,7)+$image_w*$i/6; //设定字符所在位置X坐标
    30. $y=mt_rand(1,$image_h/6); //设定字符所在位置Y坐标
    31. //随机设定字符颜色
    32. $color=imagecolorallocate($check_image,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200));
    33. //输入字符到图片中
    34. imagestring($check_image,5,$x,$y,$new_number[$i],$color);
    35. }
    36. imagepng($check_image);
    37. imagedestroy($check_image);
    38. ?>

     check.php

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>留言页面</title>
    5. </head>
    6. <body>
    7. <form method="post" action="">
    8. 验证码:<input type="text" size="10" name="check">
    9. <img src="image.php">
    10. <input type="submit" name="ok" value="提交">
    11. </form>
    12. </body>
    13. </html>
    14. <?php
    15. session_start(); //启动session
    16. if(isset($_POST['ok']))
    17. {
    18. $checkstr=$_SESSION['string']; //使用$_SESSION变量获取image.php页面上的验证码
    19. $str=$_POST['check']; //用户输入的字符串
    20. if(strcasecmp($str,$checkstr)==0) //不区分大小写进行比较
    21. echo "";
    22. else
    23. echo "";
    24. }
    25. ?>

    效果图

    生成验证码

    正确输入验证码之后

    错误输入验证码

  • 相关阅读:
    Linux常用命令
    跨模态检索论文阅读:(ViLT)Vision-and-Language Transformer Without Convolution or Region Supervision
    时间序列预测的输入
    Android原生实现控件选择背景变色方案(API28及以上)
    基于hutool实现国密SM2的加解密,简直不要太简单!
    Vue快速入门
    同一项目如何连接多个mongo服务器地址
    云原生之旅 - 2)Docker 容器化你的应用
    Android NDK篇-C++之 强制转换与智能指针
    微擎模块 啦啦外卖跑腿小程序最新版14.3 带最新跑腿前端+教学视频 完整包
  • 原文地址:https://blog.csdn.net/weixin_41957626/article/details/127903813