PHP实现验证码功能

不念不忘少年蓝@ 2022-06-08 09:10 423阅读 0赞

//先做个记录,功能还不完善,界面还太丑

画图的时候要安装扩展库gd2,我安装的命令是sudo apt-get install php-gd,加上php版本号之后说找不到包,就多尝试几次了

captcha.php

  1. <?php
  2. //设置session,开启会话功能
  3. session_start();
  4. //设置验证码图片大小
  5. $image = imagecreatetruecolor(100,30);//新建一个真彩色图像,第一个参数为长,第二个参数为高
  6. //设置验证码的颜色
  7. $bgcolor = imagecolorallocate($image,255,255,255);//#ffffff白色
  8. //区域填充
  9. imagefill($image,0,0,$bgcolor);//将(0,0)所在的区域填上$bgcolor的颜色
  10. //生成随机数字
  11. for( $i = 0; $i < 4; $i++){
  12. //设置字体大小
  13. $fontsize = 6;
  14. //设置字体颜色,随机颜色 0-120深色
  15. $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
  16. //设置数字
  17. $fontcontent = rand(0,9);
  18. //连续定义变量
  19. $captcha_code .= $fontcontent;
  20. //设置坐标
  21. $x = ($i*100/4)+rand(5,10);
  22. $y = rand(5,10);
  23. imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
  24. }
  25. //存到session中作为全局变量
  26. $_SESSION['authcode'] = $captcha_code;
  27. //增加干扰元素,设置雪花点
  28. for( $i = 0; $i < 200; $i++){
  29. //设置点的颜色,50-200颜色比数字要浅,不干扰阅读
  30. $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
  31. //imagesetpixel() 画一个单一元素
  32. imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
  33. }
  34. //增加干扰元素,设置横线
  35. for( $i = 0; $i < 4; $i++){
  36. //设置线的颜色
  37. $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
  38. imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
  39. }
  40. //设置头部 image/png
  41. header("Content-Type: image/png");
  42. //imagepng()建立png图形函数
  43. imagepng($image);
  44. //imagedestroy()结束图形函数 销毁$image
  45. imagedestroy($image);
  46. ?>

index.html

  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html"; charset="utf-8">
  4. <title>实现验证功能</title>
  5. </head>
  6. <body>
  7. <form method="post" action="form.php">
  8. <p>
  9. <!-- r=echo rand();防止图片一成不变 -->
  10. 验证码:<img id="captcha_img" border="1" src="captcha.php?r=echo rand()" style="width:100px; height:30px" /><br>
  11. <a href="index.html" οnclick="document.getElementById('captcha_img').src='captcha_php?r+Math.random()'">换一个</a>
  12. </p>
  13. <p>
  14. 请输入验证码:<input type="text" name="authcode" value=""/>
  15. </p>
  16. <p>
  17. <input type="submit" name="提交" style="padding:6px 5px;"/>
  18. </p>
  19. </form>
  20. </body>
  21. </html>

form.php

  1. <?php
  2. header("Content-Type:text/html;charset=utf-8"); //设置头部信息
  3. //isset()检测变量是否设置
  4. if(isset($_REQUEST['authcode'])){
  5. session_start();
  6. //strtolower()小写函数
  7. if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']){
  8. //跳转页面
  9. echo "<script language=\"javascript\">";
  10. echo "alert('输入正确!');";
  11. echo "document.location=\"./form.php\"";
  12. echo "</script>";
  13. }else{
  14. //提示以及跳转页面
  15. echo "<script language=\"javascript\">";
  16. echo "alert('输入错误!');";
  17. echo "document.location=\"./form.php\"";
  18. echo "</script>";
  19. }
  20. exit();
  21. }

发表评论

表情:
评论列表 (有 0 条评论,423人围观)

还没有评论,来说两句吧...

相关阅读

    相关 js实现验证功能

    \前面是拆解着讲的,不想看可以直接跳过,带注释的完整版代码和效果在后面 首先在页面中准备一个输入框,一个显示验证码的盒子和一个提交按钮 <body>

    相关 javaweb实现验证功能

    在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class V

    相关 PHP实现验证

    PHP 利用自身带的gd库做验证码功能,也是很方便的,现在什么地方都在使用验证码,就是为了识别是人还是机器,防止一些不法分子对网站进行非法的流量攻击操作,比如论坛的灌水等,有了

    相关 php 实现验证

    \[导读\] 验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码。 session\_start();     $im

    相关 邮箱验证功能实现

    在进行实际项目的开发过程中,我们可能会遇到需要需要对用户账号密码进行找回,这时就需要我们通过邮件进行验证,从而对用户信息进行修改,下面我就将自己开发过程中的邮件发送功能简单描述