PHP通用类说明:
一般的通用类有2个 Common 类和 DBClass 类,Common类负责校验和页面跳转;DBClass 类负责数据库操作和分页;
原则:1)调DB前必须调Common验证$_REQUEST
防止注入; 2)DB 越晚打开,越早释放(由于自动释放,所以需要越晚打开)
Common 类常用方法:
Common::check_empty('siteNum,siteUName,siteUCode');
//判断是否为空,每个表单名用','隔开;
Common::check_num('id,siteNum'); //判断是否为数字
Common::check_phone('siteMobile'); //判断是否为手机
Common::check_IDCard('siteUCode'); //判读是否为身份证
Common::check_IP("sip"); //判断是否为IP
Common::check_email("uemail"); //判断是否为邮箱
Common::form_to_array('siteNum,siteUName,siteUCode‘); //表单变成数组,直接把$_REQUEST当数组也可以,一般可不用
Common::alert($str); //失败警告后返回
Common::jump($str,$url); //弹出警告后跳转
Common::jump2($url); //不弹出警告跳转
Common::codePath(); //得到当前路径
Common::deCodePath($_REQUEST['selflink']); //还原当前路径
Common::check_date('ctime1,ctime2'); //判断是否为时间
Common::substring($string, $sublen, $start = 0, $code =
'UTF-8'); ////中文字符函个数,$start
Check::IDCard(str); //严格验证身份证
Check::datetime(str);
Check::phone($str); //严格检测是否是手机
Check::mbphone($str); //非严格检验是否是手机,只检验11位数字
DBClass 有2个类,一个是基础类,基本不会有问题,
还有一个是微官网后台的类,由于被以前的同事改造过,有些不一致;注意版本;
$db=FuncClass::dblink();
$db->pagesize=10;
$db->execute($sql);
//执行SQL语句,可以执行任何SQL语句;
//备注:如果需要分页,不能执行嵌套有from的SQL语句。
//例如: select a.id,a.name,(select count(*) from b where b.vid=a.id) as cc where type>0
//类似这种的多from的语句要做分页最好用视图,不做分页没关系;
while($rs=$db->fetch_array()){
.... //执行循环代码;
};
$db->autoExecute('buy_price',$rs1,'update',"id=$reid");
$db->showpage('mobile'); //得到移动版的分页;
$db->showpage(); //PC版的分页 echo $db->strpage(); //得到分页的字符串
$db->getRow(); //得到单行
$db->ayinsert($tn,$ary); //插入,返回最新的ID;
$db->ayupdate($tn,$ary,$where); //更新
$db->getOne($sql); //得到一个字段; 只有微官网的类才有
$db->getRow($sql); //得到一行;只有微官网的类才有
$db->getAll($sql);
echo $db->pageMobileIndex($url);
//得到手机分页返回的分页文件字符串,做代码分离需要用到,其中$url 为分页的字符串,分页用 $$替换。
echo $db->pageindex($url);
//$url也可不填,会自动获得。需要做伪静态的时候,可以赋值;
//得到分页字符串文件,做代码分离需要用到,其中$url 为分页的字符串,分页用 $$替换。
在微网站及OA的类中,FuncClass 类的常用方法:
$db=FuncClass::dblink(); //得到一个数据库连接;
FuncClass::debug(); //任何对象或变量,保存一个调试记录;
FuncClass::setkey($key,$value); //保存一个键值对,可以用于快速配置;
FuncClass::getkey($key); //得到一个键值对;
FuncClass::select($v,$ary); //用于表单选择的赋值;
FuncClass::postwxdata($url,json_encode($ary)); //提交数据到微信服务器,第一个参数是地址,第2个参数是post内容
FuncClass::PostData($url,$post); //直接Post数据到URL上。POST为数组,例如:$rs['id']=5; $rs['info']=2345;
FuncClass::domainUrl($GLOBALS['userid']); //获得域名列表,传入userid;
FuncClass::authcode($string, $operation = 'DECODE', $key = '', $expiry = 0); //加密
为什么要把sesson封装进函数呢?
就是为了分布式,如果是分布式服务器,session只存一台服务器的硬盘上,而其他没有,这样负载均衡后就挂了。
预留一个session接口为分布式做铺垫;只要改这个函数就可以把session放入中间层
FuncClass::session("id",$rs['id']); //给session赋值; 只有一个参数就是读取session,
FuncClass::session("authnum_session"); //读取session
FuncClass::session_destroy();
|