<?php
// 应用公共文件,内置主要的数据处理方法
use Jenssegers\Agent\Agent;
use think\facade\Cache;
use think\facade\Config;
use think\facade\Db;
use think\facade\Request;
function error_page_data()
{
return array(
'site_title' => get_system_config('site_title'),
'site_keywords' => get_system_config('site_keywords'),
'site_description' => get_system_config('site_description'),
'site_mail' => get_system_config('site_mail'),
'site_qq' => get_system_config('site_qq'),
'site_beian' => get_system_config('site_beian'),
'site_copyright' => get_system_config('site_copyright'),
'title' => "页面错误"
);
}
/*
* 随机生成订单号
*/
function get_orderid()
{
return date('YmdHis') . rand(10000000, 99999999);
}
/*
* 随机字符串,默认长度10
* $num 长度
*/
function get_string($num = 10)
{
$str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890';
$salt = substr(str_shuffle($str), 10, $num);
return $salt;
}
/*
* 判断访客是否是蜘蛛
*/
function is_robot($except = '')
{
$ua = strtolower($_SERVER ['HTTP_USER_AGENT']);
$botchar = "/(baidu|google|spider|soso|yahoo|sohu-search|yodao|robozilla|AhrefsBot)/i";
$except ? $botchar = str_replace($except . '|', '', $botchar) : '';
if (preg_match($botchar, $ua)) {
return true;
}
return false;
}
/*
* 判断是否是手机浏览器
*/
function is_mobile()
{
if (isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], "wap")) {
return true;
} elseif (isset($_SERVER['HTTP_ACCEPT']) && strpos(strtoupper($_SERVER['HTTP_ACCEPT']), "VND.WAP.WML")) {
return true;
} elseif (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) {
return true;
} elseif (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])) {
return true;
} else {
return false;
}
}
/**
* @param $email
* @return bool
*/
function is_email($email)
{
$chars = "/^([a-z0-9+_]|-|\\.)+@(([a-z0-9_]|-)+\\.)+[a-z]{2,6}\$/i";
if (strpos($email, '@') !== false && strpos($email, '.') !== false) {
if (preg_match($chars, $email)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
* @param $phone
* @return bool
*/
function is_phone($phone)
{
$chars = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$|17[0-9]{1}[0-9]{8}$/";
if (preg_match($chars, $phone)) {
return true;
}
return false;
}
/**
* @param $ip
* @return false|mixed|string
* 获取IP的详细地址
*/
function get_ip_city($ip)
{
/*
http://opendata.baidu.com/api.php?query=116.179.32.80&co=&resource_id=6006&oe=utf8
https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=116.179.32.80&co=&resource_id=6006&oe=utf8
*/
$url = 'https://whois.pconline.com.cn/ipJson.jsp?json=true&ip=';
$city = get_curl($url . $ip);
$city = mb_convert_encoding($city, "UTF-8", "GB2312");
$city = json_decode($city, true);
$location = $city['city'] ? $city['pro'] . $city['city'] : $city['pro'];
return $location ?: $city['addr'];
}
//设置缓存
function set_cache($key, $value, $date = 86400)
{
Cache::set($key, $value, $date);
}
//读取缓存
function get_cache($key)
{
return Cache::get($key);
}
function clear_cache($key)
{
Cache::clear($key);
}
function get_system_config($name)
{
$content = '';
$type = Db::name('config')->where('name', $name)->value('type');
if ($type) {
// 如果存在缓存则优先读取缓存
if (get_cache('system_config_' . $type)) {
$array = get_cache('system_config_' . $type);
} else {
$array = Db::name('config')->field('name,content')->where('type', $type)->order('id asc')->select()->toArray();
set_cache('system_config_' . $type, $array);
}
foreach ($array as $value) {
if ($value['name'] == $name) {
$content = $value['content'];
break;
}
}
if ($content) {
return $content;
} else {
return '';
}
} else {
return '';
}
}
//生成一个不会重复的字符串
function make_token($type = 1)
{
$str = md5(uniqid(md5(microtime(true)), true));
$str = sha1($str); //加密
if ($type == 1) {
$str = strtoupper($str);
}
return $str;
}
/**
* 将字符部分加密并输出
* @param unknown $str
* @param unknown $start 从第几个位置开始加密(从1开始)
* @param unknown $length 连续加密多少位
* @return string
*/
function encrypt_show($str, $start, $length)
{
$end = $start - 1 + $length;
$array = str_split($str);
foreach ($array as $k => $v) {
if ($k >= $start - 1 && $k < $end) {
$array[$k] = '*';
}
}
return implode('', $array);
}
/**
* 加密函数
* @param string $txt 需要加密的字符串
* @param string $key 密钥
* @return string 返回加密结果
*/
function ds_encrypt($txt, $key = '')
{
if (empty($txt))
return $txt;
if (empty($key))
$key = md5(config('ds_config.setup_date'));
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
$ikey = "-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
$nh1 = rand(0, 64);
$nh2 = rand(0, 64);
$nh3 = rand(0, 64);
$ch1 = $chars{$nh1};
$ch2 = $chars{$nh2};
$ch3 = $chars{$nh3};
$nhnum = $nh1 + $nh2 + $nh3;
$knum = 0;
$i = 0;
while (isset($key{$i}))
$knum += ord($key{$i++});
$mdKey = substr(md5(md5(md5($key . $ch1) . $ch2 . $ikey) . $ch3), $nhnum % 8, $knum % 8 + 16);
$txt = base64_encode(TIMESTAMP . '_' . $txt);
$txt = str_replace(array('+', '/', '='), array('-', '_', '.'), $txt);
$tmp = '';
$j = 0;
$k = 0;
$tlen = strlen($txt);
$klen = strlen($mdKey);
for ($i = 0; $i < $tlen; $i++) {
$k = $k == $klen ? 0 : $k;
$j = ($nhnum + strpos($chars, $txt{$i}) + ord($mdKey{$k++})) % 64;
$tmp .= $chars{$j};
}
$tmplen = strlen($tmp);
$tmp = substr_replace($tmp, $ch3, $nh2 % ++$tmplen, 0);
$tmp = substr_replace($tmp, $ch2, $nh1 % ++$tmplen, 0);
$tmp = substr_replace($tmp, $ch1, $knum % ++$tmplen, 0);
return $tmp;
}
/**
* 解密函数
* @param string $txt 需要解密的字符串
* @param string $key 密匙
* @return string 字符串类型的返回结果
*/
function ds_decrypt($txt, $key = '', $ttl = 0)
{
if (empty($txt))
return $txt;
if (empty($key))
$key = md5(config('ds_config.setup_date'));
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
$ikey = "-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
$knum = 0;
$i = 0;
$tlen = @strlen($txt);
while (isset($key{$i}))
$knum += ord($key{$i++});
$ch1 = @$txt{$knum % $tlen};
$nh1 = strpos($chars, $ch1);
$txt = @substr_replace($txt, '', $knum % $tlen--, 1);
$ch2 = @$txt{$nh1 % $tlen};
$nh2 = @strpos($chars, $ch2);
$txt = @substr_replace($txt, '', $nh1 % $tlen--, 1);
$ch3 = @$txt{$nh2 % $tlen};
$nh3 = @strpos($chars, $ch3);
$txt = @substr_replace($txt, '', $nh2 % $tlen--, 1);
$nhnum = $nh1 + $nh2 + $nh3;
$mdKey = substr(md5(md5(md5($key . $ch1) . $ch2 . $ikey) . $ch3), $nhnum % 8, $knum % 8 + 16);
$tmp = '';
$j = 0;
$k = 0;
$tlen = @strlen($txt);
$klen = @strlen($mdKey);
for ($i = 0; $i < $tlen; $i++) {
$k = $k == $klen ? 0 : $k;
$j = strpos($chars, $txt{$i}) - $nhnum - ord($mdKey{$k++});
while ($j < 0)
$j += 64;
$tmp .= $chars{$j};
}
$tmp = str_replace(array('-', '_', '.'), array('+', '/', '='), $tmp);
$tmp = trim(base64_decode($tmp));
if (preg_match("/\d{10}_/s", substr($tmp, 0, 11))) {
if ($ttl > 0 && (TIMESTAMP - (int)substr($tmp, 0, 11) > $ttl)) {
$tmp = null;
} else {
$tmp = substr($tmp, 11);
}
}
return $tmp;
}
/**
* 生成密码hash值
* @param string $password
* @return string
*/
function encryption_hash(string $password): string
{
return password_hash($password, PASSWORD_DEFAULT);
}
/**
* 获取runtime根目录路径
* @return string
*/
function runtime_root_path(): string
{
return dirname(runtime_path()) . DIRECTORY_SEPARATOR;
}
/**
* 写入日志 (使用tp自带驱动记录到runtime目录中)
* @param mixed $value
* @param string $type
*/
function log_record($value, string $type = 'info')
{
$content = is_string($value) ? $value : print_r($value, true);
Log::record($content, $type);
}
/**
* 隐藏手机号中间四位 13012345678 -> 130****5678
* @param string $mobile 手机号
* @return string
*/
function hide_mobile(string $mobile): string
{
return substr_replace($mobile, '****', 3, 4);
}
/**
* 获取当前系统版本号
* @return string
* @throws BaseException
*/
function get_version(): string
{
return Auth_Version;
}
//读取文件配置
function get_config($key)
{
return Config::get($key);
}
function get_ip()
{
return request()->ip();
}
/**
* 获取当前请求的变量,并进行安全过滤,防止xss注入攻击
* @param string $key
* @return mixed
*/
function get_params(string $key = "", $default = '', $filter = 'htmlspecialchars')
{
return Request::param($key, $default, $filter);
}
/**
* 转义经过安全过滤后的值
* @param $content
* @return string
*/
function safe_decode($content): string
{
return htmlspecialchars_decode($content);
}
//判断程序是否完成安装
function is_installed()
{
static $isInstalled;
if (empty($isInstalled)) {
$isInstalled = file_exists(Auth_Root . 'app/install/install.lock');
}
return $isInstalled;
}
/**
* @param int $type 1获取时间,2获取时间戳
* @return false|int|string
*/
function get_date(int $type = 1)
{
if ($type == 1) {
$res = date('Y-m-d H:i:s');
} elseif ($type == 2) {
$res = time();
}
return $res;
}
function get_agent($type = '')
{
$agent = new Agent();
$data = array(
// 获取操作系统。(Ubuntu,Windows,OS X等)
'browser' => $agent->browser(),
// 获取设备名称(如果是移动设备)。(iPhone,Nexus,华硕平板电脑等)
'device' => $agent->device(),
// 获取操作系统。(Ubuntu,Windows,OS X等)
'platform' => $agent->platform(),
// 获取浏览器的接受语言
'languages' => $agent->languages()
);
if ($type) {
return $data[$type];
} else {
return $data;
}
}
/**
* @return int
*/
function get_code(): int
{
return rand(111111, 999999);
}
function Ping($Url, $length = 4): string
{
$start = microtime(true);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $Url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_NOBODY, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
$end = microtime(true);
if (!empty($result)) {
return round(number_format($end - $start, 10, '.', ''), $length) . '秒';
}
return '域名[ ' . $Url . ' ]无法访问';
}
/*
* Action 网页请求操作
* $url 需要请求的地址
* $post 需要POST提交的数据
* $referer 在HTTP请求头中"Referer: "的内容
* $cookie 需要附带的cookie
* $header 将头文件的信息作为数据流输出
* $ua 在HTTP请求中包含一个"User-Agent: "头的字符串
* $nobody 启用时将不对HTML中的BODY部分进行输出
* $addheader 设置HTTP头字段的数组
*/
function get_curl($url, $post = 0, $referer = 0, $cookie = 0, $header = 0, $ua = 0, $nobaody = 0, $addheader = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept: */*";
$httpheader[] = "Accept-Encoding: gzip,deflate,sdch";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
if ($addheader) {
$httpheader = array_merge($httpheader, $addheader);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if ($header) {
curl_setopt($ch, CURLOPT_HEADER, TRUE);
}
if ($cookie) {
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if ($referer) {
if ($referer == 1) {
curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');
} else {
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
}
if ($ua) {
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36');
}
if ($nobaody) {
curl_setopt($ch, CURLOPT_NOBODY, 1);
}
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
/*
* $to 收件人邮箱
* $subject 邮件标题
* $content 邮件内容
* 发送邮件函数
*/
function send_email($to, $subject = '', $content = '')
{
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
//设定邮件编码
$mail->CharSet = "UTF-8";
// 调试模式输出
$mail->SMTPDebug = 0;
// 使用SMTP
$mail->isSMTP();
// SMTP服务器
$mail->Host = get_system_config('mail_smtp');
// 允许 SMTP 认证
$mail->SMTPAuth = true;
// SMTP 用户名 即邮箱的用户名
$mail->Username = get_system_config('mail_user');
// SMTP 密码 部分邮箱是授权码(例如163邮箱)
$mail->Password = get_system_config('mail_pass');
// 允许 TLS 或者 ssl协议
if (get_system_config('mail_encrypt')) {
$mail->SMTPSecure = get_system_config('mail_encrypt');
}
//端口 - likely to be 25, 465 or 587,具体要看邮箱服务器支持
$mail->Port = get_system_config('mail_port');
//发件人
$mail->setFrom(get_system_config('mail_user'), get_system_config('mail_name'));
//接收邮件方
if (is_array($to)) {
foreach ($to as $v) {
$mail->addAddress($v);
}
} else {
$mail->addAddress($to);
}
//回复的时候回复给哪个邮箱 建议和发件人一致
//$mail->addReplyTo(get_system_config('mail_user'));
//抄送
//$mail->addCC('cc@example.com');
//密送
//$mail->addBCC('bcc@example.com');
// 添加附件
//$mail->addAttachment('../../'.$mail_file);
// 发送附件并且重命名
// $mail->addAttachment('../thumb-1.jpg', 'new.jpg');
// 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容
$mail->isHTML(true);
// 邮件标题
$mail->Subject = get_system_config('site_title') . ' - ' . $subject;
// 邮件HTML内容
$mail->Body = mail_view($content);
// 邮件纯文本内容
$mail->AltBody = $content;
// 发送
$mail->send();
return true;
} catch (Exception $e) {
return $mail->ErrorInfo;
}
}
/*
* $content 邮件内容
* 邮件模板
*/
function mail_view($content)
{
$image = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIUAAABXCAMAAAAd8nYqAAADAFBMVEUAAADW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1taqJyaLAAAA/3RSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1O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';
$template = '
<style>
.box_one{
position: relative;
color:#555;
font:12px/1.5 Microsoft YaHei,Tahoma,Helvetica,Arial,sans-serif;
max-width:600px;
margin:50px auto;
border-radius: 5px;
box-shadow:0 5px 10px#aaaaaa;
background: 0 0 repeat-x#FFF;
background-image: -webkit-repeating-linear-gradient(135deg, #4882CE,#4882CE 20px, #FFF 20px, #FFF 35px, #EB1B2E 35px,#EB1B2E 55px, #FFF 55px, #FFF 70px);
background-image:repeating-linear-gradient(-45deg, #4882CE, #4882CE 20px, #FFF 20px, #FFF 35px, #EB1B2E 35px, #EB1B2E 55px, #FFF 55px, #FFF 70px);
background-size: 100% 10px;
}
.box_two{
position: absolute;
right: 15px;
top: 20px;
width:133px;
height: 87px;
}
</style>
<div class="box_one">
<img class="box_two" src="' . $image . '"/>
<div style="padding: 0 15px 15px;">
<h2 style="border-bottom:1px solid #e9e9e9;font-size:18px;font-weight:normal;padding:20px 0 10px;">
' . get_system_config('mail_name') . '
</h2>
<p><span style="color: #007bfc;">' . $content . '</span></p>
</div>
<div style="color:#888;padding:10px;border-top:1px solid #e9e9e9;background:#f5f5f5;border-radius: 0 0 5px 5px;">
<p style="margin: 0;padding: 0;text-align: center;">
Copyright © <a href="' . request()->domain() . '" target="_blank">' . get_system_config('site_copyright') . '</a> All Rights Reserved.</p>
<p style="color: red;margin: 0;padding: 0;text-align: center;">本邮件由系统发送,请勿回复</p>
</div>
</div>
';
return $template;
}
function url_status($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$res = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 200
curl_close($ch);
return $res;
}
评论 (0)