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

简单的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中了!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值