您当前的位置: 首页 > 网站编程 > PHP教程 > PHP5中GD库生成图形验证码(有汉字)

PHP5中GD库生成图形验证码(有汉字)

作者:不详 来源:网络 发布时间: 2014-08-18 11:59 点击:
本文为大家介绍下利用PHP5中GD库生成图形验证码而且带有汉字,具体的实现思路及代码如下,有需求的朋友可以参考下,希望对大家学习php有所帮助 利用PHP5中GD库生成图形验证码 类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor 新建

PHP5中GD库生成图形验证码(有汉字)

  本文为大家介绍下利用PHP5中GD库生成图形验证码而且带有汉字,具体的实现思路及代码如下,有需求的朋友可以参考下,希望对大家学习php有所帮助

  利用PHP5中GD库生成图形验证码

  类似于下面这样

  1.利用GD库函数生成图片,并在图片上写指定字符

  imagecreatetruecolor 新建一个真彩色图像

  imagecolorallocate 为一幅图像分配颜色(调色板)

  imagestring 绘制字符

  imageline 绘制线条

  imagesetpixel 打像素点

  2.输出图片

  imagejpeg($img);

  PHP实现过程,代码中注释详细,这里不做过多解释

  verify.php

  复制代码 代码如下:

  <?php

  //1.qi启用gd库GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

  // 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

  session_start();

  // 把GBK编码的字符串转换成UTF-8字符串,第一个参数之所以写GBK,是因为本php文件在主机中存储的编码是GBK编码

  // UTF-8编码浏览器普遍支持,通用性强,这里就转换成UTF-8

  $str = iconv("GBK", "utf-8", "芸芸众生绿水青山名胜古迹敞开心胸便会云蒸霞蔚快乐将永远伴随着你");

  if(!is_string($str) || !mb_check_encoding($str,"utf-8"))

  {

  exit("不是字符串或者不是utf-8");

  }

  $zhongwenku_size;

  // 按UTF-8编码方式获取字符串的长度

  $zhongwenku_size = mb_strlen($str,"UTF-8");

  // 把上述字符导入数组中

  $zhongwenku = array();

  for( $i=0; $i<$zhongwenku_size; $i++)

  {

  $zhongwenku[$i] = mb_substr($str, $i,1,"UTF-8");

  }

  $result = "";

  // 图片上要写入的四个字符

  for($i=0; $i<4; $i++)

  {

  switch (rand(0, 1))

  {

  case 0:

  $result.=$zhongwenku[rand(0, $zhongwenku_size-1)];

  break;

  case 1:

  $result.=dechex(rand(0,15));

  break;

  }

  }

  $_SESSION["check"] = $result;

  // 创建一个真彩图片 宽100,高30

  $img = imagecreatetruecolor(100, 30);

  // 分配背景颜色

  $bg = imagecolorallocate($img, 0, 0, 0);

  // 分配文字颜色

  $te = imagecolorallocate($img, 255,255,255);

  // 在图片上写字符串

  //imagestring($img, rand(3,8), rand(1,70), rand(1,10), $result, $te);

  // 在图片上根据载入字体可以写出特殊字体

  imagettftext($img, 13, rand(2, 9), 20 ,20, $te, "MSYH.TTF",$result);

  $_SESSION["check"] = $result;

  for($i=0; $i<3; $i++)

  {

  // $t = imagecolorallocate($img, rand(0, 255),rand(0, 255),rand(0, 255));

  // 画线

  imageline($img, 0, rand(0, 20), rand(70,100), rand(0, 20), $te);

  }

  $t = imagecolorallocate($img, rand(0, 255),rand(0, 255),rand(0, 255));

  // 为图片添加噪点

  for($i=0; $i<200; $i++)

  {

  imagesetpixel($img, rand(1, 100), rand(1, 30), $t);

  }

  // 发送http头信息 指定本次发送的是image中的jpeg

  header("Content-type: image/jpeg");

  // 输出jpeg图片至浏览器

  imagejpeg($img);

  ?>

  submit.php

  复制代码 代码如下:

  <?php

  session_start();

  if(@$_POST['check'])

  {

  if($_POST["check"] == $_SESSION["check"])

  {

  echo" 恭喜你!验证码输入正确!";

  }else{

  echo" 不好意思验证码输入错误";

  }

  }

  ?>

  <form action="" method="post">

  <img src="verify.php"/> </br>

  <input type="text" name="check"></br>

  <input type="submit" value="submit"></br>

  </form>

  代码中MRYH.ttf 是你要设置的字体。
分享到:
本文"PHP5中GD库生成图形验证码(有汉字)"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4