php开发项目--常用自定义函数
发布时间:2015-10-14, 15:19:38 分类:PHP | 编辑 off 网址 | 辅助
正文 26419字数 176,565阅读
//返回格林威治标准时间
function MyDate($format='Y-m-d H:i:s',$timest=0)
{
global $cfg_cli_time;
$addtime = $cfg_cli_time * 3600;
if(empty($format))
{
$format = 'Y-m-d H:i:s';
}
return gmdate ($format,$timest+$addtime);
}
function GetAlabNum($fnum)
{
$nums = array("0","1","2","3","4","5","6","7","8","9");
//$fnums = "0123456789";
$fnums = array("0","1","2","3","4","5","6","7","8","9");
$fnum = str_replace($nums,$fnums,$fnum);
$fnum = ereg_replace("[^0-9\.-]",'',$fnum);
if($fnum=='')
{
$fnum=0;
}
return $fnum;
}
function Html2Text($str,$r=0)
{
if(!function_exists('SpHtml2Text'))
{
require_once(DEDEINC."/inc/inc_fun_funString.php");
}
if($r==0)
{
return SpHtml2Text($str);
}
else
{
$str = SpHtml2Text(stripslashes($str));
return addslashes($str);
}
}
//文本转HTML
function Text2Html($txt)
{
$txt = str_replace(" "," ",$txt);
$txt = str_replace("<","<",$txt);
$txt = str_replace(">",">",$txt);
$txt = preg_replace("/[\r\n]{1,}/isU","<br/>\r\n",$txt);
return $txt;
}
function AjaxHead()
{
@header("Pragma:no-cache\r\n");
@header("Cache-Control:no-cache\r\n");
@header("Expires:0\r\n");
}
//中文截取2,单字节截取模式
//如果是request的内容,必须使用这个函数
function cn_substrR($str,$slen,$startdd=0)
{
$str = cn_substr(stripslashes($str),$slen,$startdd);
return addslashes($str);
}
//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)
{
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8')
{
return cn_substr_utf8($str,$slen,$startdd);
}
$restr = '';
$c = '';
$str_len = strlen($str);
if($str_len < $startdd+1)
{
return '';
}
if($str_len < $startdd + $slen || $slen==0)
{
$slen = $str_len - $startdd;
}
$enddd = $startdd + $slen - 1;
for($i=0;$i<$str_len;$i++)
{
if($startdd==0)
{
$restr .= $c;
}
else if($i > $startdd)
{
$restr .= $c;
}
if(ord($str[$i])>0x80)
{
if($str_len>$i+1)
{
$c = $str[$i].$str[$i+1];
}
$i++;
}
else
{
$c = $str[$i];
}
if($i >= $enddd)
{
if(strlen($restr)+strlen($c)>$slen)
{
break;
}
else
{
$restr .= $c;
break;
}
}
}
return $restr;
}
//utf-8中文截取,单字节截取模式
function cn_substr_utf8($str, $length, $start=0)
{
if(strlen($str) < $start+1)
{
return '';
}
preg_match_all("/./su", $str, $ar);
$str = '';
$tstr = '';
//为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
for($i=0; isset($ar[0][$i]); $i++)
{
if(strlen($tstr) < $start)
{
$tstr .= $ar[0][$i];
}
else
{
if(strlen($str) < $length + strlen($ar[0][$i]) )
{
$str .= $ar[0][$i];
}
else
{
break;
}
}
}
return $str;
}
function GetMkTime($dtime)
{
global $cfg_cli_time;
if(!ereg("[^0-9]",$dtime))
{
return $dtime;
}
$dtime = trim($dtime);
$dt = Array(1970,1,1,0,0,0);
$dtime = ereg_replace("[\r\n\t]|日|秒"," ",$dtime);
$dtime = str_replace("年","-",$dtime);
$dtime = str_replace("月","-",$dtime);
$dtime = str_replace("时",":",$dtime);
$dtime = str_replace("分",":",$dtime);
$dtime = trim(ereg_replace("[ ]{1,}"," ",$dtime));
$ds = explode(" ",$dtime);
$ymd = explode("-",$ds[0]);
if(!isset($ymd[1]))
{
$ymd = explode(".",$ds[0]);
}
if(isset($ymd[0]))
{
$dt[0] = $ymd[0];
}
if(isset($ymd[1]))
{
$dt[1] = $ymd[1];
}
if(isset($ymd[2]))
{
$dt[2] = $ymd[2];
}
if(strlen($dt[0])==2)
{
$dt[0] = '20'.$dt[0];
}
if(isset($ds[1]))
{
$hms = explode(":",$ds[1]);
if(isset($hms[0]))
{
$dt[3] = $hms[0];
}
if(isset($hms[1]))
{
$dt[4] = $hms[1];
}
if(isset($hms[2]))
{
$dt[5] = $hms[2];
}
}
foreach($dt as $k=>$v)
{
$v = ereg_replace("^0{1,}",'',trim($v));
if($v=='')
{
$dt[$k] = 0;
}
}
$mt = @gmmktime($dt[3],$dt[4],$dt[5],$dt[1],$dt[2],$dt[0]) - 3600 * $cfg_cli_time;
if(!empty($mt))
{
return $mt;
}
else
{
return time();
}
}
function SubDay($ntime,$ctime)
{
$dayst = 3600 * 24;
$cday = ceil(($ntime-$ctime)/$dayst);
return $cday;
}
function AddDay($ntime,$aday)
{
$dayst = 3600 * 24;
$oktime = $ntime + ($aday * $dayst);
return $oktime;
}
function GetDateTimeMk($mktime)
{
return MyDate('Y-m-d H:i:s',$mktime);
}
function GetDateMk($mktime)
{
return MyDate("Y-m-d",$mktime);
}
function GetIP()
{
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
{
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else if(!empty($_SERVER["REMOTE_ADDR"]))
{
$cip = $_SERVER["REMOTE_ADDR"];
}
else
{
$cip = '';
}
preg_match("/[\d\.]{7,15}/", $cip, $cips);
$cip = isset($cips[0]) ? $cips[0] : 'unknown';
unset($cips);
return $cip;
}
//获取拼音以gbk编码为准
function GetPinyin($str,$ishead=0,$isclose=1)
{
global $cfg_soft_lang;
if(!function_exists('SpGetPinyin'))
{
require_once(DEDEINC."/inc/inc_fun_funAdmin.php");
}
if($cfg_soft_lang=='utf-8')
{
return SpGetPinyin(utf82gb($str),$ishead,$isclose);
}
else
{
return SpGetPinyin($str,$ishead,$isclose);
}
}
function GetNewInfo()
{
if(!function_exists('SpGetNewInfo'))
{
require_once(DEDEINC."/inc/inc_fun_funAdmin.php");
}
return SpGetNewInfo();
}
function UpdateStat()
{
include_once(DEDEINC."/inc/inc_stat.php");
return SpUpdateStat();
}
$arrs1 = array(0x63,0x66,0x67,0x5f,0x70,0x6f,0x77,0x65,0x72,0x62,0x79);
$arrs2 = array(0x20,0x3c,0x61,0x20,0x68,0x72,0x65,0x66,0x3d,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,
0x77,0x77,0x77,0x2e,0x64,0x65,0x64,0x65,0x63,0x6d,0x73,0x2e,0x63,0x6f,0x6d,0x20,0x74,0x61,0x72,
0x67,0x65,0x74,0x3d,0x27,0x5f,0x62,0x6c,0x61,0x6e,0x6b,0x27,0x3e,0x50,0x6f,0x77,0x65,0x72,0x20,
0x62,0x79,0x20,0x44,0x65,0x64,0x65,0x43,0x6d,0x73,0x3c,0x2f,0x61,0x3e);
function ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)
{
if(empty($GLOBALS['cfg_phpurl'])) $GLOBALS['cfg_phpurl'] = '..';
$htmlhead = "<html>\r\n<head>\r\n<title>SIOGONCMS提示信息</title>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\r\n";
$htmlhead .= "<base target='_self'/>\r\n<style>div{line-height:160%;}</style></head>\r\n<body leftmargin='0' topmargin='0'>".(isset($GLOBALS['ucsynlogin']) ? $GLOBALS['ucsynlogin'] : '')."\r\n<center>\r\n<script>\r\n";
$htmlfoot = "</script>\r\n</center>\r\n</body>\r\n</html>\r\n";
$litime = ($limittime==0 ? 1000 : $limittime);
$func = '';
if($gourl=='-1')
{
if($limittime==0) $litime = 5000;
$gourl = "javascript:history.go(-1);";
}
if($gourl=='' || $onlymsg==1)
{
$msg = "<script>alert(\"".str_replace("\"","“",$msg)."\");</script>";
}
else
{
//当网址为:close::objname 时, 关闭父框架的id=objname元素
if(eregi('close::',$gourl))
{
$tgobj = trim(eregi_replace('close::', '', $gourl));
$gourl = 'javascript:;';
$func .= "window.parent.document.getElementById('{$tgobj}').style.display='none';\r\n";
}
$func .= " var pgo=0;
function JumpUrl(){
if(pgo==0){ location='$gourl'; pgo=1; }
}\r\n";
$rmsg = $func;
$rmsg .= "document.write(\"<br /><div style='width:450px;padding:100px 0px 0px 0px;background: url({$GLOBALS['cfg_phpurl']}/img/wbg.png) no-repeat'>";
$rmsg .= "<div style='padding:6px;font-size:12px;'><b>SIOGONCMS 提示信息!</b></div>\");\r\n";
$rmsg .= "document.write(\"<div style='height:130px;font-size:10pt;border-top:0px;border-left:1px solid #B3C800;border-right:1px solid #B3C800;border-bottom:1px solid #B3C800;'><br />\");\r\n";
$rmsg .= "document.write(\"".str_replace("\"","“",$msg)."\");\r\n";
$rmsg .= "document.write(\"";
if($onlymsg==0)
{
if( $gourl != 'javascript:;' && $gourl != '')
{
$rmsg .= "<br /><a href='{$gourl}'>如果你的浏览器没反应,请点击这里...</a>";
$rmsg .= "<br/></div>\");\r\n";
$rmsg .= "setTimeout('JumpUrl()',$litime);";
}
else
{
$rmsg .= "<br/></div>\");\r\n";
}
}
else
{
$rmsg .= "<br/><br/></div>\");\r\n";
}
$msg = $htmlhead.$rmsg.$htmlfoot;
}
echo $msg;
}
function ExecTime()
{
$time = explode(" ", microtime());
$usec = (double)$time[0];
$sec = (double)$time[1];
return $sec + $usec;
}
function GetEditor($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false")
{
if(!function_exists('SpGetEditor'))
{
require_once(DEDEINC."/inc/inc_fun_funAdmin.php");
}
return SpGetEditor($fname,$fvalue,$nheight,$etype,$gtype,$isfullpage);
}
function GetTemplets($filename)
{
if(file_exists($filename))
{
$fp = fopen($filename,"r");
$rstr = fread($fp,filesize($filename));
fclose($fp);
return $rstr;
}
else
{
return '';
}
}
function GetSysTemplets($filename)
{
return GetTemplets($GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].'/system/'.$filename);
}
function AttDef($oldvar,$nv)
{
return empty($oldvar) ? $nv : $oldvar;
}
function dd2char($ddnum)
{
$ddnum = strval($ddnum);
$slen = strlen($ddnum);
$okdd = '';
$nn = '';
for($i=0;$i<$slen;$i++)
{
if(isset($ddnum[$i+1]))
{
$n = $ddnum[$i].$ddnum[$i+1];
if( ($n>96 && $n<123) || ($n>64 && $n<91) )
{
$okdd .= chr($n);
$i++;
}
else
{
$okdd .= $ddnum[$i];
}
}
else
{
$okdd .= $ddnum[$i];
}
}
return $okdd;
}
function PutCookie($key,$value,$kptime=0,$pa="/")
{
global $cfg_cookie_encode;
setcookie($key,$value,time()+$kptime,$pa);
setcookie($key.'__ckMd5',substr(md5($cfg_cookie_encode.$value),0,16),time()+$kptime,$pa);
}
function DropCookie($key)
{
setcookie($key,'',time()-360000,"/");
setcookie($key.'__ckMd5','',time()-360000,"/");
}
function GetCookie($key)
{
global $cfg_cookie_encode;
if( !isset($_COOKIE[$key]) || !isset($_COOKIE[$key.'__ckMd5']) )
{
return '';
}
else
{
if($_COOKIE[$key.'__ckMd5']!=substr(md5($cfg_cookie_encode.$_COOKIE[$key]),0,16))
{
return '';
}
else
{
return $_COOKIE[$key];
}
}
}
function GetCkVdValue()
{
@session_start();
return isset($_SESSION['dd_ckstr']) ? $_SESSION['dd_ckstr'] : '';
}
//php某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数
function ResetVdValue()
{
@session_start();
$_SESSION['dd_ckstr'] = '';
$_SESSION['dd_ckstr_last'] = '';
}
function FtpMkdir($truepath,$mmode,$isMkdir=true)
{
global $cfg_basedir,$cfg_ftp_root,$g_ftpLink;
OpenFtp();
$ftproot = ereg_replace($cfg_ftp_root.'$','',$cfg_basedir);
$mdir = ereg_replace('^'.$ftproot,'',$truepath);
if($isMkdir)
{
ftp_mkdir($g_ftpLink,$mdir);
}
return ftp_site($g_ftpLink,"chmod $mmode $mdir");
}
function FtpChmod($truepath,$mmode)
{
return FtpMkdir($truepath,$mmode,false);
}
function OpenFtp()
{
global $cfg_basedir,$cfg_ftp_host,$cfg_ftp_port, $cfg_ftp_user,$cfg_ftp_pwd,$cfg_ftp_root,$g_ftpLink;
if(!$g_ftpLink)
{
if($cfg_ftp_host=='')
{
echo "由于你的站点的PHP配置存在限制,程序尝试用FTP进行目录操作,你必须在后台指定FTP相关的变量!";
exit();
}
$g_ftpLink = ftp_connect($cfg_ftp_host,$cfg_ftp_port);
if(!$g_ftpLink)
{
echo "连接FTP失败!";
exit();
}
if(!ftp_login($g_ftpLink,$cfg_ftp_user,$cfg_ftp_pwd))
{
echo "登陆FTP失败!";
exit();
}
}
}
function CloseFtp()
{
global $g_ftpLink;
if($g_ftpLink)
{
@ftp_quit($g_ftpLink);
}
}
function MkdirAll($truepath,$mmode)
{
global $cfg_ftp_mkdir,$isSafeMode,$cfg_dir_purview;
if($isSafeMode||$cfg_ftp_mkdir=='Y')
{
return FtpMkdir($truepath,$mmode);
}
else
{
if(!file_exists($truepath))
{
mkdir($truepath,$cfg_dir_purview);
chmod($truepath,$cfg_dir_purview);
return true;
}
else
{
return true;
}
}
}
function ParCv($n)
{
return chr($n);
}
function ChmodAll($truepath,$mmode)
{
global $cfg_ftp_mkdir,$isSafeMode;
if($isSafeMode||$cfg_ftp_mkdir=='Y')
{
return FtpChmod($truepath,$mmode);
}
else
{
return chmod($truepath,'0'.$mmode);
}
}
function CreateDir($spath)
{
if(!function_exists('SpCreateDir'))
{
require_once(DEDEINC.'/inc/inc_fun_funAdmin.php');
}
return SpCreateDir($spath);
}
// $rptype = 0 表示仅替换 html标记
// $rptype = 1 表示替换 html标记同时去除连续空白字符
// $rptype = 2 表示替换 html标记同时去除所有空白字符
// $rptype = -1 表示仅替换 html危险的标记
function HtmlReplace($str,$rptype=0)
{
$str = stripslashes($str);
if($rptype==0)
{
$str = htmlspecialchars($str);
}
else if($rptype==1)
{
$str = htmlspecialchars($str);
$str = str_replace(" ",' ',$str);
$str = ereg_replace("[\r\n\t ]{1,}",' ',$str);
}
else if($rptype==2)
{
$str = htmlspecialchars($str);
$str = str_replace(" ",'',$str);
$str = ereg_replace("[\r\n\t ]",'',$str);
}
else
{
$str = ereg_replace("[\r\n\t ]{1,}",' ',$str);
$str = eregi_replace('script','script',$str);
$str = eregi_replace("<[/]{0,1}(link|meta|ifr|fra)[^>]*>",'',$str);
}
return addslashes($str);
}
//获得某文档的所有tag
function GetTags($aid)
{
global $dsql;
$tags = '';
$query = "Select tag From `#@__taglist` where aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
}
return $tags;
}
function ParamError()
{
ShowMsg('对不起,你输入的参数有误!','javascript:;');
exit();
}
//过滤用于搜索的字符串
function FilterSearch($keyword)
{
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8')
{
$keyword = ereg_replace("[\"\r\n\t\$\\><']",'',$keyword);
if($keyword != stripslashes($keyword))
{
return '';
}
else
{
return $keyword;
}
}
else
{
$restr = '';
for($i=0;isset($keyword[$i]);$i++)
{
if(ord($keyword[$i]) > 0x80)
{
if(isset($keyword[$i+1]) && ord($keyword[$i+1]) > 0x40)
{
$restr .= $keyword[$i].$keyword[$i+1];
$i++;
}
else
{
$restr .= ' ';
}
}
else
{
if(eregi("[^0-9a-z@#\.]",$keyword[$i]))
{
$restr .= ' ';
}
else
{
$restr .= $keyword[$i];
}
}
}
}
return $restr;
}
//处理禁用HTML但允许换行的内容
function TrimMsg($msg)
{
$msg = trim(stripslashes($msg));
$msg = nl2br(htmlspecialchars($msg));
$msg = str_replace(" "," ",$msg);
return addslashes($msg);
}
//获取单篇文档信息
function GetOneArchive($aid)
{
global $dsql;
include_once(DEDEINC."/channelunit.func.php");
$aid = trim(ereg_replace('[^0-9]','',$aid));
$reArr = array();
$chRow = $dsql->GetOne("Select arc.*,ch.maintable,ch.addtable,ch.issystem From `#@__arctiny` arc left join `#@__channeltype` ch on ch.id=arc.channel where arc.id='$aid' ");
if(!is_array($chRow)) {
return $reArr;
}
else {
if(empty($chRow['maintable'])) $chRow['maintable'] = '#@__archives';
}
if($chRow['issystem']!=-1)
{
$nquery = " Select arc.*,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
From `{$chRow['maintable']}` arc left join `#@__arctype` tp on tp.id=arc.typeid
where arc.id='$aid' ";
}
else
{
$nquery = " Select arc.*,1 as ismake,0 as money,'' as filename,tp.typedir,tp.topid,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
From `{$chRow['addtable']}` arc left join `#@__arctype` tp on tp.id=arc.typeid
where arc.aid='$aid' ";
}
$arcRow = $dsql->GetOne($nquery);
if(!is_array($arcRow)) {
return $reArr;
}
if(!isset($arcRow['description'])) {
$arcRow['description'] = '';
}
if(empty($arcRow['description']) && isset($arcRow['body'])) {
$arcRow['description'] = cn_substr(html2text($arcRow['body']),250);
}
if(!isset($arcRow['pubdate'])) {
$arcRow['pubdate'] = $arcRow['senddate'];
}
if(!isset($arcRow['notpost'])) {
$arcRow['notpost'] = 0;
}
$reArr = $arcRow;
$reArr['aid'] = $aid;
$reArr['topid'] = $arcRow['topid'];
$reArr['arctitle'] = $arcRow['title'];
$reArr['arcurl'] = GetFileUrl($aid,$arcRow['typeid'],$arcRow['senddate'],$reArr['title'],$arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],
$arcRow['typedir'],$arcRow['money'],$arcRow['filename'],$arcRow['moresite'],$arcRow['siteurl'],$arcRow['sitepath']);
return $reArr;
}
//获取模型的表信息
function GetChannelTable($id,$formtype='channel')
{
global $dsql;
if($formtype == 'archive')
{
$query = "select ch.maintable, ch.addtable from #@__arctiny tin left join #@__channeltype ch on ch.id=tin.channel where tin.id='$id'";
}
elseif($formtype == 'typeid')
{
$query = "select ch.maintable, ch.addtable from #@__arctype act left join #@__channeltype ch on ch.id=act.channeltype where act.id='$id'";
}
else
{
$query = "select maintable, addtable from #@__channeltype where id='$id'";
}
$row = $dsql->getone($query);
return $row;
}
function jstrim($str,$len)
{
$str = preg_replace("/{quote}(.*){\/quote}/is",'',$str);
$str = str_replace('<br/>',' ',$str);
$str = cn_substr($str,$len);
$str = ereg_replace("['\"\r\n]","",$str);
return $str;
}
function jstrimjajx($str,$len)
{
$str = preg_replace("/{quote}(.*){\/quote}/is",'',$str);
$str = str_replace('<br/>',' ',$str);
$str = cn_substr($str,$len);
$str = ereg_replace("['\"\r\n]","",$str);
$str = str_replace('<', '<', $str);
$str = str_replace('>', '>', $str);
return $str;
}
/*-------------------------------
//管理员上传文件的通用函数
//filetype: image、media、addon
//return: -1 没选定上传文件,0 文件类型不允许, -2 保存失败,其它:返回上传后的文件名
//$file_type='' 对于swfupload上传的文件, 因为没有filetype,所以需指定,并且有些特殊之处不同
-------------------------------*/
function AdminUpload($uploadname, $ftype='image', $rnddd=0, $watermark=true, $filetype='' )
{
global $dsql, $cuserLogin, $cfg_addon_savetype, $cfg_dir_purview;
global $cfg_basedir, $cfg_image_dir, $cfg_soft_dir, $cfg_other_medias;
global $cfg_imgtype, $cfg_softtype, $cfg_mediatype;
if($watermark) include_once(DEDEINC.'/image.func.php');
$file_tmp = isset($GLOBALS[$uploadname]) ? $GLOBALS[$uploadname] : '';
if($file_tmp=='' || !is_uploaded_file($file_tmp) )
{
return -1;
}
$file_tmp = $GLOBALS[$uploadname];
$file_size = filesize($file_tmp);
$file_type = $filetype=='' ? strtolower(trim($GLOBALS[$uploadname.'_type'])) : $filetype;
$file_name = isset($GLOBALS[$uploadname.'_name']) ? $GLOBALS[$uploadname.'_name'] : '';
$file_snames = explode('.', $file_name);
$file_sname = strtolower(trim($file_snames[count($file_snames)-1]));
if($ftype=='image' || $ftype=='imagelit')
{
$filetype = '1';
$sparr = Array('image/pjpeg', 'image/jpeg', 'image/gif', 'image/png', 'image/xpng', 'image/wbmp');
if(!in_array($file_type, $sparr)) return 0;
if($file_sname=='')
{
if($file_type=='image/gif') $file_sname = 'jpg';
else if($file_type=='image/png' || $file_type=='image/xpng') $file_sname = 'png';
else if($file_type=='image/wbmp') $file_sname = 'bmp';
else $file_sname = 'jpg';
}
$filedir = $cfg_image_dir.'/'.MyDate($cfg_addon_savetype, time());
}
else if($ftype=='media')
{
$filetype = '3';
if( !eregi($cfg_mediatype, $file_sname) ) return 0;
$filedir = $cfg_other_medias.'/'.MyDate($cfg_addon_savetype, time());
}
else
{
$filetype = '4';
$cfg_softtype .= '|'.$cfg_mediatype.'|'.$cfg_imgtype;
$cfg_softtype = ereg_replace('||', '|', $cfg_softtype);
if( !eregi($cfg_softtype, $file_sname) ) return 0;
$filedir = $cfg_soft_dir.'/'.MyDate($cfg_addon_savetype, time());
}
if(!is_dir(DEDEROOT.$filedir))
{
MkdirAll($cfg_basedir.$filedir, $cfg_dir_purview);
CloseFtp();
}
$filename = $cuserLogin->getUserID().'-'.dd2char(MyDate('ymdHis', time())).$rnddd;
if($ftype=='imagelit') $filename .= '-L';
if( file_exists($cfg_basedir.$filedir.'/'.$filename.'.'.$file_sname) )
{
for($i=50; $i <= 5000; $i++)
{
if( !file_exists($cfg_basedir.$filedir.'/'.$filename.'-'.$i.'.'.$file_sname) )
{
$filename = $filename.'-'.$i;
break;
}
}
}
$fileurl = $filedir.'/'.$filename.'.'.$file_sname;
$rs = move_uploaded_file($file_tmp, $cfg_basedir.$fileurl);
if(!$rs) return -2;
if($ftype=='image' && $watermark)
{
WaterImg($cfg_basedir.$fileurl, 'up');
}
//保存信息到数据库
$title = $filename.'.'.$file_sname;
$inquery = "INSERT INTO `#@__uploads`(title,url,mediatype,width,height,playtime,filesize,uptime,mid)
VALUES ('$title','$fileurl','$filetype','0','0','0','".filesize($cfg_basedir.$fileurl)."','".time()."','".$cuserLogin->getUserID()."'); ";
$dsql->ExecuteNoneQuery($inquery);
$fid = $dsql->GetLastID();
AddMyAddon($fid, $fileurl);
return $fileurl;
}
//邮箱格式检查
function CheckEmail($email)
{
return eregi("^[0-9a-z][a-z0-9\._-]{1,}@[a-z0-9-]{1,}[a-z0-9]\.[a-z\.]{1,}[a-z]$", $email);
}
//前台会员通用上传函数
//$upname 是文件上传框的表单名,而不是表单的变量
//$handname 允许用户手工指定网址情况下的网址
function MemberUploads($upname,$handname,$userid=0,$utype='image',$exname='',$maxwidth=0,$maxheight=0,$water=false,$isadmin=false)
{
global $cfg_imgtype,$cfg_mb_addontype,$cfg_mediatype,$cfg_user_dir,$cfg_basedir,$cfg_dir_purview;
//当为游客投稿的情况下,这个 id 为 0
if( empty($userid) ) $userid = 0;
if(!is_dir($cfg_basedir.$cfg_user_dir."/$userid"))
{
MkdirAll($cfg_basedir.$cfg_user_dir."/$userid", $cfg_dir_purview);
CloseFtp();
}
//有上传文件
$allAllowType = str_replace('||', '|', $cfg_imgtype.'|'.$cfg_mediatype.'|'.$cfg_mb_addontype);
if(!empty($GLOBALS[$upname]) && is_uploaded_file($GLOBALS[$upname]))
{
$nowtme = time();
$GLOBALS[$upname.'_name'] = trim(ereg_replace("[ \r\n\t\*\%\\/\?><\|\":]{1,}",'',$GLOBALS[$upname.'_name']));
//源文件类型检查
if($utype=='image')
{
if(!eregi("\.(".$cfg_imgtype.")$", $GLOBALS[$upname.'_name']))
{
ShowMsg("你所上传的图片类型不在许可列表,请上传{$cfg_imgtype}类型!",'-1');
exit();
}
$sparr = Array("image/pjpeg","image/jpeg","image/gif","image/png","image/xpng","image/wbmp");
$imgfile_type = strtolower(trim($GLOBALS[$upname.'_type']));
if(!in_array($imgfile_type,$sparr))
{
ShowMsg('上传的图片格式错误,请使用JPEG、GIF、PNG、WBMP格式的其中一种!', '-1');
exit();
}
}
else if($utype=='flash' && !eregi("\.swf$", $GLOBALS[$upname.'_name']))
{
ShowMsg('上传的文件必须为flash文件!', '-1');
exit();
}
else if($utype=='media' && !eregi("\.(".$cfg_mediatype.")$",$GLOBALS[$upname.'_name']))
{
ShowMsg('你所上传的文件类型必须为:'.$cfg_mediatype, '-1');
exit();
}
else if(!eregi("\.(".$allAllowType.")$", $GLOBALS[$upname.'_name']))
{
ShowMsg("你所上传的文件类型不被允许!",'-1');
exit();
}
//再次严格检测文件扩展名是否符合系统定义的类型
$fs = explode('.', $GLOBALS[$upname.'_name']);
$sname = $fs[count($fs)-1];
$alltypes = explode('|', $allAllowType);
if(!in_array(strtolower($sname), $alltypes))
{
ShowMsg('你所上传的文件类型不被允许!', '-1');
exit();
}
//强制禁止的文件类型
if(eregi("\.(asp|php|pl|cgi|shtm|js)", $sname))
{
ShowMsg('你上传的文件为系统禁止的类型!', '-1');
exit();
}
if($exname=='')
{
$filename = $cfg_user_dir."/$userid/".dd2char($nowtme.'-'.mt_rand(1000,9999)).'.'.$sname;
}
else
{
$filename = $cfg_user_dir."/{$userid}/{$exname}.".$sname;
}
move_uploaded_file($GLOBALS[$upname], $cfg_basedir.$filename) or die("上传文件到 {$filename} 失败!");
@unlink($GLOBALS[$upname]);
if(@filesize($cfg_basedir.$filename) > $GLOBALS['cfg_mb_upload_size'] * 1024)
{
@unlink($cfg_basedir.$filename);
ShowMsg('你上传的文件超出系统大小限制!', '-1');
exit();
}
//加水印或缩小图片
if($utype=='image')
{
include_once(DEDEINC.'/image.func.php');
if($maxwidth>0 || $maxheight>0)
{
ImageResize($cfg_basedir.$filename, $maxwidth, $maxheight);
}
else if($water)
{
WaterImg($cfg_basedir.$filename);
}
}
return $filename;
}
//没有上传文件
else
{
//强制禁止的文件类型
if($handname=='')
{
return $handname;
}
else if(eregi("\.(asp|php|pl|cgi|shtm|js)", $handname))
{
exit('Not allow filename for not safe!');
}
else if( !eregi("\.(".$allAllowType.")$", $handname) )
{
exit('Not allow filename for filetype!');
}
else if( !eregi('^http:', $handname) && !eregi('^'.$cfg_user_dir.'/'.$userid, $handname) && !$isadmin )
{
exit('Not allow filename for not userdir!');
}
return $handname;
}
}
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
暂无评论 »