你好,欢迎访问远方教程PC版!
广告位招租
网站首页 >> PHP教程 >> PHP实例教程 >> 文章内容

php网页生成验证码实现程序(第2页)

[日期:2014-11-16]   来源:远方教程  作者:远方教程   阅读:5620次[字体: ] 访问[旧版]
 捐赠远方教程 

        测试文件validtest.php

 

        代码如下

<?php
/**
* 验证码测试
* @author zcs
*/
session_start();
$_SESSION['valid']= randstr();
echo $_SESSION['valid'];

//随机生成字符串

function randstr($num=4)
{
$chars = ‘ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789′;
$randstr=”;
for($i=0;$i<$num;$i++)
{
$randstr.=substr($chars,rand(0,strlen($chars)),1);
}
return $randstr;
}
?>
<img src=”validimg.php” />


生成gif动态验证码

PHP生成GIF动画来实现动态图片验证码,以下是实现过程。

ImageCode函数通过GIFEncoder类实现的GIF动画


/** 
* ImageCode 生成GIF图片验证 
* @param $string 字符串 
* @param $width 宽度 
* @param $height 高度 
* */ 
function ImageCode($string = '', $width = 75, $height = 25) 

$authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999)); 

$board_width = $width; 
$board_height = $height; 
// 生成一个32帧的GIF动画 
for($i = 0; $i < 32; $i++) 

ob_start(); 
$image = imagecreate($board_width, $board_height); 
imagecolorallocate($image, 0,0,0); 
// 设定文字颜色数组 
$colorList[] = ImageColorAllocate($image, 15,73,210); 
$colorList[] = ImageColorAllocate($image, 0,64,0); 
$colorList[] = ImageColorAllocate($image, 0,0,64); 
$colorList[] = ImageColorAllocate($image, 0,128,128); 
$colorList[] = ImageColorAllocate($image, 27,52,47); 
$colorList[] = ImageColorAllocate($image, 51,0,102); 
$colorList[] = ImageColorAllocate($image, 0,0,145); 
$colorList[] = ImageColorAllocate($image, 0,0,113); 
$colorList[] = ImageColorAllocate($image, 0,51,51); 
$colorList[] = ImageColorAllocate($image, 158,180,35); 
$colorList[] = ImageColorAllocate($image, 59,59,59); 
$colorList[] = ImageColorAllocate($image, 0,0,0); 
$colorList[] = ImageColorAllocate($image, 1,128,180); 
$colorList[] = ImageColorAllocate($image, 0,153,51); 
$colorList[] = ImageColorAllocate($image, 60,131,1); 
$colorList[] = ImageColorAllocate($image, 0,0,0); 
$fontcolor = ImageColorAllocate($image, 0,0,0); 
$gray = ImageColorAllocate($image, 245,245,245); 

$color = imagecolorallocate($image, 255,255,255); 
$color2 = imagecolorallocate($image, 255,0,0); 

imagefill($image, 0, 0, $gray); 

$space = 15; // 字符间距 
if($i > 0) // 屏蔽第一帧 

for ($k = 0; $k < strlen($authstr); $k++) 

$colorRandom = mt_rand(0,sizeof($colorList)-1); 
$float_top = rand(0,4); 
$float_left = rand(0,3); 
imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]); 

for ($k = 0; $k < 20; $k++) 

$colorRandom = mt_rand(0,sizeof($colorList)-1); 
imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]); 


// 添加干扰线 
for($k = 0; $k < 3; $k++) 

$colorRandom = mt_rand(0, sizeof($colorList)-1); 
// $todrawline = rand(0,1); 
$todrawline = 1; 
if($todrawline) 

imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]); 

else 

$w = mt_rand(0,$board_width); 
$h = mt_rand(0,$board_width); 
imagearc($image, $board_width - floor($w / 2) , floor($h / 2), $w, $h, rand(90,180), rand(180,270), $colorList[$colorRandom]); 


imagegif($image); 
imagedestroy($image); 
$imagedata[] = ob_get_contents(); 
ob_clean(); 
++$i; 

$gif = new GIFEncoder($imagedata); 
Header ('Content-type:image/gif'); 
echo $gif->GetAnimation(); 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript">
function refresh_code()
{
form1.imgcode.src="verifycode.php?a="+Math.random();
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="checkcode.php">
<label for="code">验证码:</label>
<input type="text" name="code" id="textfield" />
<img id="imgcode" src="VerifyCode.php" alt="验证码" />
<a href="javascript:refresh_code()">看不清?换一个</a>
<input type="submit" name="button" id="button" value="提交" />
</form>
</body>
</html>

第1页 第2页 第3页
图片展示
 
相关评论
站长推荐