| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483 | 
							- <?php
 
- /* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
- --	Common Functions
 
- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
 
- /*
 
-  * 返回系统配置
 
- */
 
- function funcSystemConfig($params){
 
- 	global $configs;
 
- 	return $configs;
 
- }
 
- /* -- -- -- -- -- -- -- -- -- -- -- -- -- 数据库公共操作 -- -- -- -- -- -- -- -- -- -- -- -- -- */
 
- /*
 
-  * 基于模式连接数据库并返回连接对象
 
-  * 返回 $db = array('object' => '连接对象', 'function' => '方法集')
 
- */
 
- function connectDB($mode = "MySQLi"){
 
- 	global $configs;
 
- 	$conf = $configs['database'][$mode];
 
- 	$db = $conf['function']['Connect']($conf);
 
- 	return $db;
 
- }
 
- /* $conn = 数据库连接对象 */
 
- function doSQL($sql, $conn = null){
 
- 	global $connDB;
 
- 	if(is_null($conn))$conn = $connDB;
 
- 	try{	
 
- 		return $conn['function']['Select']($conn['object'], $sql);
 
- 	}catch(Exception $e){
 
- 		return array();
 
- 	}
 
- }
 
- /* $conn = 数据库连接对象 */
 
- function doPage($sql, $wheres, $pagecount = 50, $conn = null){
 
- 	global $connDB;
 
- 	if(is_null($conn))$conn = $connDB;
 
- 	try{	
 
- 		$pageSQL  = "select COUNT(*) as counts, CEILING(COUNT(*)/" . $pagecount . ") as pages from (" . $sql . ") pagedata ";
 
- 		$pageSQL .= ($wheres) ? ("where" . $wheres) : "";
 
- 		$result = $conn['function']['Select']($conn['object'], $pageSQL);
 
- 		return ($result) ? $result[0] : array();
 
- 	}catch(Exception $e){
 
- 		return array();
 
- 	}
 
- }
 
- /*
 
-  * 分页公共语句
 
-  * $params = array('pageno' => '页码', 'pagecount' => '每页数据', 'limit' => '数据量')
 
- */
 
- function doPageSQL($params){
 
- 	$limits = "";
 
- 	if(isset($params['pageno'])){		
 
- 		if(!$params['pageno'] || $params['pageno'] == 1){
 
- 			$limits = " limit " . $params['pagecount'];
 
- 		}else{
 
- 			$limits = " limit " . ($params['pageno'] - 1) * $params['pagecount'] . ", " . $params['pagecount'];
 
- 		}
 
- 	}else{		
 
- 		if(isset($params['limit'])){
 
- 			$limits = " limit " . $params['limit'];
 
- 		}		
 
- 	}
 
- 	return $limits;
 
- }
 
- /* 
 
-  * 组合SQL语句
 
-  * $data => 数据体, $params = array('mode' => 'insert|update', 'table' => '表名', 'wheres' => '条件字符串') 
 
- */
 
- function executeSQL($data, $params){
 
- 	global $connDB;
 
- 	if($params['mode'] == "insert"){
 
- 		$fields = "";
 
- 		$values = "";
 
- 		foreach($data as $key => $val){
 
- 			$fields .= ($fields == "") ? "" : ", ";
 
- 			$fields .= $key;
 
- 			$values .= ($values == "") ? "" : ", ";
 
- 			//$values .= (is_numeric($val)) ? $val : ("'" . $val . "'");
 
- 			$values .= ("'" . $val . "'");			
 
- 		}
 
- 		$sql = "insert into " . $params['table'] . "(" . $fields . ") values(" . $values . ")";
 
- 	}elseif($params['mode'] == "update"){
 
- 		$upds = "";
 
- 		foreach($data as $key => $val){
 
- 			$upds .= ($upds == "") ? "" : ", ";
 
- 			$upds .= $key . " = ";
 
- 			$upds .= (is_numeric($val)) ? $val : ("'" . $val . "'");
 
- 		}
 
- 		$sql = "update " . $params['table'] . " set " . $upds;
 
- 		if($params['where'])$sql .= " where " . $params['where'];
 
- 	}
 
- 	return $sql;
 
- }
 
- /*
 
-  * 执行SQL语句
 
-  * 
 
- */
 
- function execSQL($sql, $func = null, $conn = null){
 
- 	global $connDB;
 
- 	if(is_null($conn))$conn = $connDB;
 
- 	if($func == "insert"){
 
- 		return $conn['function']['Insert']($conn['object'], $sql);
 
- 	}elseif($func == "insertid"){
 
- 		return $conn['function']['InsertId']($conn['object'], $sql);
 
- 	}elseif($func == "update"){
 
- 		return $conn['function']['Update']($conn['object'], $sql);
 
- 	}elseif($func == "delete"){
 
- 		return $conn['function']['Delete']($conn['object'], $sql);
 
- 	}else{
 
- 		return $conn['function']['Query']($conn['object'], $sql);
 
- 	}
 
- }
 
