Heim  >  Artikel  >  Backend-Entwicklung  >  php验证码 php非预置图片生成验证码

php验证码 php非预置图片生成验证码

WBOY
WBOYOriginal
2016-07-25 08:52:501049Durchsuche
本文介绍了php非预置图片生成验证码的方法,不需要事先预置验证码图片在服务器中,图片背景绘制是随机的,生成验证码的例子,需要的朋友参考下。

php生成验证码

php生成验证码的独立页,不需要事先预置验证码图片在服务器中,图片背景绘制是随机的。 专题推荐:php验证码大全 在任何需要显示验证码的页面位置,用php验证码 php非预置图片生成验证码 标签载入该文件访问地址即可,服务器端的验证码值存于session中:$_SESSION['randcode']

完整代码:

<?php
Header("Content-type: image/gif");
/*
* 初始化
*/
$border = 0; //是否要边框 1要:0不要
$how = 4; //验证码位数
$w = $how*30; //图片宽度
$h = 40; //图片高度
$fontsize = 5; //字体大小,默认只有1、2、3、4、5 五个大小,如需其他,参照imageloadfont() 函数
$alpha = "abcdefghijkmnopqrstuvwxyz"; //验证码内容1:字母
$number = "023456789"; //验证码内容2:数字
$randcode = ""; //验证码字符串初始化
srand((double)microtime()*1000000); //初始化随机数种子
 
$im = ImageCreate($w, $h); //创建验证图片
 
/*
* 绘制基本框架
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色
ImageFill($im, 0, 0, $bgcolor); //填充背景色
if($border)
{
    $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
    ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
}
 
/*
* 逐位产生随机字符
*/
for($i=0; $i<$how; $i++)
{   
    $alpha_or_number = mt_rand(0, 1); //字母还是数字
    $str = $alpha_or_number ? $alpha : $number;
    $which = mt_rand(0, strlen($str)-1); //取哪个字符
    $code = substr($str, $which, 1); //取字符
    $j = !$i ? 4 : $j+15; //绘字符位置
    $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
    ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
    $randcode .= $code; //逐位加入验证码字符串
}
 
/*
* 添加干扰
*/
for($i=0; $i<5; $i++)//绘背景干扰线
{   
    $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
    ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
}   
for($i=0; $i<$how*40; $i++)//绘背景干扰点
{   
    $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色 
    ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
}
 
//把验证码字符串写入session
session_start();
$_SESSION['randcode'] = $randcode;
 
/*绘图结束*/
Imagegif($im);
ImageDestroy($im);
/*绘图结束*/
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn