龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP工具类

时间:2014-07-22 14:48来源: 作者: 点击:
分享到:
PHP工具类,开发系统必备的类:表单验证类验证码类日志类分页类无限极分类类
PHP工具类,开发系统必备的类:
表单验证类
验证码类
日志类
分页类
无限极分类类
<?php 
	class Lib_Form
	{
		private $typeArr=array('isNotEmpty' , 'isInt'  , 'isStr' , 'isEmail' , 'isTel' , 'isOnlyNum' , 'hasSet', 'isOnlyChar' , 'isNumAndChar' , 'checkLength');
		private $msg = array();
		private $code = 0;
		
		public function validata($post)
		{
			if(!is_array($post))
			{
				$this->msg[] = 'data is not array';
			}
			else
			 {			
				foreach ($post as $field=>$value)
				{
					$func =  $post[$field]['valid'];
					$value = $post[$field]['value'];
					
					$checkLength = 'checkLength';
					if($pos = stripos($func , $checkLength)!==false)
					{
						$condition = substr($func, strlen($checkLength));
						$func = $checkLength;
						$lengthArr = explode('-', $condition);
						self::$func($value , $field , $lengthArr[0] , $lengthArr[1]);
					}
					else
					{				
						if(!in_array($func , $this->typeArr)) 
						{
							$this->msg = $func.'	isNotExists';
							break;
						}
						self::$func($value , $field);
					}
				}
			}
			return $this->showRestult();
		}
		
		private function showRestult()
		{
			if($this->msg && is_array($this->msg))	
			{
				$this->code = 1;
				$msg = implode(',', $this->msg);
				$ret =  array('code'=>$this->code , 'msg'=>$msg);
				return $ret;
			}
			return array('code'=>$this->code , 'msg'=>'success');
		}
		
		private function isNotEmpty($value,$field)
		{
			if(!$this->hasSet($value, $field)) return false;
			$value = trim($value);
			if(empty($value)) 
			{
				$this->msg[] = $field.'	isEmpty';
				return false;
			}
			return true;
		}
		
		private function isInt($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			if(!is_int($value))
			{
				$this->msg[] = $field.'	isNotInt';
				return false;
			}
			return true;
		}
		
		private function isStr($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			if(!is_string($value))	
			{
				$this->msg[] = $field.'	isNotStr';
				return false;
			}
			return true;
		}
		
		private function hasSet($value , $field)
		{
			if(!isset($value))
			{
				$this->msg[] = $field.'		isNotSet';
				return false;
			}
			return true;
		}
		
		private function isEmail($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$pattern = "/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)$/";
			if(!preg_match($pattern, $value))	
			{
				$this->msg[] = $field.'	isNotEmail';
				return false;
			}
			return true;
		}
		
		private function isTel($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$pattern = '/^[0-9]{7,11}$/';
			if (!preg_match($pattern, $value)) 	
			{
				$this->msg[] = $field.'	isNotTel';
				return false;
			}
			return true;
		}
		
		private function isOnlyNum($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$pattern = "/^[0-9]{1,}$/";
			if(!preg_match($pattern, $value))		
			{
				$this->msg[] = $field.'	isNotOnlyNum';
				return false;
			}
			return true;
		}
		
		private function isOnlyChar($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$pattern = "/^[a-zA-Z]{1,}$/";
			if(!preg_match($pattern, $value))		
			{
				$this->msg[] = $field.'	isNotOnlyChar';
				return false;
			}
			return true;
		}
		
		private function isNumAndChar($value,$field)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$pattern = "/^[a-zA-z0-9]{1,}$/";
			if(!preg_match($pattern , $value))	
			{
				$this->msg[] = $field.'	isNotNumAndChar';
				return false;
			}
			return true;
		}
		
		private function checkLength($value , $field ,  $minLength , $maxLength)
		{
			if(!$this->isNotEmpty($value,$field)) return false;
			$value = trim($value);
			$length = (strlen($value) + mb_strlen($value,'UTF8')) / 2; 
			if($length < $minLength || $length > $maxLength)
			{
				$this->msg[] = $field.'	isNotInLength';
				return false;
			}
			return true;
		}
	}

	if($_POST['submit'])
	{
		$form = new Lib_Form();
		$post['name'] = array('value'=>$_POST['name'] , 'valid'=>'checkLength6-12');
		$post['pwd'] = array('value'=>$_POST['pwd'] , 'valid'=>'checkLength4-12');
		$post['sex']	= array('value'=>$_POST['sex'] , 'valid'=>'hasSet');
		
		$ret = $form->validata($post);
		if($ret['code'])
		{
			echo $ret['msg'];
		}
	}