- /*
 
-  * 基于参照格式化查询数据
 
-  * $params = array('data' => 'rs结果集', 'datafield' => '需要格式化的字段', 'datatimes' => '需要格式化的时间戳字段')
 
- */
 
- function funcFormatResultData($params){
 
- 	global $configs;
 
- 	$result = array();
 
- 	$fieldArray = explode(",", $params['datafield']);
 
- 	$timesArray = explode(",", $params['datatimes']);
 
- 	for($i = 0; $i < count($params['data']); $i++){
 
- 		$result[$i] = $params['data'][$i];
 
- 		if(count($fieldArray)){
 
- 		    for($keyField = 0; $keyField < count($fieldArray); $keyField++){
 
- 		        if($fieldArray[$keyField] != ''){
 
- 		            $result[$i][$fieldArray[$keyField] . '_format'] = $configs['refer']['refer_' . $fieldArray[$keyField]][$params['data'][$i][$fieldArray[$keyField]]];
 
- 		        }
 
- 		    }		    
 
- 		}
 
- 		if(count($timesArray)){
 
- 		    for($keyTimes = 0; $keyTimes < count($timesArray); $keyTimes++){
 
- 		        if($timesArray[$keyTimes]){
 
- 		            $result[$i][$timesArray[$keyTimes] . '_format'] = date("Y-m-d H:i:s", $params['data'][$i][$timesArray[$keyTimes]]);
 
- 		        }
 
- 		    }		    
 
- 		}
 
- 	}
 
- 	return $result;
 
- }
 
- /*
 
-  * 自动加载文件 
 
-  * $params = array(path => '文件夹路径', method => 'require_once|include_once')
 
- */
 
- function funcComAutoLoad($params){
 
- 	try{
 
- 		if(is_file($params['path'])){
 
- 			funcComLoadExec($params['path'], $params['method']); //单文件加载
 
- 		}else{
 
- 			$folder = scandir($params['path']);
 
- 			foreach($folder as $incfile){
 
- 				if($incfile != '.' && $incfile != '..'){			
 
- 					if(!is_dir($params['path'] . '/' . $incfile)){
 
- 						funcComLoadExec($params['path'] . '/' . $incfile, $params['method']);
 
- 					}
 
- 				}
 
- 			}
 
- 		}
 
- 		return true;
 
- 	}catch(Exception $Err){
 
- 		return $E->getMessage();
 
- 	}
 
- }
 
- function funcComLoadExec($path, $method){
 
- 	if($method == "include_once"){
 
- 		include_once($path);
 
- 	}
 
- 	if($method == "include"){
 
- 		include($path);
 
- 	}
 
- 	if($method == "require_once"){
 
- 		require_once($path);
 
- 	}
 
- 	if($method == "require"){
 
- 		require($path);
 
- 	}
 
- }
 
- /*
 
-  * CURL 执行
 
-  * $params = array(url => '请求地址', json => false|true, data => '报文数据')
 
- */
 
- function funcComCurl($params){
 
- 	if(empty($params['url']))return false;
 
- 	
 
- 	$CURL = curl_init();
 
- 	curl_setopt($CURL, CURLOPT_URL, $params['url']);
 
- 	if($params['json']){
 
- 		curl_setopt($CURL, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen(json_encode($params['data'], JSON_UNESCAPED_UNICODE))));
 
- 	}
 
- 	if(!empty($params['data'])){
 
- 		curl_setopt($CURL, CURLOPT_POST, 1);
 
- 		curl_setopt($CURL, CURLOPT_POSTFIELDS, $params['data']);
 
- 	}
 
- 	curl_setopt($CURL, CURLOPT_TIMEOUT, 30);curl_setopt($CURL, CURLOPT_SSL_VERIFYPEER, FALSE);
 
- 	curl_setopt($CURL, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($CURL, CURLOPT_HEADER, FALSE);curl_setopt($CURL, CURLOPT_RETURNTRANSFER, TRUE);
 
- 	
 
- 	$response = curl_exec($CURL);
 
- 	
 
- 	curl_close($CURL);
 
- 	return (!$response) ? false : $response;	
 
- }
 
- /*
 
-  * 转UTF8
 
- */
 
- function funcComArrayTranUtf8($res){
 
- 	return ($res != "" && !is_null($res) && !is_object($res)) ? iconv('GBK', 'UTF-8', $res) : '';
 
- }
 
