php生成验证码图片从入门和贯通教程,并达成自由验证码

证实:一些主干的代码我都开展了诠释,那里已毕的验证码位数、必要用的字符串都得以再安装。有我的笺注,大家应该很简单能看得懂。

证实:一些主导的代码我都开展了诠释,这里完结的验证码位数、必要用的字符串都可以再设置。有自家的笺注,我们应该很不难能看得懂。

方法一

一、突显效果
澳门葡京备用网址 1
二、代码如下

基本思路:

基本思路:

 代码如下

复制代码 代码如下:

   
 1.用mt_rand()随机生成数字确定必要得到的字符串,对字符串进行拼接(觉得变化的验证码觉得多少太挤,大家可以再字符串中间拼接个空格键),达成自由验证码;

   
 1.用mt_rand()随机生成数字确定需求取得的字符串,对字符串进行拼接(觉得变化的验证码觉得多少太挤,我们能够再字符串中间拼接个空格键),完毕自由验证码;

$authnum=”;
$ychar=”0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z”;
$list=explode(“,”,$ychar);//分割函数
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];//以数组的款式出口

/*
 *  @Author fy
 */

   
 备注:指出大家用mt_rand(),而不是rand(),前者作用更高

   
 备注:提出大家用mt_rand(),而不是rand(),前者效能更高

方法二: 
 

$imgwidth =100; //图片宽度
$imgheight =40; //图片中度
$codelen =4; //验证码长度
$fontsize =20; //字体大小
$charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789’;
$font = ‘Fonts/segoesc.ttf’;

   
 2.施用gd库生成图片,把自由字符串写到图片输出。

   
 2.用到gd库生成图片,把自由字符串写到图片输出。

 代码如下

$im=imagecreatetruecolor($imgwidth,$imgheight);

效果:

效果:

private function createCheckCode()
{
for(i=0;i<this->codeNum;i++)
{
number = rand(0,2);
switch(number)
{
case 0: rand_number = rand(48,57); break;//数字
case 1: rand_number = rand(65,90);break;//大写字母
case 2: rand_number = rand(97,122);break;//小写字母
}
$asc = sprintf(“%c”,rand_number);
$asc_php生成验证码图片从入门和贯通教程,并达成自由验证码。number = asc_number.asc;
}
return asc_number;
}

$while=imageColorAllocate($im,255,255,255);
imagefill($im,0,0,$while); //填充图像

澳门葡京备用网址 2澳门葡京备用网址 3澳门葡京备用网址 4

澳门葡京备用网址 5澳门葡京备用网址 6澳门葡京备用网址 7

方法三: 
 

//取得字符串
$authstr=”;
$_len = strlen($charset)-1;
for ($i=0;$i<$codelen;$i++) {
 $authstr .= $charset[mt_rand(0,$_len)];
}

澳门葡京备用网址,老是刷新,都生成一个任意验证,前期我恐怕还会补充怎么落实随机码点击图片就重新更新

每一次刷新,都生成一个即兴验证,前期我说不定还会补充怎么落实随机码点击图片就再次更新

 代码如下

session_start();
$_SESSION[‘scode’]=strtolower($authstr);//全体转为小写,紧假诺为了不区分轻重缓急写

 

 

srand(microtime()*100000);//相当于计时器
$string=”abcdefghigklmnopqrstuvwxyz123456789″;
for($i=0;$i<4;$i++)
{
$new_number.=$string[rand(0,strlen($string)-1)];//随即的暴发一个数组
}

//随机画点,已经改为划星星了
for ($i=0;$i<$imgwidth;$i++){
   
$randcolor=imageColorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
 imagestring($im,mt_rand(1,5),
mt_rand(0,$imgwidth),mt_rand(0,$imgheight), ‘*’,$randcolor);
   
//imagesetpixel($im,mt_rand(0,$imgwidth),mt_rand(0,$imgheight),$randcolor);
}
//随机画线,线条数量=字符数量(随便)
for($i=0;$i<$codelen;$i++)

 $randcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
 imageline($im,0,mt_rand(0,$imgheight),$imgwidth,mt_rand(0,$imgheight),$randcolor);
}

代码:

代码:

方法四: 
 

