www.gusucode.com > SDCMS三合一企业网站管理系统PHP源码程序 > SDCMS三合一企业网站管理系统/sdcms_swhy_v1.7/sdcms_swhy_v1.7/上传本目录中文件/app/function.php
<?php /** * 作用:常用函数 * 官网:Http://www.sdcms.cn * 作者:IT平民 * =========================================================================== * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用; * 未经授权不允许对程序代码以任何形式任何目的的再发布。 * =========================================================================== **/ #系统资源 function C($a=null) { static $_config=[]; if(empty($a)) { return $_config; } if(is_string($a)) { if(!strpos($a,'.')) { $a=strtoupper($a); return isset($_config[$a])?$_config[$a]:null; } else { $a=explode('.',$a); $a[0]=strtoupper($a[0]); return isset($_config[$a[0]][$a[1]])?$_config[$a[0]][$a[1]]:null; } } if(is_array($a)) { $_config=array_merge($_config,array_change_key_case($a,CASE_UPPER)); return null; } return null; } #模板资源 function T($a=null) { static $_theme=[]; if(empty($a)) { return $_theme; } if(is_string($a)) { if(!strpos($a,'.')) { $a=strtoupper($a); return isset($_theme[$a])?$_theme[$a]:null; } else { $a=explode('.',$a); $a[0]=strtoupper($a[0]); return isset($_theme[$a[0]][$a[1]])?$_theme[$a[0]][$a[1]]:null; } } if(is_array($a)) { $_theme=array_merge($_theme,array_change_key_case($a,CASE_UPPER)); return null; } return null; } #F函数(get和post) function F($a,$b='') { $a=strtolower($a); if(!strpos($a,'.')) { $method='other'; } else { list($method,$a)=explode('.',$a,2); } switch ($method) { case 'get': $input=$_GET; break; case 'post': $input=$_POST; break; case 'other': switch (REQUEST_METHOD) { case 'GET': $input=$_GET; break; case 'POST': $input=$_POST; break; default: return ''; break; } break; default: return ''; break; } $data=isset($input[$a])?$input[$a]:$b; if(is_string($data)) { $data=trim($data); } return enhtml($data); } #去掉bom function require_bom($a) { $b=file_get_contents($a); $c[1]=substr($b,0,1); $c[2]=substr($b,1,1); $c[3]=substr($b,2,1); if(ord($c[1])==239&&ord($c[2])==187&&ord($c[3])==191) { $d=substr($b,3); file_put_contents($a,$d); } unset($b); unset($c); return require($a); } #筛选URL function filter_url($a,$b,$c) { if(empty($a)) { $url1=U('goodslist','classid='.$b); $url2=U('goodslist','classid='.$b.$c); $url3=cateurl($b); $ext=C('url_ext'); if(strlen($ext)) { $url1=substr($url1,0,strlen($url1)-strlen($ext)); $url2=substr($url2,0,strlen($url2)-strlen($ext)); $url3=substr($url3,0,strlen($url3)-strlen($ext)); } $url=str_replace($url1,'',$url2); return $url3.$url.$ext; } else { $e=C('url_mid'); $d=str_replace('=',$e,$c); $d=str_replace('&',$e,$d); switch (C('url_mode')) { case '1': return WEB_DOMAIN."?m=$a".$c; break; case '2': if(isempty(C('pathinfo'))) { return WEB_DOMAIN."index.php/$a".$d.C('url_ext'); } else { return WEB_DOMAIN."index.php?".C('pathinfo')."=$a".$d.C('url_ext'); } break; case '3': return WEB_DOMAIN."$a".$d.C('url_ext'); break; } } } #URL组装 function U($a='',$b='',$c=1,$d=0) { return sdcms::geturl($a,$b,$c,$d); } function N($a,$b=0,$c='') { if($b==0) $b=C('URL_MODE'); if(strlen($c)) { if($b==1) { $c='&'.$c; } else { $urlmid=C('url_mid'); $c=str_replace('=',$urlmid,$c); $c=str_replace('&',$urlmid,$c); $c=$urlmid.$c; } } $webdomain=($a==C('admin'))?WEB_ROOT:WEB_DOMAIN; switch($b) { case '1': return $webdomain.'?m='.$a.$c; break; case '2': if(isempty(C('pathinfo'))) { return $webdomain.'index.php/'.$a.$c.C('URL_EXT'); } else { return $webdomain.'index.php?'.C('pathinfo').'='.$a.$c.C('URL_EXT'); } break; case '3': return $webdomain.$a.$c.C('URL_EXT'); break; } } #判断是否空值 function isempty($a) { if(SYSVERSION) { return ($a==''); } else { return empty($a); } } function session($a,$b='') { $prefix=C('PREFIX').$a; if($b=='') { if(isset($_SESSION[$prefix])) { return $_SESSION[$prefix]; } else { return null; } } elseif($b=='[del]')#删除单个变量 { unset($_SESSION[$prefix]); } elseif($b=='[delete]')#删除全部 { session_unset(); session_destroy(); } else { $_SESSION[$prefix]=$b; } } function cookie($a,$b='') { $prefix=C('PREFIX').$a; if($b=='') { if(isset($_COOKIE[$prefix])) { return $_COOKIE[$prefix]; } else { return null; } } elseif($b=='[del]') { setcookie($prefix,'',time()-1,null,null,null,null,true); } else { setcookie($prefix,$b,null,null,null,null,true); } } #https判断 function is_https() { if(!empty($_SERVER['HTTPS'])&&strtolower($_SERVER['HTTPS'])!=='off') { return true; } elseif(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']==='https') { return true; } elseif(!empty($_SERVER['HTTP_FRONT_END_HTTPS'])&&strtolower($_SERVER['HTTP_FRONT_END_HTTPS'])!=='off') { return true; } return false; } function theme_html($a) { $a=str_replace("&","&",$a); $a=str_replace("'","'",$a); $a=str_replace('"',""",$a); $a=str_replace("<","<",$a); $a=str_replace(">",">",$a); return $a; } function enhtml($a) { if(is_array($a)) { foreach ($a as $key=>$val) { $a[$key]=enhtml($val); } } else { return htmlspecialchars(filterExp(stripslashes($a)),ENT_QUOTES,'UTF-8'); } return $a; } function dehtml($a) { return htmlspecialchars_decode($a); } function nohtml($a) { if(is_string($a)) { $a=dehtml($a); $a=str_replace(' ','',$a); $a=str_replace('&nbsp;','',$a); $a=str_replace(' ','',$a); $a=preg_replace("@<style(.*?)</style>@is",'',$a); $a=trim(strip_tags($a)); } return $a; } function filterExp($a) { if(preg_match('/^select|insert|create|update|delete|alter|sleep|payload|\'|\\|\.\.\/|\.\/|union|into|load_file|outfile/i',$a)) { return ''; } else { return $a; } } function getint($a,$b=0) { if(is_array($a)) { $a=implode($a); } if(strlen($a)) { return (!preg_match("/^[-0-9]+$/",$a))?$b:substr($a,0,11); } else { return $b; } } function iif($a,$b,$c) { return $a?$b:$c; } #cutstr函数 function cutstr($a,$b,$c=0) { $d=mb_strcut($a,0,$b,'UTF8'); if(strlen($a)>$b&&$c==1) $d.='…'; return $d; } #getip函数 function getip($type=0) { $type=$type?1:0; static $ip=NULL; if($ip!==NULL) return $ip[$type]; if(isset($_SERVER['HTTP_X_REAL_IP'])) { $ip=$_SERVER['HTTP_X_REAL_IP']; } elseif(isset($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $pos=array_search('unknown',$arr); if(false!==$pos) unset($arr[$pos]); $ip=trim($arr[0]); } elseif(isset($_SERVER['REMOTE_ADDR'])) { $ip=$_SERVER['REMOTE_ADDR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } $long=sprintf("%u",ip2long($ip)); $ip=$long?array($ip,$long):array('0.0.0.0',0); return enhtml($ip[$type]); } #跳转 function go($url,$time=0,$msg='') { $msg=(isempty($msg))?"系统将在{$time}秒之后自动跳转到【{$url}】":$msg; if($time===0) { header('Location:'.$url); exit(); } else { header("refresh:{$time};url={$url}"); echo $msg; } } #发邮件 function send_mail($a,$b,$c) { $mail=new sdcms_mail(); return $mail->send($a,$b,$c); } function ismobile() { if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } if(isset($_SERVER['HTTP_VIA'])) { return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } if(isset($_SERVER['HTTP_USER_AGENT'])) { $clientkeywords = array ("android","phone","ipod","mqqbrowser","blackberry","nokia","windowsce","symbian","lg","ucweb","skyfire","webos","incognito","blackberry","mobile","bada"); if(preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } if(isset($_SERVER['HTTP_ACCEPT'])) { if((strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==false)&&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===false||(strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml')<strpos($_SERVER['HTTP_ACCEPT'],'text/html')))) { return true; } } return false; } #是否微信浏览器 function isweixin() { return (bool)(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'micromessenger')); } #是否Ipad function isipad() { return (bool)(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'ipad')); } #获取内容中所有图片,返回数组 function get_all_picurl($a,$b='') { #去掉反斜杠 $a=stripslashes($a); $num=preg_match_all('/<img.*?src="(.*?)".*?>/is',$a,$match); if($num) { $d=[]; for($i=0;$i<$num;$i++) { if(isempty($b)) { $d[$i]=$match[1][$i]; } else { if(!strpos($match[1][$i],$b)&&strpos($match[1][$i],"://")) { $d[$i]=$match[1][$i]; } } } return $d; } else { return ''; } } #处理筛选参数 function deal_filter($data,$field,$default) { $str=''; foreach ($data as $key=>$val) { if($key!=$field) { $str.='&'.$key.'='.$val.''; } else { $str.='&'.$key.'='.$default.''; } } return $str; } #文件单位 function formatBytes($size) { $units=array('B','K','M','G','TB'); for($i=0;$size>=1024&&$i<4;$i++) { $size/=1024; } return round($size,2).' '.$units[$i]; } #创建文件夹(无限级) function mkfolder($a) { if(!is_dir($a)) { return mkdir($a,0777,true); } } #删除文件夹(包含子目录) function delfolder($a) { $a=str_replace('','/',$a); $a=substr($a,-1)=='/'?$a:$a.'/'; if(!is_dir($a)) { return false; } $b=opendir($a); while(false!==($file=readdir($b))) { if($file=='.'||$file=='..') { continue; } if(!is_dir($a.$file)) { unlink($a.$file); } else { delfolder($a.$file); } } closedir($b); return rmdir($a); } #生成缩略图 function thumb($file,$width=200,$height=200,$type=1) { if($type==0) { return $file; } if(isempty($file)) { return ''; } if(strpos($file,'://')) { return $file; } if(preg_match(WEB_ROOT."upfile(.*)\$/",$file,$matches)) { $file=$matches[0]; } if(!file_exists(SYS_PATH.$file)) { return WEB_ROOT.$file; } $newpic=dirname($file).'/thumb_'.$width.'_'.$height.'_'.basename($file); if(!file_exists(SYS_PATH.$newpic)||filemtime(SYS_PATH.$newpic)<filemtime(SYS_PATH.$file)) { $image=new sdcms_image(); return $image->thumb($file,$width,$height,$newpic); } return WEB_ROOT.$newpic; } #数据库相关 function sysdb($a) { return C($a=strtoupper($a)); } function is_active($classid,$pid=0,$style=' class="hover"') { $data=explode(',',$pid); if(in_array($classid,$data)) { return $style; } else { return; } } function get_cate_info($id,$field,$default='') { $arr=C('category'); return isset($arr[$id])?$arr[$id][$field]:$default; } #获取栏目父ID function get_followid($id) { return get_cate_info($id,'followid',0); } #获取栏目名称 function get_catename($id) { return get_cate_info($id,'catename'); } #获取某一分类的子类数量 function get_sonid_num($id) { return get_cate_info($id,'child',0); } #查找某一分类的所有子类 function get_sonid_all($id) { return get_cate_info($id,'sonid',$id); } #查找某一分类的所有父类 function get_tree_parent($id) { return get_cate_info($id,'parent',$id); } function get_cate_self($t0,$t1,$t2,$t3) { if(strlen($t0)) { return $t0; } else { $t4=get_cate_info($t1,$t2); if(strlen($t4)) { return $t4; } else { return $t3; } } } #栏目URL function cateurl($a) { $cate=C('category'); $a=(string)$a; $d=$cate[$a]; $b=(is_array($d))?$d['cateurl']:''; $c=0; $e=$d['catedomain']; if(!isempty($e)&&!IS_MOBILE) { return WEB_HTTP."$e"; } if(is_array($d)) { if($d['catetype']=='-2') { $c=1; } } return link_url($a,$b,0,1,$c); } #内容URL function showurl($a,$b='',$c=0) { return link_url($a,$b,$c,2); } function link_url($a,$b,$c,$d,$e=0) { #$b是别名 if(isempty($b)) { if($d==1) { #获取栏目 if(C('url_mode')==1) { return U('home/index/cate','classid='.$a.''); } else { if(!isempty(C('url_list'))) { if(C('url_mode')==2) { $prefix=isempty(C('pathinfo'))?'index.php/':'index.php?'.C('pathinfo').'='; } else { $prefix=''; } $domain=get_cate_info($a,'catedomain',0); $pid=explode(',',get_tree_parent($a)); #获取顶级分类ID $topid=$pid[0]; $domain=get_cate_self($domain,$topid,'catedomain',''); if($domain=='') { $domain=WEB_DOMAIN; } else { if(!IS_MOBILE) { $domain=WEB_HTTP.$domain.WEB_ROOT; } else { $domain=WEB_DOMAIN; } } return $domain.$prefix.C('url_list').C('url_mid').$a.C('url_ext'); } else { return U('home/index/cate','classid='.$a.''); } } } else { if(C('url_mode')==1) { return U('home/index/show','id='.$a.''); } else { #获取内容所在类别的别名 $alias=get_cate_info($c,'cateurl',0); $domain=get_cate_info($c,'catedomain',0); $pid=explode(',',get_tree_parent($c)); #获取顶级分类ID $topid=$pid[0]; #如果当前栏目没有别名,则获取顶级栏目的别名,如果顶级栏目没有别名,则调用系统内容的映射 $alias=get_cate_self($alias,$topid,'cateurl',C('url_show')); if(get_cate_info($topid,'catetype',0)==-2) { $alias=C('url_show'); } $domain=get_cate_self($domain,$topid,'catedomain',''); if($domain=='') { $domain=WEB_DOMAIN; } else { if(!IS_MOBILE) { $domain=WEB_HTTP.$domain.WEB_ROOT; } else { $domain=WEB_DOMAIN; } } if(!isempty($alias)) { if(C('url_mode')==2) { $prefix=isempty(C('pathinfo'))?'index.php/':'index.php?'.C('pathinfo').'='; } else { $prefix=''; } return $domain.$prefix.$alias.C('url_mid').$a.C('url_ext'); } else { return U('home/index/show','id='.$a.''); } } } } else { $ext=C('url_ext'); if($e==0) { $domain=get_cate_info($a,'catedomain',0); $pid=explode(',',get_tree_parent($a)); #获取顶级分类ID $topid=$pid[0]; $domain=get_cate_self($domain,$topid,'catedomain',''); if($domain=='') { $domain=WEB_DOMAIN; } else { if(!IS_MOBILE) { $domain=WEB_HTTP.$domain.WEB_ROOT; } else { $domain=WEB_DOMAIN; } } switch (C('url_mode')) { case '1': return $domain."?m=$b"; break; case '2': if(C('pathinfo')=='') { return $domain."index.php/$b$ext"; } else { return $domain."index.php?".C('pathinfo')."=$b$ext"; } break; default: return $domain."$b$ext"; break; } } else { return $b; } } } #处理副栏目查询 function deal_subid($subid) { $str=''; if(!empty($subid)) { $arr=explode(',', $subid); foreach ($arr as $key=>$val) { $val=",".$val.","; if($str=='') { $str.=" subid like binary '%$val%'"; } else { $str.=" or subid like binary '%$val%'"; } } if(!isempty($str)) { $str=" or ($str)"; } } return $str; } #内容分页 function pagelist($a,$b=0,$c=5) { if($b<=1) { return ''; } $page=new sdcms_page(1,$b,20,$a); return $page->pageList($c); } #列表自定义字段使用 function deal_field($a,$b,$c) { if(isset($c[$b])) { $rs=$c[$b]; switch ($rs['field_type']) { case '2':#日期 return date('Y-m-d',$a); break; case '10':#复选框 return deal_checkbox($a,$rs['field_list']); break; case '9':#单选按钮 case '11':#下拉列表 return deal_defaults($a,$rs['field_list']); break; default: return $a; break; } } else { return $a; } } function deal_checkbox($a,$b) { $r=''; $c=explode(',',$b); foreach ($c as $key=>$val) { list($d,$e)=explode('|', $val); if(strpos('-_-,'.$a.',',','.$e.',')) { $r.=$d.' '; } } return $r; } function deal_defaults($a,$b) { $c=explode(',',$b); foreach ($c as $key=>$val) { list($d,$e)=explode('|', $val); if($e==$a) { return $d; } } } #以下为自定义表单使用 function deal_rule($a,$b) { $c=''; switch ($a) { case '1': $c='null'; break; case "2": $c='date'; break; case "3": $c='int'; break; case "4": $c='dot'; break; case "5": $c='tel'; break; case "6": $c='mobile'; break; case "7": $c='email'; break; case "8": $c='zipcode'; break; case "9": $c='qq'; break; case "10": $c='url'; break; case "11": $c='username'; break; case "12": $c='password'; break; default: break; } if($c=='') { return ''; } else { $c=str_replace('null', '', $c); return 'data-rule="'.$b.':required;'.$c.'"'; } } #后台相关 function is_admin() { $info=session('admin_info'); return (isempty($info)?0:$info['adminid']); } function get_admin_info($a) { $info=session('admin_info'); return $info[$a]; } #会员相关 function is_user() { $info=session('user_info'); return (empty($info)?0:$info['id']); } function get_user_info($a) { $info=session('user_info'); return $info[$a]; } #时间显示 function formatTime($time) { $rtime=date("m-d H:i",$time); $htime=date("H:i",$time); $time=time()-$time; if($time<60) { $str='刚刚'; } elseif($time<60*60) { $min=floor($time/60); $str=$min.'分钟前'; } elseif($time<60*60*24) { $h=floor($time/(60*60)); $str=$h.'小时前'; } elseif($time<60*60*24*3) { $d=floor($time/(60*60*24)); if($d==1) { $str='昨天 '.$rtime; } else { $str='前天 '.$rtime; } } else { $str=$rtime; } return $str; } #运行时间 function runtime() { $GLOBALS['end']=['0'=>microtime(true),'1'=>memory_get_usage()]; return 'Processed in '.number_format(($GLOBALS['end'][0]-$GLOBALS['begin'][0]),6).' s , Memory '.formatBytes(($GLOBALS['end'][1]-$GLOBALS['begin'][1])).' , '.$GLOBALS['query'].' queries'; } #5.4版本不支持此函数 if (!function_exists('curl_file_create')) { function curl_file_create($filename, $mimetype = '', $postname = '') { return "@$filename;filename=" . ($postname ?: basename($filename)) . ($mimetype ? ";type=$mimetype" : ''); } }