- /*
 
-  * 转GBK
 
- */
 
- function funcComArrayTranGBK($res){
 
- 	return ($res != "" && !is_null($res) && !is_object($res)) ? iconv("UTF-8", "GBK", $res) : '';
 
- }
 
- /*
 
-  * 随机函数
 
-  * returnRandom('rand', array('num' => 12))
 
- */
 
- function funcComRandom($mode, $params = null){
 
- 	global $configs;
 
- 	$randMode = array(
 
- 		'verify' => '0123456789',
 
- 		'rand'   => '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 
- 		'random' => 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
 
- 	);
 
- 	$num = ($params['num']) ? $params['num'] : 6; 
 
- 	$key = "";
 
- 	for($j = 0; $j < $num; $j++){
 
- 		$key .= $randMode[$mode][rand(0, strlen($randMode[$mode])-1)];
 
- 	}
 
- 	
 
- 	return $key;
 
- }
 
- /*
 
-  * 数组转http字符串
 
-  * array => http& 
 
- */
 
- function funcComArrayToHttp($paraMap, $urlencode = false){
 
- 	$buff = "";
 
- 	//ksort($paraMap);
 
- 	foreach ($paraMap as $k => $v){
 
- 		if($urlencode){$v = urlencode($v);}
 
- 		$buff .= $k . "=" . $v . "&";
 
- 	}
 
- 	$reqPar;
 
- 	if (strlen($buff) > 0){$reqPar = substr($buff, 0, strlen($buff)-1);}
 
- 	return $reqPar;
 
- }
 
- /*
 
-  * http字符串转数组
 
-  * http& => array
 
- */
 
- function funcComHttpToArray($params){
 
- 	$output = array();if($params){parse_str($params, $output);}return $output;
 
- }
 
- /*
 
-  * 数组转XML
 
- */
 
- function funcComArrayToXml($arr){
 
- 	$xml = "<xml>";
 
- 	foreach($arr as $key => $val){
 
- 		if(is_numeric($val)){
 
- 			$xml .= "<" . $key . ">" . $val . "</" . $key . ">"; 
 
- 		}else{
 
- 			$xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";  
 
- 		}
 
- 	}
 
- 	$xml.= "</xml>";
 
- 	return $xml; 
 
- }
 
- /*
 
-  * XML转数组
 
-  * $xml => object
 
- */
 
- function funcComXmlToArray($xml){		
 
- 	//将XML转为array        
 
- 	return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);		
 
- }
 
- /*
 
-  * 获取SHA256加密
 
- */
 
- function funcComSHA256($str){
 
- 	return bin2hex(hash('sha256', $str, true));
 
- }
 
- /*
 
-  * 获取毫秒时间戳
 
- */
 
- function funcComGetMillisecond(){
 
- 	list($microsecond , $time) = explode(' ', microtime()); //' '中间是一个空格
 
- 	return (float)sprintf('%.0f',(floatval($microsecond) + floatval($time)) * 1000);
 
- }
 
- /*
 
-  * 获取请求客户端基础信息
 
- */
 
- function funcComGetClientInfo($servers){
 
- 	$returns = array('ip' => '', 'port' => '', 'uri' => '', 'domain' => 0);
 
- 	$returns['ip']     = $servers['REMOTE_ADDR'];
 
- 	$returns['port']   = $servers['REMOTE_PORT'];
 
- 	$returns['uri']    = $servers['REQUEST_URI'];
 
- 	$returns['domain'] = ($servers['REMOTE_ADDR'] == $servers['SERVER_ADDR']) ? 1 : 0;
 
- 	return $returns;
 
- }
 
- /*
 
-  * 获取文件后缀名
 
- */
 
- function funcComGetFileExt($filename){
 
- 	$arrays = explode(".", $filename);
 
- 	return (count($arrays) >= 1) ? $arrays[count($arrays) - 1] : '';
 
- }
 
- /*
 
-  * 生成二维码
 
-  * $params = array('errorCorrectionLevel' => 'M(默认)', 'matrixPointSize' => '5(默认)', 'filename' => '生成文件名(默认随机串)', 'filepath' => '生成路径', 'lib' => '类库路径(默认)', 'data' => '封装数据')
 
- */
 
