X
活动推荐

阿里云高性能云主机2折293元/年

企业级性能云服务器限时2折起
新用户5折爆款服务器会场
查看详情 293元/年
阅读模式:

php生成图片验证码

查看:1193  回复:0  类型:  来源:php自学网  标签 php

        php中GD扩展库可以对图像进行处理,php验证码的实现是生成随机码并保存到session,最后生成图片的过程。随机码保存到session后,服务端会把随机码保存到服务器的文件中,并生成一个Cookie,然后下发到客户端保存,并通过Cookie进行和服务端关联,来达到客户端和服务端进行验证的目的。

        图像处理函数列表:http://www.php.net/manual/zh/ref.image.php

checkcode.php

<?php
  //checkcode.php
  //开启session
  session_start();

  //宽
  $w = 200;
  //高
  $h = 40;

  //新建一个真彩色图像
  $image = imagecreatetruecolor($w, $h);
  //设置验证码颜色
  $bgcolor = imagecolorallocate($image,255,255,255);
  //填充背景色
  imagefill($image, 0, 0, $bgcolor);
  //10>设置变量
  $captcha_code = "";
  
  //随机种子
  $char_str = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
  $char_str_len = strlen($char_str)-1;

  $checkcode = $code = '';

  //生成随机码
  for($i=0;$i<4;$i++){
    //设置字体大小
    $fontsize = 6;
    //设置字体颜色,随机颜色
    $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));
    //设置数字
    $code = substr($char_str,rand(0,$char_str_len),1);
    //拼接验证码
    $checkcode .= $code;
    //随机码宽度
    $x = ($i*$w/4)+rand(5,10);
    //随机码高度
    $y = rand(5,$h/2);
    imagestring($image,$fontsize,$x,$y,$code,$fontcolor);
  }
  
  //保存code到session
  $_SESSION['checkcode'] = $checkcode;
  
  //设置雪花点
  for($i=0;$i<400;$i++){
    //设置点的颜色
    $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));    
    //imagesetpixel画一个单一像素
    imagesetpixel($image, rand(0,$w), rand(0,$h), $pointcolor);
  }
  
  //增加干扰元素
  for($i=0;$i<4;$i++){
    //设置线的颜色
    $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));
    //设置线,两点一线
    imageline($image,rand(1,$w-1), rand(1,$h-1),rand(1,$w-1), rand(1,$h-1),$linecolor);
  }
 
  //设置图片头部
  header('Content-Type: image/png');
  //生成png图片
  imagepng($image);
  //销毁$image
  imagedestroy($image);

check.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
    <form action="./login.php" method="post">
        <img src="http://localhost/checkcode.php"  onclick="this.src='checkcode.php?'+new Date().getTime();" width="200" height="40"><br/>
        <input type="text" name="checkcode" placeholder="请输入图片中的验证码"><br/>
        <input type="submit" value="验证">
    </form>
</body>
</html>

效果:

php_checkcode.png

服务端验证代码login.php:

<?php
session_start();
$checkcode = $_POST["checkcode"];
if(strtolower($_SESSION["checkcode"]) == strtolower($checkcode)){
    echo "验证码正确!";
}else{
    echo "验证码不正确!";
}
分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
centos7.3安装mongodb3.6   阅读:5698爱编程,也爱健康   阅读:3277解决 nginx 413 request entity too large   阅读:3545linux php7安装yaf扩展   阅读:6504最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:26448shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:7120TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:2030centos 7 安装 mysql-5.7   阅读:4940linux php7安装yaf扩展   阅读:6504知乎百万赞作者告诉你:年薪百万的人都在靠什么赚钱   阅读:4984php删除一个文件夹内的所有文件夹和文件   阅读:3915面试的时候和你谈理想,是理想or入坑?   阅读:7750centos7开启交换内存   阅读:8637解决 nginx 413 request entity too large   阅读:3545爱编程,也爱健康   阅读:3277html5 离线缓存的使用   阅读:3450php冒泡排序法   阅读:11132centos 7 安装 nginx-1.11.10   阅读:6802centos 7 安装 php-7.1.3   阅读:15812phpexcel 超简单从excel表格一键导入数据到数据库教程   阅读:10380web性能测试工具ab的测试方法   阅读:3771php翻转字符串   阅读:2230小米手机端商城rem适配原理   阅读:5792网站性能优化-页面静态缓存   阅读:4595比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:4123php打印三角形   阅读:5742一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:109600centos 7 设置 nginx-1.11.10 开机启动   阅读:6750centos7中颁发CA证书并开启web https   阅读:4329shell脚本统计当前服务器并发连接数   阅读:5590mysql中文分词全文搜索索引讯搜的安装   阅读:5365栈和堆的区别   阅读:3973Nginx 配置文件详解   阅读:3719一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:109600linux php7安装yaf扩展   阅读:6504企业让你去面试,可能不是真的招人   阅读:4885分享:淘宝技术这十年   阅读:3836霍金24岁博士毕业论文在线预览   阅读:4495mongodb设置shell开机启动脚本   阅读:7473最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:26448shell脚本批量删除几天前的文件   阅读:7382给网站添加一键qq登录的功能   阅读:5927javascript点击复制内容   阅读:5322javascript对cookie操作详细代码函数   阅读:4376mysql 为什么添加索引可以提高访问速度   阅读:4922php打印三角形   阅读:5742比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:4123最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:8994centos 7 安装 samba 服务   阅读:5244分享:淘宝技术这十年   阅读:3836