init
This commit is contained in:
317
function.php
Normal file
317
function.php
Normal file
@@ -0,0 +1,317 @@
|
||||
<?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;
|
||||
}
|
||||
Reference in New Issue
Block a user