<?php
class ImgCode_lib  extends HC_Controller
{
	public function __construct()
	{
		//关闭报错
		parent::__construct();
		if(empty($_SESSION['session_id'])){
                    session_start();
                }
		unset($_SESSION["img_code"]);
		error_reporting(0);
		
	}
	
	function build_img_code()
	{
		//图片宽度
		$x_size=65;
		//图片高度
		$y_size=22;
		
		//生成4个随机字符
		$_SESSION["img_code"]['num']	= $nmsg= $this -> num_rand(4);
		$_SESSION["img_code"]['time']	= time();
		
		//支持安全通连接吗?
		$S=$_SERVER['SERVER_PORT']=='443' ? 1:0;
		
		//使用cookie记录随机码
		//expire=0 cookie将会在会话结束后（一般是浏览器关闭）失效。 
		setCookie('ck_num',md5($nmsg),0,'/','',$S);
		
		//创建宽:65*22的图片(画布)
		$aimg = imagecreate($x_size,$y_size);
		
		//设置图片背景色
		$back = imagecolorallocate($aimg, 239 , 239 , 239 );
		//设置字体颜色 07 52 8B  // $border = imagecolorallocate($aimg, 200 , 100, 10);
		$border = imagecolorallocate($aimg, 5 , 5, 5);
		
		//从0,0点填充59*19的白色矩形区域
		imagefilledrectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $back);
		
		//从0,0点绘制59*19的黑色矩形边框
		//imagerectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $border);
		
		imagerectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $border);
		
		for ($i=0;$i<strlen($nmsg);$i++){ 
			 //在图片上写字
			 imageString($aimg,5,$i*$x_size/4+3,2, $nmsg[$i],$border); 
		}
		for($i=0;$i<500;$i++)   //加入干扰象素 
		{ 
			$white = 1;
			imagesetpixel($aimg, rand()%80, rand()%80 , $white); 
		}
		
		
		header("Content-type: image/png");
		imagepng($aimg);
		imagedestroy($aimg);
		exit;
	}
	
	private function num_rand($lenth)
	{
		 // 播下一个随机数发生器种子
		 //php自4.2.0起,，此参数变为可选项，当该项为空时，会被设为随时数
		 mt_srand((double)microtime() * 1000000);
		 //产生有4个随机数字的字符串
		 
		 for($i=0;$i<$lenth;$i++){
			   $randval.= mt_rand(0,9);
		 }
		 //对含有4个数字的字符串使用md5加密,长度是32位的
		 //从3长度为32的字符中,自最小数起或最大数32-$lenth起,取长度为$lenth的字符串
		 //$randval=substr(md5($randval),mt_rand(0,32-$lenth),$lenth);
		 return $randval;
	}

} 