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