?>

2. [文件] lib.image.php ~ 1KB     下载(37)     跳至 [1] [2] [3] [4] [5] [全屏预览]

<?php 
	class Lib_Image
	{
		private $height = 0;
		private $width  = 0;
	
		public function __construct($height , $width)
		{
			$this->height = $height;
			$this->width = $width;
		}
		
		private function genCode($num)
		{
			for($i=0;$i<$num;$i++)//生成验证码
			{
				switch(rand(0,2))
				{
					case 0:$code[$i]=chr(rand(48,57));break;//数字
					case 1:$code[$i]=chr(rand(65,90));break;//大写字母
					case 2:$code[$i]=chr(rand(97,122));break;//小写字母
				}
			}
			$_SESSION["VerifyCode"]=$code;	
			return $code;		
		}
		
		private function genOther($image)
		{
			for($i=0;$i<80;$i++)//生成干扰像素
			{
				$dis_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
				imagesetpixel($image,rand(1,$this->width),rand(1,$this->height),$dis_color);
			}		
		}
		
		public function veryCode()
		{
			
			$image=imagecreate($this->width,$this->height);
			imagecolorallocate($image,255,255,255);
			//$this->genOther($image);
			
			$num = 4;
			$code = $this->genCode($num);
			for($i=0;$i<$num;$i++)//打印字符到图像
			{
				$char_color=imagecolorallocate($image,rand(0,2555),rand(0,255),rand(0,255));
				imagechar($image,60,($this->width/$num)*$i,rand(0,5),$code[$i],$char_color);
			}
			
			header("Content-type:image/png");
			imagepng($image);//输出图像到浏览器
			imagedestroy($image);//释放资源
		}
	}
	
	$image = new Lib_Image(25, 65);
	$image->veryCode();
?>

3. [文件] lib.log.php ~ 1KB     下载(38)     跳至 [1] [2] [3] [4] [5] [全屏预览]

<?php 
	class Lib_Log
	{
		private $logError = 0;
		private $logWarn = 1;
		private $logDebug = 2;
		private $logDir = 'log/';
		private $logFile = 'log';
		private $fileExt = '.txt';
		private $fileHander = null;    
		
		public function __construct()
		{
			if(!is_dir($this->logDir)){
				mkdir($this->logDir,0777);
			}
			$this->logFile .= date('Y-m-d').$this->fileExt;
			if(!$this->fileHander = @fopen($this->logDir.$this->logFile, 'a+')){
				die('the log file can not be open!');
			}
		}
		
		public  function writeLog($message)
		{
			$ip =  isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
			$debug = debug_backtrace(true);
			$string = date('Y-m-d H:i:s')."\t";
			$string .= $ip."\t";
			$string .=$debug[0]['file']."\t";
			$string .= "\tline" . $debug[0]['line']."\t";
			$string .= json_encode($message)."\r\n";
			if(!fwrite($this->fileHander, $string)){
				die('the log file can not be written!');
			}
		}
		
		public function __destruct()
		{
			if($this->fileHander!=null){
				fclose($this->fileHander);
			}
		}
		
	}
	
	$log = new Lib_Log();
	$log->writeLog('the error debug!');
	echo "</pre>";
	
?>

4. [文件] lib.page.php ~ 2KB     下载(38)     跳至 [1] [2] [3] [4] [5] [全屏预览]

