当前位置: 代码迷 >> PHP >> php?生成验证码解决思路
  详细解决方案

php?生成验证码解决思路

热度:41   发布时间:2016-04-28 16:57:02.0
php?生成验证码
哪位大哥分享下代码
------解决思路----------------------
session_start();
$dict = str_split('abcdefghijklmnopqrstuv0123456789');
shuffle($dict);
$_SESSION['word'] = join('', array_slice($dict, -4));

$im = imagecreate(100, 30);
$bg = imagecolorallocate($im, 255, 255, 255);
$char = imagecolorallocate($im, 0, 0, 0);
imagestring($im, 5, 10, 10, $_SESSION['word'], $char);
imagegif($im);

------解决思路----------------------

session_start();
$checkCode="";
for($i=0;$i<4;$i++){
$checkCode .=substr('abcdefghijklmnopqrstuvwxyz0123456789', rand(0,35), 1);    // $checkCode.=dechex(rand(1,15));
}
//讲随机验证码保存到session中
$_SESSION['myCheckCode']=$checkCode;
//创建图片,并把随机数画上去
$img=imagecreatetruecolor(100,30);
//背景默认就是黑色
//你可以指定背景颜色
$bgcolor=imagecolorallocate($img,0,0,0);
imagefill($img,0,0,$bgcolor);
//创建新的颜色
$white=imagecolorallocate($img,255,255,255);
$blue=imagecolorallocate($img,0,0,255);
$red=imagecolorallocate($img,255,0,0);
$green=imagecolorallocate($img,255,0,0);

//画出干扰线段
for($i=0;$i<20;$i++){
//更好的方法是颜色随机
imageline($img,rand(0,110),rand(0,30),rand(0,110),rand(0,30),imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)));

}
//画出噪点,自己画.

//把四个随机值画上去
imagestring($img,rand(1,5),rand(2,80),rand(2,10),$checkCode,$white);

//如果要使用中文
//array imagefttext (  string $font_file , string $text [, array $extrainfo ] )
//imagettftext($img,15,10,20,25,$white,"STXINWEI.TTF","北京你好");
//输出
header("content-type: image/png");
imagepng($img);

  相关解决方案