Files
chuanqi-qycq-web/function.php
2025-07-10 23:55:26 +08:00

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;
}