返回顶部

收藏

产生验证码

更多
<?php 
//Session保存路径
$sessSavePath = dirname(__FILE__)."/data/sessions/";
if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ 
    session_save_path($sessSavePath);
}
$letter = "";
//获取随机数字
for ($i=0; $i<3; $i++) {
  $letter .= chr(mt_rand(48,57));
}
//获取随机字母
for ($i=0; $i<3; $i++) {
  $letter .= chr(mt_rand(65,90));
}
//重构字符顺序
$strs = str_split($letter);
shuffle ($strs);
$rndstring = "";
while (list (, $str) = each ($strs)) {
  $rndstring .= $str;
}
//获取随机字符
//$letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
//for($i=0; $i<6; $i++) {
    //$rndstring .= chr(mt_rand(48,90));
//  $rndstring .= $letras[rand(0, 35)];
//}

//如果支持GD,则绘图
if(function_exists("imagecreate"))
{
    //PutCookie("dd_ckstr",strtolower($rndstring),1800,"/");
    session_register('dd_ckstr');
    $_SESSION['dd_ckstr'] = strtolower($rndstring);
    $rndcodelen = strlen($rndstring);
  //图片大小
  //$im = imagecreate(85,20);
  $im = imagecreatefromgif("code.gif");
  //字体
  $font_type = dirname(__FILE__)."/data/ant1.ttf";
  //背景颜色
  //$backcolor = imagecolorallocate($im,190,190,120); 
  //边框色
  //$iborder = ImageColorAllocate($im, 0x71,0x76,0x67); 

  //字体色
  //不支持 imagettftext
  $fontColor = ImageColorAllocate($im, 0xff,0xff,0xff); 

  //支持 imagettftext
  $fontColor2 = ImageColorAllocate($im, 0xff,0xff,0xff);
  //阴影
  $fontColor1 = ImageColorAllocate($im, 0x33,0x33,0x33); 

  //杂点背景线
  //$lineColor1 = ImageColorAllocate($im, 130,220,245);
  //$lineColor2 = ImageColorAllocate($im, 225,245,255);

  //背景线
  //for($j=3; $j<=16; $j=$j+3) imageline($im,2,$j,83,$j,$lineColor1);
  //for($j=2; $j<83; $j=$j+(mt_rand(3, 10))) imageline($im,$j,2,$j-6,18,$lineColor2);

  //边框
  //imagerectangle($im, 0, 0, 84, 19, $iborder);

  $strposs = array();
  //文字
  for($i=0;$i<$rndcodelen;$i++){
      if(function_exists("imagettftext")){
        $strposs[$i][0] = $i*13+6;
        $strposs[$i][1] = mt_rand(15,18);
        imagettftext($im, 5, 5, $strposs[$i][0]+1, $strposs[$i][1]+1, $fontColor1, $font_type, $rndstring[$i]);
      } else{
        imagestring($im, 5, $i*13+6, mt_rand(2, 4), $rndstring[$i], $fontColor);
      }
  }

  //文字
  for($i=0;$i<$rndcodelen;$i++){
      if(function_exists("imagettftext")){
        imagettftext($im, 11,5, $strposs[$i][0]-1, $strposs[$i][1]-1, $fontColor2, $font_type, $rndstring[$i]);
      }
  }

  header("Pragma:no-cache\\r\\n");
  header("Cache-Control:no-cache\\r\\n");
  header("Expires:0\\r\\n");
  //输出特定类型的图片格式,优先级为 gif -> jpg ->png
  if(function_exists("imagejpeg")){
    header("content-type:image/jpeg\\r\\n");
    imagejpeg($im);
  }else{
    header("content-type:image/png\\r\\n");
    imagepng($im);
  }
  ImageDestroy($im);

}else{ //不支持GD,只输出字母 ABCD   
    //PutCookie("dd_ckstr","abcd",1800,"/");
    session_register('dd_ckstr');
    $_SESSION['dd_ckstr'] = "abcd";
    header("content-type:image/jpeg\\r\\n");
    header("Pragma:no-cache\\r\\n");
  header("Cache-Control:no-cache\\r\\n");
  header("Expires:0\\r\\n");
    $fp = fopen("./vdcode.jpg","r");
    echo fread($fp,filesize("./vdcode.jpg"));
    fclose($fp);
}
?>
//该片段来自于http://outofmemory.cn

标签:php,图形

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. Chen.Zhidong 发表 2014-08-20 14:37:00 PHP远程执行SSH封装
  2. 八歧居 发表 2011-05-31 08:49:50 PHP扩展不完全指南&lt;一&gt; 在C中使用PHP的类型
  3. 张映 发表 2014-09-05 07:24:00 mongodb select php操作 命令行操作
  4. tomheng 发表 2014-09-12 06:35:16 PHP 中mysql_ping 函数小坑
  5. 弈城 发表 2014-07-10 15:36:00 php性能监测模块XHProf
  6. woyoo 发表 2014-09-23 03:22:08 tornado实现ansible api web请求
  7. ceo 发表 2014-09-02 04:43:21 jshint设置
  8. 城主 发表 2014-11-03 02:39:51 php异步多线程swoole使用
  9. 张映 发表 2014-11-14 07:03:27 linux bugfree 安装
  10. heiyeshuwu 发表 2014-10-24 15:58:19 [译]【翻译】PHP-NG版实现细节
  11. chaoyun 发表 2014-07-10 06:32:11 正确使用opcode cache大幅度提升PHP性能
  12. bandit 发表 2013-06-01 09:29:34 从源码编译安装PHP扩展

发表评论