www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/include/general.fun.php
<? !defined('M_COM') && exit('No Permisson'); include_once M_ROOT.'./include/ios.fun.php'; function un_virtual(&$str){ if(empty($str)) return; $str = str_replace('-','=',str_replace('/','&',$str)); $str = preg_replace("/\.html$/i",'',$str); return; } function en_virtual(&$str,$suffix=0){ global $virtualurl,$rewritephp; if(empty($str) || empty($virtualurl)) return; $str = str_replace('=','-',str_replace('&','/',$str)); $suffix && $str .= '.html'; $rewritephp && $str = str_replace('.php?',$rewritephp,$str); return; } function blank_content($url=''){ global $cms_abs; return "<html><head><meta http-equiv=\"expires\" content=\"0\"><meta http-equiv=\"refresh\" content=\"0;url=".$cms_abs.$url."\"></head></html>"; } function read_htmlcac($cacfile){ return (@include $cacfile) ? $caccnt : ''; } function save_htmlcac($cnt,$cacfile){ if(@$fp = fopen($cacfile,'wb')){ fwrite($fp,"<?php\n\$caccnt = '".addcslashes($cnt,'\'\\')."';\n?>"); fclose($fp); } } function cn_topid($id,&$arr){ if(empty($arr[$id])) return 0; return $arr[$id]['pid'] ? cn_topid($arr[$id]['pid'],$arr) : $id; } function saveastxt($str,$namepre=''){ global $archtmlmode,$timestamp; if($str == '') return ''; $dir = M_ROOT.'dynamic/htmltxt/'; if(!$namepre){ !is_dir($dir) && mmkdir($dir); $sub_dir = date($archtmlmode == 'month' ? 'Ym' : 'Ymd',$timestamp).'/'; !is_dir($dir.$sub_dir) && mmkdir($dir.$sub_dir); $namepre = $sub_dir.substr(md5(microtime()),5,15).random(6,1); } save_htmlcac($str,$dir.$namepre.'.php'); return $namepre; } function readfromtxt($namepre=''){ if(!$namepre) return ''; return read_htmlcac(M_ROOT.'dynamic/htmltxt/'.$namepre.'.php'); } function txtunlink($namepre=''){ if(!$namepre) return; @unlink(M_ROOT.'dynamic/htmltxt/'.$namepre.'.php'); } function mmkdir($dir,$create=1){ $ret = false; if(!is_dir($dir)){ $ret = @mkdir($dir,0777); if($create){ @touch($dir.'/index.htm'); @touch($dir.'/index.html'); } } return $ret; } function clear_dir($dir,$self = false){ if(is_dir($dir)){ $p = opendir($dir); while(false !== ($f = readdir($p))){ if('.' != $f && '..' != $f) clear_dir("$dir/$f",true); } closedir($p); if($self) rmdir($dir); }elseif(is_file($dir)) unlink($dir); } function sqlstr_replace($str,&$temparr){ return preg_replace("/\{\\$(.+?)\}/ies","sqlstrval('\\1',\$temparr)",$str); } function sqlstrval($tname,&$temparr){ global $timestamp; $temparr['timestamp'] = $timestamp; return isset($temparr[$tname]) ? $temparr[$tname] : ''; } function btagval($tname,&$sarr){ global $btags,$debugtag,$timestamp; $btags['timestamp'] = $timestamp; if(isset($sarr[$tname])){ return str_tagcode($sarr[$tname]); }elseif(isset($btags[$tname])){ return str_tagcode($btags[$tname]); }else return $debugtag ? "{ \$$tname}" : ''; } function str_tagcode(&$source,$decode=0){ return $decode ? str_replace(array(' $','? }'),array('$','?}'),$source) : str_replace(array('$','?}'),array(' $','? }'),$source); } function mailto($to,$subject,$msg,$sarr=array(),$from = '',$ischeck=0){ include_once M_ROOT.'./include/mail.fun.php'; $ret = sys_mail($to,splang($subject,$sarr),splang($msg,$sarr),$from); if(!$ischeck && $ret){ global $curuser,$timestamp; $record = mhtmlspecialchars($timestamp."\t".$curuser->infos['mid']."\t".$curuser->infos['mname']."\t".$ret); record2file('smtp',$record); } return $ret; } function splang($key,&$sarr){ global $splangs,$btags; load_cache('btags'); $ret = $key; load_cache('splangs'); if(isset($splangs[$key])) $ret = preg_replace("/\{\\$(.+?)\}/ies","btagval('\\1',\$sarr)",$splangs[$key]); return $ret; } function field_func(&$sarr,$func=''){ if(!$func) return ''; include_once M_ROOT."./dynamic/function/fields.fun.php"; $func = preg_replace("/\{\\$(.+?)\}/ies","funcval('\\1',\$sarr)",$func); $ret = @eval($func); return $ret; } function funcval($tname,&$sarr){ return isset($sarr[$tname]) ? $sarr[$tname] : ''; } function marray_slice($arr,$offset = 0,$length = 0){//只允许正序//保留键值 $length = empty($length) ? count($arr) : $length; if(version_compare(phpversion(), "5.0.2", ">=")){ return array_slice($arr,$offset,$length,true); }else{ $result = array(); $i = 0; foreach($arr as $k => $v){ if($length == count($result)) break; if($i >= $offset) $result[$k] = $v; $i ++; } return $result; } } function updaterecent($aid = 0,$type='clicks',$add = 0){//更新当天的统计记录//只加不减 global $db,$tblprefix,$timestamp,$monthstats,$weekstats; if(!$aid || $add <= 0) return; if(empty($monthstats) && empty($weekstats)) return; $vardate = date('Ymd',$timestamp); if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}arecents WHERE aid='$aid' AND vardate='$vardate'")){ $db->query("UPDATE {$tblprefix}arecents SET $type=$type + $add WHERE aid='$aid' AND vardate='$vardate'"); }else $db->query("INSERT INTO {$tblprefix}arecents SET aid='$aid',vardate='$vardate',$type='$add'"); } function load_tpl($tplname,$rt=1){ global $rtags,$templatedir,$sid,$subsites; $sid && $templatedir = $subsites[$sid]['templatedir'];//子站分别指定模板目录 $template = @file2str(M_ROOT."template/$templatedir/".$tplname); $rt && $template = preg_replace("/\{tpl\\$(.+?)\}/ies", "rtagval('\\1')",$template); return $template; } function rtagval($tname){ $rtag = read_tag('rtag',$tname); return $rtag ? $rtag['template'] : "{tpl\$$tname}"; } function self_sqlstr($coid,$ccids,$pre = ''){ global $cotypes,$timestamp; $sqlstr = ''; if(empty($ccids)) return $sqlstr; if(!is_array($ccids)) $ccids = array($ccids); $multi = 0; foreach($ccids as $ccid){ $sqlstr1 = ''; if(!($coclass = read_cache('coclass',$coid,$ccid)) || empty($coclass['conditions'])) continue; foreach(array('createdate','clicks','comments','praises','debases','favorites','orders','price','answers','currency',) as $var){ if(isset($coclass['conditions'][$var.'from'])){ $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').$pre.$var.">='".$coclass['conditions'][$var.'from']."'"; } if(isset($coclass['conditions'][$var.'to'])){ $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').$pre.$var."<'".$coclass['conditions'][$var.'to']."'"; } } if(isset($coclass['conditions']['indays'])) $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').$pre."createdate>='".($timestamp - 86400 * $coclass['conditions']['indays'])."'"; if(isset($coclass['conditions']['outdays'])) $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').$pre."createdate<'".($timestamp - 86400 * $coclass['conditions']['outdays'])."'"; if(isset($coclass['conditions']['closed'])){ if($coclass['conditions']['closed']){ $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').'('.$pre.'closed=1 OR '.$pre.'finishdate<'.$timestamp.')'; }else{ $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').'('.$pre.'closed=0 AND '.$pre.'finishdate>'.$timestamp.')'; } } if(isset($coclass['conditions']['sqlstr'])){ $coclass['conditions']['sqlstr'] = stripslashes(str_replace('{$pre}',$pre,$coclass['conditions']['sqlstr'])); $sqlstr1 .= ($sqlstr1 ? ' AND ' : '').'('.$coclass['conditions']['sqlstr'].')'; } ($sqlstr1 && $sqlstr) && $multi = 1; $sqlstr1 && $sqlstr .= ($sqlstr ? ' OR ' : '').'('.$sqlstr1.')'; } $multi && $sqlstr = '('.$sqlstr.')'; return $sqlstr; } function farc_active($caid=0){//激活某分类的排队信息 global $db,$tblprefix,$timestamp; if(!$caid) return; $fcatalog = read_cache('fcatalog',$caid); if(empty($fcatalog['taxcrid']) || empty($fcatalog['maxactive'])) return; if($wnums = max(0,$fcatalog['maxactive'] - $db->result_one("SELECT COUNT(*) FROM {$tblprefix}farchives WHERE caid='$caid' AND checked=1 AND startdate>0 AND (enddate=0 OR enddate>'$timestamp')"))){ $db->query("UPDATE {$tblprefix}farchives SET startdate='$timestamp',enddate=orderdays*86400+$timestamp,orderdays=0 WHERE checked=1 AND orderdays>0 AND caid=$caid ORDER BY vieworder,aid LIMIT $wnums"); } unset($fcatalog); return; } function cnodearr($urlstr,$sid=0){ global $subsites,$cmsinfos; include_once M_ROOT."./include/cparse.fun.php"; if($cnode = read_cache('cnode',$urlstr,'',$sid)){ view_cnurl($urlstr,$cnode); $cnode['sitename'] = empty($cnode['sid']) ? lang('msite') : $subsites[$cnode['sid']]['sitename']; $cnode['siteurl'] = view_siteurl($cnode['sid']); } return $cnode ? $cnode : false; } function order_arr(&$arr,$pid){ $tempids = $oarr = array(); $tempids = son_ids($arr,$pid,$tempids); foreach($tempids as $tempid) { $oarr[$tempid] = $arr[$tempid]; } unset($tempids); return $oarr; } function son_ids(&$arr,$pid,&$ids){ $narr = $arr; foreach($narr as $k => $v){ if($v['pid'] == $pid){ $ids[] = $k; $ids = son_ids($arr,$k,$ids); } } unset($narr); return $ids; } function view_url($url){ global $cms_abs,$ftp_url,$cmsurl; if(empty($url) || strpos($url,'://') !== false) return $url; $url = preg_replace("/^".regencode($cmsurl)."/i",$cms_abs,$url); return strpos($url,'://') !== false ? $url : ($cms_abs.$url); } function save_atmurl($url){ global $cmsurl,$cms_abs,$ftp_url,$dir_userfile; $url = preg_replace("/^".regencode($cms_abs)."/i",'',$url); $url = preg_replace("/^".regencode($cmsurl)."/i",'',$url); if($ftp_url) $url = preg_replace("/^".regencode($ftp_url)."/i",'<!ftpurl />',$url); return $url; } function html_atm2tag(&$str){//转义后的字串 global $cmsurl,$ftp_url,$cms_abs; $re = regencode($cms_abs).'|'.regencode($cmsurl).'|'.regencode($ftp_url); $str = addslashes(preg_replace("/(src\s*=\s*['\"]?)($re)(.+?['\" >])/ies",'"$1".("$2"==$ftp_url?"<!ftpurl />":"<!cmsurl />")."$3"',stripslashes($str))); } function tag2atm(&$str,$istext=0){ global $cms_abs,$ftp_url; $str = str_replace('<!cmsurl />',$cms_abs,str_replace('<!ftpurl />',$ftp_url,$str)); if(!$istext) $str = view_url($str); return $str; } function view_atmurl($url=''){//在处理端附件绑定域名是不会出现的,所以在处理端不要使用本函数 global $atm_smallsite,$dir_userfile; if(!$url) return ''; if($atm_smallsite) $url = preg_replace("/^".regencode($dir_userfile.'/')."/i",$atm_smallsite,$url); return tag2atm($url); } function view_thumburl($url){//数据库中保存的数据库格式 if(strpos($url,'<!ftpurl />') === 0){ $url .= '.s.jpg'; }elseif((strpos($url,'://') === false) && is_file(local_file($url.'.s.jpg'))) $url .= '.s.jpg'; return view_atmurl($url); } function view_farcurl($id,$url=''){//不需区分子站//$s:0为附属信息内容页,1为自定义独立页 global $virtualurl,$infohtmldir; if(!$url){ $url = "freeinfo.php?aid=$id"; en_virtual($url,1); }else $url = $infohtmldir.'/'.$url; return view_url($url); } function view_siteurl($sid=0){//子站域名如果解释??? global $enablestatic,$subsites,$cms_abs; if(!$sid) return $cms_abs; if(!$enablestatic){ $url = "index.php?sid=$sid"; en_virtual($url,1); }else $url = empty($subsites[$sid]['smallsite']) ? $subsites[$sid]['dirname'].'/' : $subsites[$sid]['smallsite']; return view_url($url); } function view_arcurl(&$archive){//处理栏目及子站绑定域名(后带/) global $cnhtmldir,$enablestatic,$subsites;//已经不存在文档保存目录了 if(empty($enablestatic)){ $arcurl = "archive.php?aid=$archive[aid]"; en_virtual($arcurl,1); }else{ $nsid = $archive['sid']; $catalogs = read_cache('catalogs','','',$nsid); $topid = cn_topid($archive['caid'],$catalogs); $catalog = read_cache('catalog',$topid,'',$nsid); if($catalog['smallsite']){//栏目绑定域名 $arcurl = $catalog['smallsite'].$archive['arcurl']; }elseif($nsid && $subsites[$nsid]['smallsite']){//子站绑定域名 $arcurl = $subsites[$nsid]['smallsite'].$catalogs[$topid]['dirname'].'/'.$archive['arcurl']; }else $arcurl = ($nsid ? $subsites[$nsid]['dirname'] : $cnhtmldir).'/'.$catalogs[$topid]['dirname'].'/'.$archive['arcurl'];//不绑定域名或非子站内容 unset($nsid,$catalogs,$catalog); } return view_url($arcurl); } function view_cnurl(&$cnstr,&$cnode){//为空url赋值、虚拟静态、二级哉名(后带/) global $enablestatic,$cnhtmldir,$subsites; if(empty($cnode)) return; if($cnode['appurl']){ $cnode['indexurl'] = $cnode['listurl'] = $cnode['bkurl'] = $cnode['appurl']; }else{ parse_str($cnstr,$idsarr); //需要得到所在频道类系的顶层分类 $items = $cnode['mainline'] == 'ca' ? read_cache('catalogs','','',$cnode['sid']) : read_cache('coclasses',$cnode['mainline'],$idsarr['ccid'.$cnode['mainline']]); $topid = cn_topid($cnode['mainline'] == 'ca' ? $idsarr['caid'] : $idsarr['ccid'.$cnode['mainline']],$items); $item = $cnode['mainline'] == 'ca' ? read_cache('catalog',$topid,'',$cnode['sid']) : read_cache('coclass',$cnode['mainline'],$topid); $nhtmldir = cn_htmldir($cnstr,$cnode['sid']); foreach(array('index','list','bk') as $var){ if(!$enablestatic){ $cnode[$var.'url'] = ($var == 'bk' ? 'list.php?bk=1&' : ($var.'.php?')).$cnstr.(empty($cnode['sid']) ? '' : ('&sid='.$cnode['sid'])); en_virtual($cnode[$var.'url'],1); }else{ $cnode[$var.'url'] = $nhtmldir.($var == 'index' ? '' : ($var == 'list' ? '1.html' : 'bk_1.html')); $subsite = $cnode['sid'] ? $subsites[$cnode['sid']] : array(); if($item['smallsite']){ $dirstr = (empty($cnode['sid']) ? $cnhtmldir : $subsite['dirname']).'/'.$item['dirname']; $cnode[$var.'url'] = preg_replace("/^".regencode($dirstr.'/')."/i",$item['smallsite'],$cnode[$var.'url']); }elseif(!empty($subsite['smallsite'])) $cnode[$var.'url'] = preg_replace("/^".regencode($subsite['dirname'].'/')."/i",$subsite['smallsite'],$cnode[$var.'url']); } $cnode[$var.'url'] = view_url($cnode[$var.'url']); } unset($items,$item,$idsarr,$subsite,$dirstr); } } function m_unlink($file='',$num=50){//完整目录的文件//删除序列性文件//?????????????????????????????????????????????? if(!$file) return; $ext = mextension($file); if($ext = mextension($file)){ $file_pre = substr($file,0,strlen($file) - strlen($ext) - 2); for($i = 1;$i <= $num;$i++){ if(!is_file($file_pre.$i.'.'.$ext)) break; @unlink($file_pre.$i.'.'.$ext); } } } function local_file($url){ global $cmsurl,$cms_abs; if(islocal($url)){ $url = M_ROOT.preg_replace("/^".regencode($cmsurl)."/i",'',preg_replace("/^".regencode($cms_abs)."/i",'',$url)); } return $url; } function islocal($url,$isatm=0){ global $cms_abs,$ftp_url,$atm_smallsite; if(strpos($url,'://') === false) return true; if(preg_match("/^".regencode($cms_abs)."/i",$url)) return true; if($isatm){ if(preg_match("/^".regencode($ftp_url)."/i",$url)) return true; if(preg_match("/^".regencode($atm_smallsite)."/i",$url)) return true; } return false; } function regencode($str){ $search = array("\\",'"',".","[", "]","(", ")","?","+","*","^","{","}","$","|","/","\(\*\)"); $replace = array("\\\\",'\"',"\.","\[","\]","\(","\)","\?","\+","\*","\^","\{","\}","\$","\|","\/","[\s\S]*?"); return str_replace($search,$replace,$str); } function in_str($me,$source){ return !(strpos($source,$me) === FALSE); } function loaduclasses($mid){ global $db,$tblprefix; $uclasses = array(); if(empty($mid)) return $uclasses; $query = $db->query("SELECT * FROM {$tblprefix}uclasses WHERE mid='$mid' ORDER BY vieworder"); while($uclass = $db->fetch_array($query)){ $uclasses[$uclass['ucid']] = $uclass['cname']; } return $uclasses; } function load_mstpls($mid=0){ global $db,$tblprefix,$mtconfigs; $mstpls = array(); if(!$mid) return $mstpls; $mtcid = $db->result_one("SELECT mtcid FROM {$tblprefix}members WHERE mid='$mid'"); $mtcid = empty($mtcid) ? 1 : $mtcid; if(empty($mtconfigs[$mtcid])) return $mstpls; $mstpls = $mtconfigs[$mtcid]['setting']; return $mstpls; } function file_down($file, $filename = ''){ global $timestamp; if(!file_exists($file)) return; $filename = $filename ? $filename : basename($file); $filetype = mextension($filename); $filesize = filesize($file); ob_end_clean(); @set_time_limit(900); header('Cache-control: max-age=31536000'); header('Expires: '.gmdate('D, d M Y H:i:s', $timestamp + 31536000).' GMT'); header('Content-Encoding: none'); header('Content-Length: '.$filesize); header('Content-Disposition: attachment; filename='.$filename); header('Content-Type: '.$filetype); readfile($file); exit; } function js_write(&$content){ echo "document.write('".str_replace(array("\n","\r"),' ',addslashes($content))."');"; } function record2file($rname,$record){ global $timestamp; $recorddir = M_ROOT.'./dynamic/records/'; $recordfile_pre = $recorddir.date('Ym',$timestamp).'_'.$rname; $recordfile = $recordfile_pre.'.php'; if(@filesize($recordfile) > 1024*1024){ $dir = opendir($recorddir); $length = strlen($rname); $maxid = $id = 0; while($file = readdir($dir)){ if(in_str($recordfile_pre,$file)){ $id = intval(substr($file,$length +8,-4)); ($id > $maxid) && ($maxid = $id); } } closedir($dir); $recordfilebk = $recordfile_pre.'_'.($maxid +1).'.php'; @rename($recordfile,$recordfilebk); } if($fp = @fopen($recordfile, 'a')){ @flock($fp, 2); $record = is_array($record) ? $record : array($record); foreach($record as $tmp) { fwrite($fp, "<?PHP exit;?>\t".str_replace(array('<?', '?>'), '', $tmp)."\n"); } fclose($fp); } } function findfiles($absdir,$str='',$inc=0){//$inc 0按扩展名查询,1按包含字串查询 $tempfiles = array(); if(is_dir($absdir)){ if($tempdir = opendir($absdir)){ while(($tempfile = readdir($tempdir)) !== false){ if(filetype($absdir."/".$tempfile) == 'file'){ if(!$str){ $tempfiles[] = $tempfile; }elseif(!$inc && mextension($tempfile) == $str){ $tempfiles[] = $tempfile; }elseif($inc && in_str($str,$tempfile)){ $tempfiles[] = $tempfile; } } } closedir($tempdir); } } return $tempfiles; } function keywords($nstr,$ostr=''){ global $hotkeywords,$db,$tblprefix; if(empty($nstr)) return ''; $nstr = str_replace(array(chr(0xa1).chr(0xa1), chr(0xa1).chr(0x40), chr(0xe3).chr(0x80).chr(0x80)), ' ', $nstr); $narr = array_unique(explode(' ',$nstr)); $oarr = $ostr ? explode(' ',addslashes($ostr)) : array(); $i = 0; $ret = $sqlstr = ''; foreach($narr as $str){ $str = strip_tags(trim($str)); if(preg_match('/^([\x7f-\xff_-]|\w){3,20}$/',$str)){ $ret .= ($ret ? ' ' : '').$str; ($hotkeywords && !in_array($str,$oarr)) && $sqlstr .= ($sqlstr ? ',' : '')."('$str')"; } $i ++; if($i > 4){ unset($narr,$oarr); break; } } $sqlstr && $db->query("INSERT INTO {$tblprefix}keywords (keyword) VALUES $sqlstr"); return $ret; } function mnl2br($string){ return nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '),$string)); } function br2nl($string){ return str_replace("<br />", '',$string); } function safestr($string){ $searcharr = array("/(javascript|jscript|js|vbscript|vbs|about):/i","/on(mouse|exit|error|click|dblclick|key|load|unload|change|move|submit|reset|cut|copy|select|start|stop)/i","/<script([^>]*)>/i","/<iframe([^>]*)>/i","/<frame([^>]*)>/i","/<link([^>]*)>/i","/@import/i"); $replacearr = array("\\1\n:","on\n\\1","<script\\1>","<iframe\\1>","<frame\\1>","<link\\1>","@\nimport"); $string = preg_replace($searcharr,$replacearr,$string); $string = str_replace("&#","&\n#",$string); return $string; } function file2str($filename){ if(!@$fp = fopen($filename, 'r')) return false; $str = fread($fp, filesize($filename)); fclose($fp); return $str; } function str2file($result,$filename){ if(!@$fp = fopen($filename, 'w')) return false; flock($fp, 2); fwrite($fp, $result); fclose($fp); return true; } function regcode_pass($rname,$code=''){ global $m_cookie,$timestamp,$cms_regcode; if(!$cms_regcode || !in_array($rname,explode(',',$cms_regcode))) return true; list($inittime, $initcode) = maddslashes(explode("\t", @authcode($m_cookie['08cms_regcode'],'DECODE')),1); if(($timestamp - $inittime) > 1800 || $initcode != $code){ return false; } return true; } function authcode($string, $operation, $key = '') { global $authorization; $key = md5($key ? $key : $authorization); $key_length = strlen($key); $string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string.$key), 0, 8).$string; $string_length = strlen($string); $rndkey = $box = array(); $result = ''; for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($key[$i % $key_length]); $box[$i] = $i; } for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { if(substr($result, 0, 8) == substr(md5(substr($result, 8).$key), 0, 8)) { return substr($result, 8); } else { return ''; } } else { return str_replace('=', '', base64_encode($result)); } } function is_robots(){ global $_SERVER; if(!defined('IS_ROBOT')) { $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla'; $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla'; if(preg_match("/($kw_browsers)/", $_SERVER['HTTP_USER_AGENT'])){ define('IS_ROBOT', FALSE); }elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_USER_AGENT'])){ define('IS_ROBOT', TRUE); }else{ define('IS_ROBOT', FALSE); } } return IS_ROBOT; } function mheader($string,$replace = true,$http_response_code = 0){ $string = str_replace(array("\r","\n"),'',$string); if(empty($http_response_code) || PHP_VERSION < '4.3'){ @header($string,$replace); }else{ @header($string,$replace,$http_response_code); } if(preg_match('/^\s*location:/is',$string)){ exit(); } } function maddslashes($string, $force = 0) { !defined('QUOTES_GPC') && define('QUOTES_GPC', get_magic_quotes_gpc()); if(!QUOTES_GPC || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = maddslashes($val, $force); } } else { $string = addslashes($string); } } return $string; } function mstripslashes($string){ if(is_array($string)) { foreach($string as $key => $val){ $string[$key] = mstripslashes($val); } } else { $string = stripslashes($string); } return $string; } function mis_uploaded_file($file){ return function_exists('is_uploaded_file') && (is_uploaded_file($file) || is_uploaded_file(str_replace('\\\\', '\\', $file))); } function mimplode($arr){ return empty($arr) ? '' : "'".implode("','", is_array($arr) ? $arr : array($arr))."'"; } function mexit($message = ''){ echo $message; output(); exit(); } function output(){ global $gzipenable; $content = ob_get_contents(); ob_end_clean(); $gzipenable ? ob_start('ob_gzhandler') : ob_start(); echo $content; } function submitcheck($var, $allowget = 0){ return empty($GLOBALS[$var]) ? false : true; } function mclearcookie($ckname='userauth'){ if($ckname == 'userauth'){ global $memberid,$memberpwd,$curuser; msetcookie('userauth','',-86400 * 365); $memberid = 0; $memberpwd = ''; unset($curuser); }else msetcookie($ckname,'',-86400 * 365); } function msetcookie($ckname, $ckvalue, $cklife = 0) { global $ckpre, $ckdomain, $ckpath, $timestamp, $_SERVER; setcookie($ckpre.$ckname, $ckvalue, $cklife ? $timestamp + $cklife : 0, $ckpath, $ckdomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0); } function mhtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = mhtmlspecialchars($val); } } else { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); } return $string; } function mextension($filename) { return trim(substr(strrchr($filename, '.'), 1, 10)); } function misuploadedfile($file) { return function_exists('is_uploaded_file') && (is_uploaded_file($file) || is_uploaded_file(str_replace('\\\\', '\\', $file))); } function ipaccess($ip, $accesslist) { return preg_match("/^(".str_replace(array("\r\n", ' '), array('|', ''), preg_quote($accesslist, '/')).")/", $ip); } function random($length, $onlynum = 0) { PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000); if($onlynum) { $result = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1)); } else { $result = ''; $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; $max = strlen($chars) - 1; for($i = 0; $i < $length; $i++) { $result .= $chars[mt_rand(0, $max)]; } } return $result; } function isemail($email){ return strlen($email) > 6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); } function isdate($date) { if(empty($date)) return FALSE; if(strlen($date) > 10) return FALSE; if(!preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/',$date)) return FALSE; list($year, $month, $day) = explode('-', $date); return @checkdate($month, $day, $year); } function cutstr($string, $length, $dot = ' ...') { global $mcharset; if(strlen($string) <= $length) { return $string; } $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); $strcut = ''; if(strtolower($mcharset) == 'utf-8') { $n = $tn = $noc = 0; while($n < strlen($string)) { $t = ord($string[$n]); if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { $tn = 1; $n++; $noc++; } elseif(194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif(224 <= $t && $t < 239) { $tn = 3; $n += 3; $noc += 2; } elseif(240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif(248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if($noc >= $length) { break; } } if($noc > $length) { $n -= $tn; } $strcut = substr($string, 0, $n); } else { for($i = 0; $i < $length - strlen($dot) - 1; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i]; } } $strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut); return $strcut.$dot; } ?>