<?php 
	class Lib_Page
	{
		public $currentPage=0;							//当前页数
		private $totalPage=0;								//总页数
		private $totalNums=0;						    //总记录数
		private $perNums=0;								//每页显示的记录数
		private $type = 0;									//显示类型
		
		public function __construct($totalNums , $perNums,$type=0)
		{
			$this->totalNums	= intval($totalNums);
			$this->perNums		= intval($perNums);
			$this->totalPage		=	intval(ceil($this->totalNums / $this->perNums));
			$this->currentPage	= min(max(1 , $_REQUEST['p']) , $this->totalPage);
			$this->type 				=	intval($type);
		}
		
		private function first()
		{
			if ($this->currentPage==1) 	return false;
			return "<a href='?p=1'>首页</a>&nbsp;&nbsp;";
		}
		
		private function last()
		{
			if ($this->currentPage==$this->totalPage) 	return false;
			return "<a href='?p={$this->totalPage}'>尾页</a>&nbsp;&nbsp;";
		}
		
		private function next()
		{
			$p = min($this->currentPage+1 , $this->totalPage);
			if ($p==$this->totalPage) 	return false;
			return "<a href='?p={$p}'>下一页</a>&nbsp;&nbsp;";
		}
		
		private function prev()
		{
			$p =  max(1 , $this->currentPage - 1);
			if($p==1)		return false;
			return "<a href='?p={$p}'>上一页</a>&nbsp;&nbsp;";
		}
		
		private function total()
		{
			return "<span>共 {$this->totalPage} 页</span> | <span>{$this->totalNums} 条记录</span> | <span>当前第 {$this->currentPage} 页</span>";
		}
		
		private function page()
		{
			$show = "";
			for ($i=1; $i<=$this->totalPage; $i++){
				if ($i==$this->currentPage) 
					$show .= "<a href='?p={$i}' class='active' >{$i}</a>&nbsp;&nbsp;";
				else
					$show .= "<a href='?p={$i}' >{$i}</a>&nbsp;&nbsp;";
			}
			return $show;
		}
		
		public function show()
		{
			if ($this->type==1) {
				return $this->total().' '.$this->page();
			}else if($this->type==2){
				return $this->total().' '.$this->first().' '.$this->prev().' '.$this->next().' '.$this->last();
			}elseif ($this->type==0){
				return $this->total().' '.$this->first().' '.$this->prev().' '.$this->page().' '.$this->next().' '.$this->last();
			}
		}
		
	}
	
	$totalNums = 80;
	$perNums = 10;
	$page = new Lib_Page($totalNums, $perNums);
	echo $page->show();
?>

5. [文件] lib.tree.php ~ 2KB     下载(42)     跳至 [1] [2] [3] [4] [5] [全屏预览]

<?php 
	class Lib_Tree
	{
		private $items = array();
		private $icon = array(
			'├',
			'&nbsp;&nbsp;├',
			'&nbsp;&nbsp;&nbsp;&nbsp;├',
			'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├',
			'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├',
			'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└',	
		);
		private $field = array('id','name');
		public $ret = '<table><tr><th>类名</th> <th>操作</th></tr>';
		
		public function __construct($items)
		{
			$this->items = $items;
		}
		
		public function setIcon($icon)
		{
			$this->icon = $icon;
		}
		
		public function getChildren($pid)
		{
			foreach ($this->items as $item)
			{
				if($item['pid']==$pid)
				{
					$children[] = $item;
				}
			}	
			return $children && is_array($children) ? $children : false;
		}
		
		public function getParent($id)
		{
			return $this->items[$this->items[$id]['pid']];
		}
		
		public function show($pid)
		{
			$children = $this->getChildren($pid);
			if(!$children) return false;
			foreach ($children as $child)
			{
				$this->ret.='<tr>';
				$this->ret.='<td>'.$this->icon[$child['level']].$child['name'].'</td>';
				$this->ret.='<td><a href="?c=category&m=del&id='.$child['id'].'">删除</a> <a href="?c=category&m=add&id='.$child['id'].'">添加</a> <a href="?c=category&m=mod&id='.$child['id'].'">修改</a></td>';
				$this->ret.='</tr>';
				$this->show($child['id']);
			}
		}
		
		
	}

	$items = array(
			array('id'=>1 , 'name'=>'湖北', 'pid'=>0, 'level'=>0),
			array('id'=>2 , 'name'=>'武汉', 'pid'=>1, 'level'=>1),
			array('id'=>3 , 'name'=>'孝感', 'pid'=>1, 'level'=>1),
			array('id'=>4 , 'name'=>'广东', 'pid'=>0, 'level'=>0),
			array('id'=>5 , 'name'=>'广州', 'pid'=>4, 'level'=>1),
			array('id'=>6 , 'name'=>'深圳', 'pid'=>4, 'level'=>1),
			array('id'=>7 , 'name'=>'东莞', 'pid'=>4, 'level'=>1),
			array('id'=>8 , 'name'=>'宜昌', 'pid'=>1, 'level'=>1),
			array('id'=>9 , 'name'=>'云梦', 'pid'=>3, 'level'=>2),
			array('id'=>10 , 'name'=>'南山区', 'pid'=>6, 'level'=>2),
			array('id'=>11 , 'name'=>'宝安全', 'pid'=>6, 'level'=>2),
			array('id'=>12 , 'name'=>'倒店', 'pid'=>9, 'level'=>3),
			array('id'=>13 , 'name'=>'罗范大队', 'pid'=>12, 'level'=>4),
			array('id'=>14 , 'name'=>'下范存', 'pid'=>13, 'level'=>5),
	);
	
	$tree = new Lib_Tree($items);
	 $tree->show(0);
	 echo $tree->ret;
	
?>
精彩图集

赞助商链接