- function funcComCreateQrCode($params){
 
- 	global $configs;
 
- 	$returns = array('success' => true, 'errorcode' => '200', 'msg' => $configs['errors']['200'], 'data' => array());
 
- 	$lib = (isset($params['lib'])) ? $params['lib'] : 'lib/php-phpqrcode/phpqrcode.php';
 
- 	require_once($lib);
 
- 	$errorCorrectionLevel = (isset($params['errorCorrectionLevel'])) ? $params['errorCorrectionLevel'] : 'M';    //容错级别
 
- 	$matrixPointSize      = (isset($params['matrixPointSize'])) ? $params['matrixPointSize'] : 5;
 
- 	$filename = (isset($params['filename'])) ? $params['filename'] : (time() . funcComRandom('rand', array('num' => 3)));
 
- 	$filepath = (isset($params['filepath'])) ? $params['filepath'] : $configs['qrcode']['path'];
 
- 	QRcode::png($params['data'], $filepath . $filename . ".png", $errorCorrectionLevel, $matrixPointSize, 2);
 
- 	$returns['data'] = array('filepath' => $filepath . $filename . ".png", 'filename' => $filename);
 
- 	return  $returns;
 
- }
 
- /*
 
-  * 上传文件公共函数
 
- */
 
- function funcComFileUpload($file){
 
- 	global $configs;
 
- 	$returns = array('success' => false, 'errorcode' => '403', 'data' => array());
 
- 	$todo = true;
 
- 	if(isset($file['params'])){
 
- 		/* 验证 */
 
- 		foreach($file['params'] as $key => $val){
 
- 			if($key == "ext-access"){
 
- 				if(!in_array(funcComGetFileExt($file['file']['name']), $val)){
 
- 					$todo = false;
 
- 					break;
 
- 				}
 
- 			}
 
- 			if($key == "limit-access"){
 
- 				if((int)$file['file']['size'] < $val[0] || (int)$file['file']['size'] > $val[1]){
 
- 					$todo = false;
 
- 					break;
 
- 				}
 
- 			}
 
- 			if($key == "check-ext"){
 
- 				if(!in_array(funcComGetFileExt($file['file']['name']), $configs['upload']['exts'])){
 
- 					echo "222";
 
- 					$todo = false;
 
- 					break;
 
- 				}
 
- 			}
 
- 			if($key == "check-limit"){
 
- 				if((int)$file['file']['size'] < $configs['upload']['limit'][0] || (int)$file['file']['size'] > $configs['upload']['limit'][1]){
 
- 					echo "111";
 
- 					$todo = false;
 
- 					break;
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	if(isset($file['params']['folder']) && $file['params']['folder']){
 
- 		$file['params']['folder'] = $file['params']['folder'] . "/";
 
- 		
 
- 	}else{
 
- 		$file['params']['folder'] = "/";
 
- 	}
 
- 	if($todo){
 
- 		try{
 
- 			$obj = $file['file'];
 
- 			$returns['data']['file_filename'] = $obj['name'];
 
- 			$returns['data']['file_savename'] = "file-" . funcComGetMillisecond() . "." . funcComGetFileExt($obj['name']);
 
- 			if(move_uploaded_file($obj["tmp_name"], $configs['upload']['path'] . $file['params']['folder'] . $returns['data']['file_savename'])){
 
- 				$returns['data']['file_savepath'] = $configs['upload']['path'] . $file['params']['folder'];
 
- 				$returns['success'] = true;
 
- 				$returns['errorcode'] = "200";
 
- 			}else{
 
- 				$returns['msg'] = $configs['errors'][$returns['errorcode']] . " 保存文件错误";
 
- 			}			
 
- 		}catch(Exception $E){
 
- 			$returns['msg'] = $configs['errors'][$returns['errorcode']] . " 执行保存错误" . $E->getMessage();
 
- 		}
 
- 	}else{
 
- 		$returns['msg'] = $configs['errors'][$returns['errorcode']] . " 文件类型错误或超出大小限制";
 
- 	}
 
- 	return $returns;
 
- }
 
- /*
 
-  * 日志
 
-  * $params = array('log' => '日志内容', 'path' => '(默认文件)')
 
- */
 
- function funcComLog($params){
 
- 	global $configs;
 
- 	if(isset($params['path'])){
 
- 		$filename = $params['path'];
 
- 	}else{
 
- 		$filepath = strftime("%Y%m%d", time());
 
- 		if(!file_exists($configs['log']['path'] . "/" . $filepath))mkdir($configs['log']['path'] . "/" . $filepath, 0755);
 
- 		$filename = $configs['log']['path'] . "/" . $filepath . "/" . strftime("%Y%m%d%H", time()) . ".log";
 
- 	}
 
- 	$file = fopen($filename, "a");
 
- 	flock($file, LOCK_EX);
 
- 	fwrite($file, date('Y-m-d H:i:s') . ":" . $params['log']. "\n\n");
 
- 	flock($file, LOCK_UN);
 
- 	
 
- 	fclose($file);
 
- }
 
- ?>
 
 
  |