牛骨文教育服务平台(让学习变的简单)
博文笔记

简单的php代码生成验证图片

创建时间:2017-07-29 投稿人: 浏览次数:447

简单的php代码生成验证图片

1. php代码:

<?php
header("Content-type: image/png;charset=utf-8");
session_start();
$_SESSION["yzm"] = ""; //将验证码保存到session
getYZM();//调用生成验证码的方法
/*
生成图片验证码
过程:创建画布资源
      创建画笔颜色
      画图
      输出图片
      销毁画布
*/
function getYZM(){

  $height = 53;
  $width = 148;

  $image = imagecreate($width, $height);
  $white = imagecolorallocate($image, 255, 255, 255);//填充背景颜色

  $red = imagecolorallocate($image, 113, 30, 33);//验证码颜色
  $alphnum = randomkeys(6);
  $_SESSION["yzm"] = $alphnum;
  $font = "../font/touchofnature.ttf";
   // imagestring($image,14,10,10,$alphnum,$red);
  imagettftext($image, 20, -5, 15, 40, $red, $font, $alphnum);

  imagepng($image);
}

//生成随机的子母+数字序列
function randomkeys($length)   
{   
  $str="";
  $pattern = "1234567890abcdefghijklmnopqrstuvwxyz   
             ABCDEFGHIJKLOMNOPQRSTUVWXYZ";  
  for($i=0;$i<$length;$i++)   
  {   
      $key = $pattern{mt_rand(0,35)};    //生成php随机数
      $str .= $key;
  }   

  return $str;   
}  

?>

2.html部分代码:

<?php
session_start();//开启session
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>会员免费注册</title>
        <!-- …… -->
    </head>
    <body>
        <!-- …… -->
        <!--图片验证码-->
        <div class="tpyzm">
            <dl>
                <dd><img src="img/inviteico1.gif"/>请输入验证码</dd>
                <dd><img id="tpyzm" src="php/getyzm.php" width="145" height="53" style="cursor:pointer;"/></dd>
                <dd><a href="javascript:void(0);" style="cursor:pointer">看不清?换一张</a></dd>
                <dd style="float:left;"><input type="text" id="inputyzm"></dd>
                <dd style="float:left;margin-top: 10px;margin-left: 10px;"><a id="inviteBtn" href="javascript:void(0);" ><img   src="img/inviteBtn.gif" alt=""></a></dd>
            </dl>
        </div>                  
        <!-- …… -->
    </body>
</html>

3.字体:

验证码上的字体是自定义的,只需要下载自己想要的字体类型,然后放在font文件夹中,在php代码中引用即可。

download:http://font.chinaz.com/

4.遇到的问题

4.1. 字体路径:我写的网站是在wamp集成环境中部署的,没有单独安装php,所以由于文件路径不正确,图片一直是空白。解决:把路径改为相对的就ok了。
4.2. session:本人没有学过php,有些知识点不太了解,session需要开启,而且要在html标签之前出现,这样验证码就能保存在session中了!

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。