/**
* 生成验证码
* @param int $type 1: 纯数字,2:纯字母,3:数字与字母混合 
* @param int $length
* @return string
*/
function buildRandomString($type=1,$length=4){
if ($type == 1) {
$chars = join ( "", range ( 0, 9 ) );
} elseif ($type == 2) {
$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) );
} elseif ($type == 3) {
$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) );
}
if ($length > strlen ( $chars )) {
exit ( "字符串长度不够" );
}
$chars = str_shuffle ( $chars );
return substr ( $chars, 0, $length );
}

//通过GD库做验证码

function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){

session_start();
//创建画布
$width = 80;
$height = 28;
$image = imagecreatetruecolor ( $width, $height );
$white = imagecolorallocate ( $image, 255, 255, 255 );
$black = imagecolorallocate ( $image, 0, 0, 0 );
//用填充矩形填充画布
imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
$chars = buildRandomString ( $type, $length );
$_SESSION [$sess_name] = $chars;
//$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );
$fontfiles = array ("SIMYOU.TTF");
//由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体
for($i = 0; $i < $length; $i ++) {
$size = mt_rand ( 14, 18 );
$angle = mt_rand ( - 15, 15 );
$x = 5 + $i * $size;
$y = mt_rand ( 20, 26 );
$fontfile = $fontfiles[mt_rand ( 0, count ( $fontfiles ) - 1 )];
putenv('GDFONTPATH=' . realpath('.'));
$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
$text = substr ( $chars, $i, 1 );
//putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
}
if ($pixel) {
for($i = 0; $i < 50; $i ++) {
imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );
}
}
if ($line) {
for($i = 1; $i < $line; $i ++) {
$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
}
}

header ( "content-type:image/gif" );//设置头信息
imagegif ( $image );
imagedestroy ( $image );
}

最新文章

  1. c 二叉树的使用
  2. HttpClient学习整理
  3. vsftpd.conf
  4. c#下调用dll动态链接库[转]
  5. 【caffe】train_lenet.sh在windows下的解决方案
  6. SET Statements (Transact-SQL)
  7. JavaScript相关知识
  8. sql查找字符串是否包含字符
  9. JavaScript--面向对象与原型(15)
  10. hdoj 2151 Worm【动态规划】
  11. 【MySQL】关于MySQL错误日志信息的收集
  12. 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制
  13. Chrome F12调试工具常用技巧
  14. loj6077
  15. 有关导出Excel特殊字符的问题
  16. Ideal test 不执行main方法了
  17. pgm9
  18. Phalcon框架之———— 2.0升级到3.0 问题Model验证问题解决
  19. JS跨域设置和取Cookie
  20. OC 线程操作 - GCD使用 -线程通讯, 延迟函数和一次性代码

热门文章

  1. Linux内核学习笔记1——系统调用原理【转】
  2. zoj 1221 Risk Flory
  3. Keepass 2.x 之 同步与触发器
  4. Bzoj 1878: [SDOI2009]HH的项链 莫队
  5. Yii框架tips(转)
  6. 【转】Flask安装
  7. python Day 1 - 搭建开发环境
  8. LCS算法
  9. Android应用开发学习之表格视图
  10. Javascript数据类型&mdash;&mdash;number类型