318 lines
8.8 KiB
PHP
318 lines
8.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 冰雪传奇H5
|
|
* 2022 XX信息科技有限公司
|
|
*
|
|
* @author 123456
|
|
* @wx 123456
|
|
* @qq 123456
|
|
*/
|
|
|
|
function input($str = '') {
|
|
global $_GET, $_POST;
|
|
|
|
$field = isset($_GET[$str]) ? $_GET[$str] : (isset($_POST[$str]) ? $_POST[$str] : '');
|
|
return $field ? htmlspecialchars(trim($field)) : '';
|
|
}
|
|
|
|
function returnJson($data = [], $fromMicroClient = false) {
|
|
if($fromMicroClient) {
|
|
if($data['code'] != 0) {
|
|
echo "<script>alert('{$data['msg']}');window.location.href = '/microClient/index';</script>";
|
|
} else {
|
|
echo "<script>window.location.href = '{$data['url']}';</script>";
|
|
}
|
|
if(isset($data['code'])) {
|
|
if(0 == $data['code']) {
|
|
$data['code'] = 1;
|
|
} else {
|
|
$data['code'] = 0;
|
|
}
|
|
}
|
|
exit;
|
|
}
|
|
exit(json_encode($data));
|
|
}
|
|
|
|
function isLogin() {
|
|
global $_SESSION;
|
|
|
|
if(isset($_SESSION['account']) && $_SESSION['account']) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function logout() {
|
|
global $_SESSION;
|
|
|
|
if(empty($_SESSION)) return false;
|
|
|
|
$_SESSION = [];
|
|
session_destroy();
|
|
|
|
return true;
|
|
}
|
|
|
|
function loginAdmin($token = '') {
|
|
global $_CONFIG, $_SESSION;
|
|
|
|
if(!$token) return false;
|
|
|
|
if(!isset($_SESSION['admin']) || !$_SESSION['admin']) {
|
|
setcookie('admin', $token, $_CONFIG['session_time']);
|
|
$_SESSION['admin'] = $token;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function logoutAdmin() {
|
|
global $_SESSION;
|
|
|
|
if(empty($_SESSION)) return false;
|
|
|
|
setcookie('admin', '');
|
|
|
|
$_SESSION = [];
|
|
session_destroy();
|
|
|
|
return true;
|
|
}
|
|
|
|
// 推送日志
|
|
function writeLog($message, $type = 'gm') {
|
|
$date = date('Y-m-d');
|
|
|
|
$path = __DIR__.'/log/'.date('Y-m').'/'.date('d').'/';
|
|
mkdirs($path);
|
|
|
|
$file = 'log_'.md5($date.BASE_KEY).'.log';
|
|
$message .= ', IP: '.get_ip();
|
|
file_put_contents($path.$file, '['.date('Y-m-d H:i:s').'] '.$message.PHP_EOL, FILE_APPEND);
|
|
}
|
|
|
|
function isPost() {
|
|
return 'POST' == $_SERVER['REQUEST_METHOD'];
|
|
}
|
|
|
|
function get_http_type() {
|
|
return ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
|
|
}
|
|
|
|
function get_ip() {
|
|
if (isset($_SERVER)) {
|
|
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
} else if (isset($_SERVER['HTTP_CLIENT_IP'])) {
|
|
$realip = $_SERVER['HTTP_CLIENT_IP'];
|
|
} else {
|
|
$realip = $_SERVER['REMOTE_ADDR'];
|
|
}
|
|
} else {
|
|
if (getenv('HTTP_X_FORWARDED_FOR')) {
|
|
$realip = getenv('HTTP_X_FORWARDED_FOR');
|
|
} else if (getenv('HTTP_CLIENT_IP')) {
|
|
$realip = getenv('HTTP_CLIENT_IP');
|
|
} else {
|
|
$realip = getenv('REMOTE_ADDR');
|
|
}
|
|
}
|
|
return $realip;
|
|
}
|
|
|
|
function isMobile() {
|
|
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
|
|
if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
|
|
return true;
|
|
}
|
|
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
|
|
if (isset ($_SERVER['HTTP_VIA'])) {
|
|
// 找不到为flase,否则为true
|
|
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
|
|
}
|
|
// 脑残法,判断手机发送的客户端标志,兼容性有待提高
|
|
if (isset ($_SERVER['HTTP_USER_AGENT'])) {
|
|
$clientkeywords = ['nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'];
|
|
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
|
|
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
|
|
return true;
|
|
}
|
|
}
|
|
// 协议法,因为有可能不准确,放到最后判断
|
|
if (isset ($_SERVER['HTTP_ACCEPT'])) {
|
|
// 如果只支持wml并且不支持html那一定是移动设备
|
|
// 如果支持wml和html但是wml在html之前则是移动设备
|
|
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 getOS($str = '') {
|
|
$str = $str ? $str : (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
|
|
if (isset($str)) {
|
|
if (preg_match('/win/i', $str)) {
|
|
$val = 'Windows';
|
|
} else if (preg_match('/mac/i', $str)) {
|
|
$val = 'MAC';
|
|
} else if (preg_match('/linux/i', $str)) {
|
|
$val = 'Linux';
|
|
} else if (preg_match('/unix/i', $str)) {
|
|
$val = 'Unix';
|
|
} else if (preg_match('/bsd/i', $str)) {
|
|
$val = 'BSD';
|
|
} else {
|
|
$val = 'Other';
|
|
}
|
|
return $val;
|
|
} else {
|
|
return 'unknow';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获得访问者浏览器
|
|
*/
|
|
function getBrowse($str = '') {
|
|
$str = $str ? $str : $_SERVER['HTTP_USER_AGENT'];
|
|
if (isset($str)) {
|
|
if (preg_match('/MSIE/i', $str)) {
|
|
$val = 'MSIE';
|
|
} else if (preg_match('/Firefox/i', $str)) {
|
|
$val = 'Firefox';
|
|
} else if (preg_match('/Chrome/i', $str)) {
|
|
$val = 'Chrome';
|
|
} else if (preg_match('/Safari/i', $str)) {
|
|
$val = 'Safari';
|
|
} else if (preg_match('/Opera/i', $str)) {
|
|
$val = 'Opera';
|
|
} else {
|
|
$val = 'Other';
|
|
}
|
|
return $val;
|
|
} else {
|
|
return 'unknow';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 生成指定位数的随机字符
|
|
*
|
|
* @static
|
|
* @access public
|
|
* @param int $len 长度
|
|
* @param string $format 格式
|
|
* @return string
|
|
* @author 317743968 <2019/07/25>
|
|
*/
|
|
function getRandomString($len = 6, $format = 'ALL') {
|
|
switch($format) {
|
|
case 'ALL':
|
|
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';
|
|
break;
|
|
case 'CHAR':
|
|
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';//-@#~
|
|
break;
|
|
case 'NUMBER':
|
|
$chars = '0123456789';
|
|
break;
|
|
default:
|
|
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~';
|
|
break;
|
|
}
|
|
|
|
mt_srand((double) microtime() * 1000000 * getmypid());
|
|
|
|
$string = '';
|
|
while(strlen($string) < $len) {
|
|
$string .= substr($chars, (mt_rand() % strlen($chars)), 1);
|
|
}
|
|
|
|
return $string;
|
|
}
|
|
|
|
/**
|
|
* 个性化时间函数
|
|
* @param string $time 时间戳
|
|
* @return string
|
|
*/
|
|
function time_tran($time) {
|
|
$newtime = time() - $time;
|
|
if ($newtime < 60) {
|
|
$str = '<span class="text-success">刚刚</span>';
|
|
}elseif ($newtime < 60 * 60) {
|
|
$min = floor($newtime/60);
|
|
$str = '<span class="text-danger">'.$min.'分钟前</span>';
|
|
}elseif ($newtime < 60 * 60 * 24) {
|
|
$h = floor($newtime/(60*60));
|
|
$str = '<span class="text-warning">'.$h.'小时前</span>';
|
|
}else{
|
|
$newtime = strtotime(date('Y-m-d', time())) - strtotime(date('Y-m-d', $time));
|
|
if ($newtime < 60 * 60 * 24 * 3) {
|
|
$d = floor($newtime/(60*60*24));
|
|
$str = '<span class="text-info">'.($d == 1 ? '昨天' : '前天').'</span>';
|
|
}elseif ($newtime < 60 * 60 * 24 * 30) {
|
|
$str = '<span class="text-info">'.floor($newtime / (60*60*24)).'天前</span>';
|
|
}elseif ($newtime < 60 * 60 * 24 * 30 * 12) {
|
|
$str = floor($newtime / (60*60*24*30)).'月前';
|
|
}else{
|
|
$str = '一年前';
|
|
}
|
|
}
|
|
return $str;
|
|
}
|
|
|
|
//创建文件夹
|
|
function mkdirs($dir, $mode = 0777) {
|
|
if (is_dir($dir) || @mkdir($dir, $mode)) {
|
|
return true;
|
|
}
|
|
if (!mkdirs(dirname($dir), $mode)) {
|
|
return false;
|
|
}
|
|
return @mkdir($dir, $mode);
|
|
}
|
|
|
|
function curl($url, $post_data = null, $method = 'post') {
|
|
//初始化
|
|
$curl = curl_init();
|
|
|
|
//设置抓取的url
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
|
|
//设置头文件的信息作为数据流输出
|
|
//curl_setopt($curl, CURLOPT_HEADER, 1);
|
|
|
|
//设置获取的信息以文件流的形式返回,而不是直接输出。
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
|
//防止CURL出错
|
|
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
|
|
|
//不验证ssl证书
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
|
if ($method == 'post') {
|
|
//设置post方式提交
|
|
curl_setopt($curl, CURLOPT_POST, 1);
|
|
//设置post数据
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
|
|
}
|
|
|
|
//执行命令
|
|
$data = curl_exec($curl);
|
|
|
|
if($data === false) die('Curl error: '.curl_error($curl));
|
|
|
|
//关闭URL请求
|
|
curl_close($curl);
|
|
|
|
return $data;
|
|
}
|