PHP工具类
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> ";
}
private function last()
{
if ($this->currentPage==$this->totalPage) return false;
return "<a href='?p={$this->totalPage}'>尾页</a> ";
}
private function next()
{
$p = min($this->currentPage+1 , $this->totalPage);
if ($p==$this->totalPage) return false;
return "<a href='?p={$p}'>下一页</a> ";
}
private function prev()
{
$p = max(1 , $this->currentPage - 1);
if($p==1) return false;
return "<a href='?p={$p}'>上一页</a> ";
}
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> ";
else
$show .= "<a href='?p={$i}' >{$i}</a> ";
}
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(
'├',
' ├',
' ├',
' ├',
' ├',
' └',
);
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;
?>
- 上一篇:ZF缓存类前端File配合XML的使用
- 下一篇:upyun图片fetch的简单封装
精彩图集
精彩文章