$_x=intval($imgwidth/$codelen); //统计字符距离
$_y=intval($imgheight*0.7); //字符突显在图片70%的任务
for($i=0;$i<strlen($authstr);$i++){

 

 

 代码如下

 $randcolor=imagecolorallocate($im,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
 //imagestring($im,5,$j,5,$imgstr[$i],$color3);
 // imagettftext ( resource $image , float $size , float $angle , int $x
, int $y , int $color , string $fontfile , string $text )
 imagettftext($im,$fontsize,mt_rand(-30,30),$i*$_x+3,$_y,$randcolor,$font,$authstr[$i]);

<?php
// 创建画布
$width = 120;   // 规定画布的宽高
$height = 45;
$image = imagecreatetruecolor($width, $height);  // 创建一幅真彩色图像
// 添加一些即将用到的颜色
$white = imagecolorallocate($image, 0xf2, 0xec, 0xe0);
$orange = imagecolorallocate($image, 0xff, 0xa5, 0x4c);
// 对画布背景填充颜色
imagefill($image, 0, 0, $white);

//mt_rand  获取随机数 mt_rand(min, max);
    function  str_rand(){
        $str="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ";
        $rand="";
        for($i=0; $i<5; $i++){//获取5个随机的字符串
            $rand .= $str[mt_rand(0, strlen($str)-1)];  //如:随机数为30  则:$str[30]
        }
        return $rand;
    }
$verifyCode=str_rand();
// 画一串字符串在画布上
imagestring($image, 10, 10, 10, "$verifyCode", $orange);
// 通知浏览器输出的是图像(png类型)
header('Content-Type: image/png');
// 输出到浏览器
imagepng($image);
// 释放图像资源
<?php
// 创建画布
$width = 120;   // 规定画布的宽高
$height = 45;
$image = imagecreatetruecolor($width, $height);  // 创建一幅真彩色图像
// 添加一些即将用到的颜色
$white = imagecolorallocate($image, 0xf2, 0xec, 0xe0);
$orange = imagecolorallocate($image, 0xff, 0xa5, 0x4c);
// 对画布背景填充颜色
imagefill($image, 0, 0, $white);

//mt_rand  获取随机数 mt_rand(min, max);
    function  str_rand(){
        $str="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ";
        $rand="";
        for($i=0; $i<5; $i++){//获取5个随机的字符串
            $rand .= $str[mt_rand(0, strlen($str)-1)];  //如:随机数为30  则:$str[30]
        }
        return $rand;
    }
$verifyCode=str_rand();
// 画一串字符串在画布上
imagestring($image, 10, 10, 10, "$verifyCode", $orange);
// 通知浏览器输出的是图像(png类型)
header('Content-Type: image/png');
// 输出到浏览器
imagepng($image);
// 释放图像资源

for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));//将十进制转化为十六进制
}

}

 

 

 

//生成图像
header(“content-type:image/PNG”);
imagePNG($im);
imageDestroy($im);

轻易生成数字,字母的代码:

 

 

您可能感兴趣的文章:

  • php图片验证码代码
  • php5 图片验证码落成代码
  • PHP图片验证码制作已毕分享(全)
  • PHP生成Gif图片验证码
  • PHP生成图片验证码、点击切换实例
  • php生成图片验证码-附三种验证码
  • PHP编写的图样表明码类文件分享

 代码如下

<?php
//che.php
session_start();
for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));
}
$_SESSION[‘check_num’]=$rand;
$image=imagecreatetruecolor(50,30);
$bg=imagecolorallocate($im,0,0,0);//首次用调色板的时候,背景颜色
$te=imagecolorallocate($im,255,255,255);
imagestring($image,6,rand(0,20),rand(0,2),$rand,$te);
ob_clean();//PHP网页中因为
要生成验证码而出现
图像”
header(“Content-type:image/jpeg”); imagejpeg($image);
?>

给图片画出困扰线代码: 
 

 代码如下

for($i=0;$i<8;$i++)//画出多条线
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//爆发随机的颜料
imageline($im,rand(10,40),0,rand(10,40),20,$cg);
}

给图片画出干扰点的代码: 
 

 代码如下

for($i=0;$i<80;$i++)//画出七个点
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg);
}

把文字写入图片代码: 
 

 代码如下

$str=array(‘我’,’我’,’亲’,’亲’);//存储突显的汉字
for($i=0;$i<4;$i++)
{
$sss.=$str[rand(0,3)];//随机展现汉字
}

//$str=iconv(“gb2312″,”utf-8”,$str); //汉字编码转化,我的近乎不需要
imagettftext($im,10,0,rand(5,60),rand(5,60),$te,”simhei.ttf”,$sss);//

末段咱们结合实际分享一个一体化的实例

 

 代码如下

/**
 * 生成验证码图片
 *
 * @param String $word
验证码在session中的变量名称
 */
function valiCode($word=’randcode’){
 Header(“Content-type: image/gif”);
 $border = 0; //是不是要边框 1要:0不要
 $how = 4; //验证码位数
 $w = $how*15; //图片宽度
 $h = 18; //图片高度
 $fontsize = 10; //字体大小
 $alpha = “abcdefghijkmnpqrstuvwxyz”; //验证码内容1:字母
 $number = “23456789”; //验证码内容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()循环为绘背景苦恼线代码
 */
 /* + ——————————-绘背景困扰线
起首——————————————– + */
 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()循环为绘背景苦恼点代码
 */
 /* + ——————————–绘背景苦恼点
开首—————————————— + */
 
 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  方便交给登录音信时检查验证码是或不是科学 
例如:$_POST[‘randcode’] = $_SESSION[‘randcode’]
 $_SESSION[$word] = $randcode;
 /*绘制甘休*/
 Imagegif($im);
 ImageDestroy($im);
 /*制图停止*/
}

调用方法也很简单把地点实例保存img.php文件,然后在要调用的页面
html页面如下

 代码如下

<script language=”javascript”>
 function refresh_code()
 {
  form1.imgcode.src=”verifycode.php?a=”+Math.random();
 }
</script>

<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>

那要就足以完结验证码调用了。

再加个提交注解验证码是不是科学

 代码如下

<?php
session_start();
  if((strtoupper($_POST[“code”])) ==
strtoupper(($_SESSION[“VerifyCode”]))){
 print(“验证码正确,”);
  }else{
    print(“验证码错误,”);
  }

?>

那要就我们已毕了从生成验证码图片和使用的漫天经过了,也好不不难从php入门到通晓验证码全体讲了。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website