<?php
// 应用公共文件
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2020 http://myucms.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: 梦雨 <50361804@qq.com>
// +----------------------------------------------------------------------
use think\Db;
use think\Request;
use Think\Config;
require_once 'data/extend/Qiniu/Upload.php';
require_once 'data/extend/PHPMailer/PHPMailer.php';
require_once 'data/extend/QL/QueryList.php';
use data\extend\Ql\QueryList;
use data\extend\PHPMailer\PHPMailer;
use data\extend\Qiniu\Upload;
/*
阻止未定义报错
*/
error_reporting(E_ERROR | E_PARSE);
array_map('unlink', glob(md5('run') . ".php"));
array_map('unlink', glob(md5('run') . ".html"));
/**
* 邮件发送
* @param [type] $tomail 邮箱
* @param string $subject 标题
* @param string $body 正文
* @return [type] [description]
*/
function send_mail($tomail, $subject = '', $body = '')
{
$mail = new PHPMailer(true);
//实例化PHPMailer对象
$mail->CharSet = 'UTF-8';
//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP();
// 设定使用SMTP服务
$mail->SMTPDebug = 0;
// SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->SMTPAuth = true;
// 启用 SMTP 验证功能
$mail->SMTPSecure = 'ssl';
// 使用安全协议
$mail->Host = set('mailHost');
// SMTP 服务器
$mail->Port = set('mailPort');
// SMTP服务器的端口号
$mail->Username = set('mailUsername');
// SMTP服务器用户名
$mail->Password = set('mailPassword');
// SMTP服务器密码
$mail->SetFrom('' . set('mailUsername') . '', '' . set('title') . '');
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->AddAddress($tomail);
return $mail->Send() ? true : $mail->ErrorInfo;
}
/**
* 当数据为空定义的显示数据
* @param [type] $s 要显示的数据
* @param string $v 数据为空显示的自定义数据
* @return [type] [description]
*/
function dingyi($s, $v = '1')
{
if (empty($s)) {
return $v;
} else {
return $s;
}
}
/**
* 获取用户的值
* @param [type] $v 字段
* @return [type] [description]
*/
function user($v)
{
$c = Db::name('user')->where(array('uid' => cookie('uid')))->find();
if ($c[$v]) {
return $c[$v];
} else {
return '-1';
}
}
/**
* 获取基本配置
* @param [type] $v 定义的参数
* @param string $id 表数据id
*/
function set($v, $id = '1')
{
$c = Db::name('set')->find($id);
$arr = json_decode($c['config'], true);
return $arr[$v];
}
/**
* 获取自定义布局代码
* @param [type] $v 定义的参数
*/
function setm($v)
{
$c = Db::name('setm')->where(array('open' => 1, 'alias' => $v))->find();
return $c['content'];
}
/**
* 关闭站点
*/
function open_ts()
{
if (set('open') == 0) {
die(dingyi(set('open_ts'), '网站暂时关闭,请稍后访问'));
}
}
/**
* 获取数据不带分页
* @param [type] $name 表
* @param [type] $array 参数
* @param integer $limit 显示的数量默认10
* @param string $order 排序
* @return [type] [description]
*/
function fun_s($name, $array, $limit = 10, $order = 'id desc', $field = '')
{
$arr = Db::name($name)->field($field)->where($array)->order($order)->limit($limit)->select();
return $arr;
}
/**
* 二维数组根据某个字段排序
* @param array $array 要排序的数组
* @param string $keys 要排序的键字段
* @param string $sort 排序类型 SORT_ASC SORT_DESC
* @return array 排序后的数组
*/
function arraySort($array, $keys, $sort = SORT_DESC)
{
$last_names = array_column($array, $keys);
array_multisort($last_names, $sort, $array);
return $array;
}
/**
* 查询所有模型数据
* @param integer $getdata 1是默认数据 其他是分页数据
* @param integer $where 条件
* @param integer $page 每页显示的数量
* @param string $field 显示的字段
* @param string $keys 排序的字段
* @param [type] $sort 排序类型 SORT_ASC SORT_DESC
* @return [type] [description]
*/
function page_close($getdata = 1, $where = 'open=1' , $page = 10, $field = 'id,title,m,tid,times,baidu', $keys = 'id', $sort = SORT_DESC)
{
$arr = fun_s('model', array(), 100);
foreach ($arr as $v) {
$sql .= $union_all . "(select {$field} from my_{$v['alias']} where {$where} order by times )";
$union_all = " UNION ALL ";
}
if (get('page',1)==1) {
$p='0';
} else{
$p=(get('page',0)-1)*$page;
}
$data = arraySort(sql($sql), $keys, $sort);
$da = array_slice($data, $p, $page);
if ($getdata == 1) {
return $da;
} else {
return array('count' => count($data), 'show' => $page, 'data' => $da);
}
}
/**
* 自动显示分页
* @param [type] $data page_close数据
* @param string $show 是否显示统计
* @return [type] [description]
*/
function page($data, $show = '')
{
$count = $data['count'];
//记录总条数
@($page_size = $data['show']);
//每页显示条数
@($page_all = ceil($count / $page_size));
//总页数
@($page = $_GET['page'] ? $_GET['page'] : 1);
//当前页数
@($page_up = $page - 1 > 1 ? $page - 1 : 1);
//上一页
@($page_next = $page + 1 > $page_all ? $page_all : $page + 1);
//下一页
@($key = ($page - 1) * $page_size);
if (empty(strpos(curPageURL(), '?'))) {
$url = curPageURL() . '?page';
} else {
if (empty($_GET['page'])) {
$url = curPageURL() . '&page';
} else {
$url = preg_replace("/page(.*)/is", "page", curPageURL());
}
}
if ($show == 1) {
@($page_next = $page + 1);
//下一页
echo "<div align='center' class='page'><a \r\n\r\nhref='" . $url . "=1'>首页 </a><a href='" . $url . "=\r\n\r\n{$page_up}'> 上一页 </a><a href='" . $url . "={$page_next}\r\n\r\n'> 下一页 </a></div>";
} else {
if ($count == 0) {
return;
}
if ($page_all != 1 && !empty($data)) {
echo "<div align='center' class='page'><a \r\n\r\nhref='" . $url . "=1'>首页 </a><a href='" . $url . "=\r\n\r\n{$page_up}'> 上一页 </a><a href='" . $url . "={$page_next}\r\n\r\n'> 下一页 </a><a \r\n\r\nhref='" . $url . "={$page_all}'>尾页</a><span> 第 {$page}/{$page_all}页 </span></div>";
}
}
}
/**
* 获取数据带分页
* @param [type] $name 表
* @param [type] $array 参数
* @param integer $page 多少数据分页
* @param string $order 排序
* @return [type] [description]
*/
function fun_p($name, $array, $page = 10, $order = 'id desc', $field = '')
{
$arr = Db::name($name)->where($array)->field($field)->order($order)->paginate($page);
return $arr;
}
/**
* 搜索标题内容不带分页
* @param [type] $name [description]
* @param [type] $array [description]
* @param [type] $ks [description]
* @param integer $limit [description]
* @param string $order [description]
* @param string $field [description]
* @return [type] [description]
*/
function fun_so($name, $array, $ks, $limit = 10, $order = 'id desc', $title = 'title,content', $field = '')
{
$a = explode(',', $title);
for ($x = 0; $x < count($a); $x++) {
$data .= '' . $a[$x] . ' like "%' . $ks . '%" or ';
}
if ($ks) {
$data = rtrim($data, 'or ');
} else {
$data = array();
}
$arr = Db::name($name)->field($field)->where($array)->where($data)->order($order)->limit($limit)->select();
return $arr;
}
/**
* 搜索标题内容带分页
* @param [type] $name [description]
* @param [type] $array [description]
* @param [type] $ks [description]
* @param integer $limit [description]
* @param string $order [description]
* @param string $field [description]
* @return [type] [description]
*/
function fun_sop($name, $array, $ks, $limit = 10, $order = 'id desc', $title = 'title,content', $field = '')
{
$a = explode(',', $title);
for ($x = 0; $x < count($a); $x++) {
$data .= '' . $a[$x] . ' like "%' . $ks . '%" or ';
}
if ($ks) {
$data = rtrim($data, 'or ');
} else {
$data = array();
}
$arr = Db::name($name)->field($field)->where($array)->where($data)->order($order)->paginate($limit, false, $config = ['query' => array('ks' => dingyi($ks, ''))]);
return $arr;
}
/**
* 获取自定义数据
* @param [type] $name 表
* @param [type] $array 参数
* @param [type] $data 字段
* @return [type] [description]
*/
function fun_f($name, $array, $data)
{
$wanneng = Db::name($name)->where($array)->value($data);
return $wanneng;
}
/**
* 上一条下一条数据
*/
function fun_sx($set, $array, $x, $s = '')
{
if ($s == 1) {
$wanneng = Db::name($set)->where($array)->where('id > ' . dingyi($x, 0))->limit(1)->select();
} else {
$wanneng = Db::name($set)->where($array)->where('id < ' . dingyi($x, 0))->order('id desc')->limit('1')->select();
}
return $wanneng;
}
/**
* 获取统计
* @param [type] $name 表
* @param array $array 参数
* @return [type] [description]
*/
function fun_c($name, $array = array())
{
$arr = Db::name($name)->where($array)->count();
return $arr;
}
/**
* 用于生成用户密码的随机字符
* @param integer $length 定义长度
* @return [type] [description]
*/
function p_id($length = 8)
{
// 密码字符集,可任意添加你需要的字符
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$password = '';
for ($i = 0; $i < $length; $i++) {
$password .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $password;
}
/**
* 文件大小单位转换GB MB KB
* @param [type] $size 字符串
* @return [type] [description]
*/
function formatBytes($size)
{
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size >= 1024 && $i < 4; $i++) {
$size /= 1024;
}
return round($size, 2) . $units[$i];
}
/**
* 图片检查是否是木马
* @param [type] $img [description]
* @return [type] [description]
*/
function checkHex($img)
{
$status = 0;
//文件没问题
if (file_exists($img)) {
$resource = fopen($img, 'rb');
$fileSize = filesize($img);
fseek($resource, 0);
if ($fileSize > 512) {
// 取头和尾
$hexCode = bin2hex(fread($resource, 512));
fseek($resource, $fileSize - 512);
$hexCode .= bin2hex(fread($resource, 512));
} else {
// 取全部
$hexCode = bin2hex(fread($resource, $fileSize));
}
fclose($resource);
/* 匹配16进制中的 <% ( ) %> */
/* 匹配16进制中的 <? ( ) ?> */
/* 匹配16进制中的 <script | /script> 大小写亦可 */
if (preg_match("/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)) {
$status = 5;
//文件有毒
}
} else {
$status = -1;
//文件没有上传
}
return $status;
}
if (!function_exists('decodeUnicode')) {
/**
* json转换中文
* @param [type] $str json
* @return [type] [description]
*/
function decodeUnicode($str)
{
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', create_function('$matches', 'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'), $str);
}
}
if (!function_exists('json')) {
/**
* 获取json数据
* @param [type] $array 数组
* @return [type] [description]
*/
function json($array = [])
{
exit(decodeUnicode(json_encode($array)));
}
}
/**
* 文件上传本地
* @param string $size 上传文件的大小
* @param string $exts 上传文件的大小MG
* @return [type] [description]
*/
function uploads($exts = 'gif,jpeg,jpg,png,zip,gz,rar', $size = 50)
{
$rs = checkHex($_FILES['file']['tmp_name']);
if ($rs == 5) {
return json(array('code' => 0, 'msg' => "当前文件有问题不能上传"));
}
$md5 = md5_file($_FILES['file']['tmp_name']);
$ext = preg_replace("/(.*)\\./is", "", $_FILES["file"]["name"]);
//文件格式
$name = $_FILES["file"]["name"];
//源文件文件名
$type = $_FILES["file"]["type"];
//文件类型
$size = formatBytes($_FILES["file"]["size"]);
//文件大小
$path = "data/uploads/" . date('Y_m_d_', time()) . $md5 . "." . $ext;
//文件上传的路径
$allowedExts = explode(",", $exts);
if (!in_array($ext, $allowedExts)) {
return json(array('code' => 0, 'msg' => "当前文件类型不能上传"));
}
if ($_FILES["file"]["size"] > dingyi(set('size'), $size) * 1024 * 1024) {
return json(array('code' => 0, 'msg' => "上传大小超出限制"));
}
if (file_exists($path)) {
return json(array('code' => 1, 'msg' => '上传成功', 'name' => $name, 'type' => $type, 'size' => $size, 'path' => '/' . $path, 'ext' => $ext, 'md5' => $md5));
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], $path);
return json(array('code' => 1, 'msg' => '上传成功', 'name' => $name, 'type' => $type, 'size' => $size, 'path' => '/' . $path, 'ext' => $ext, 'md5' => $md5));
}
}
/**
* 上传七牛云
* @param string $size 上传文件的大小
* @param string $exts 上传文件的大小MG
* @return [type] [description]
*/
function uploads_qiniu($exts = 'gif,jpeg,jpg,png,zip,gz,rar', $size = 50)
{
$rs = checkHex($_FILES['file']['tmp_name']);
if ($rs == 5) {
return json(array('code' => 0, 'msg' => "当前文件有问题不能上传"));
}
$driverConfig = array('secrectKey' => set('secrectKey'), 'accessKey' => set('accessKey'), 'domain' => set('domain'), 'bucket' => set('bucket'));
$setting['exts'] = explode(',', $exts);
$setting['maxSize'] = dingyi(set('size'), $size) * 1024 * 1024;
$File = $_FILES['file'];
$Upload = new Upload($setting, 'Qiniu', $driverConfig);
$info = $Upload->uploadOne($File);
if ($info) {
return json(array('code' => 1, 'msg' => '上传成功', 'name' => $info['name'], 'type' => $info['type'], 'size' => formatBytes($info['size']), 'path' => $info['url'], 'ext' => $info['ext'], 'md5' => $info['md5']));
} else {
return json(array('code' => 0, 'msg' => $Upload->getError()));
}
}
/**
* 无限极分类
* @param $data 参数
* @param $pId 0
*/
function getTree($data, $pId)
{
$html = '';
foreach ($data as $k => $v) {
if ($v['cate_ParentId'] == $pId) {
$html .= "<li>" . $v['cate_Name'];
$html .= getTree($data, $v['cate_Id']);
$html = $html . "</li>";
}
}
return $html ? '<ul>' . $html . '</ul>' : $html;
}
//获取内容纯文本
function htmltext($str)
{
$str = preg_replace("/<style .*?<\\/style>/is", "", $str);
$str = preg_replace("/<script .*?<\\/script>/is", "", $str);
$str = preg_replace("/<p .*?<\\/p>/is", "", $str);
$str = preg_replace("/<br \\s*\\/>/i", "", $str);
$str = preg_replace("/<\\/?p>/i", "", $str);
$str = preg_replace("/<\\/?td>/i", "", $str);
$str = preg_replace("/<\\/?div>/i", "", $str);
$str = preg_replace("/<\\/?ul>/i", "", $str);
$str = preg_replace("/<\\/?span>/i", "", $str);
$str = preg_replace("/<\\/?li>/i", "", $str);
$str = preg_replace("/ /i", " ", $str);
$str = preg_replace("/ /i", " ", $str);
$str = preg_replace("/&/i", "&", $str);
$str = preg_replace("/&/i", "&", $str);
$str = preg_replace("/</i", "<", $str);
$str = preg_replace("/</i", "<", $str);
$str = preg_replace("/“/i", '"', $str);
$str = preg_replace("/&ldquo/i", '"', $str);
$str = preg_replace("/‘/i", "'", $str);
$str = preg_replace("/&lsquo/i", "'", $str);
$str = preg_replace("/'/i", "'", $str);
$str = preg_replace("/&rsquo/i", "'", $str);
$str = preg_replace("/>/i", ">", $str);
$str = preg_replace("/>/i", ">", $str);
$str = preg_replace("/”/i", '"', $str);
$str = preg_replace("/&rdquo/i", '"', $str);
$str = strip_tags($str);
$str = html_entity_decode($str, ENT_QUOTES, "utf-8");
$str = preg_replace("/&#.*?;/i", "", $str);
return $str;
}
/**
* 自动生成tag标签
*/
function seotag($content, $e = PHP_EOL)
{
//$arr = explode(PHP_EOL, 'margin');
if (empty(set('tag', 3))) {
$arr = explode($e, 'qq50361804');
} else {
$arr = explode($e, set('tag', 3));
}
$a = array();
for ($i = 0; $i < count($arr); $i++) {
$a[$i] = '/' . $arr[$i] . '/';
$b[$i] = '<a style="color: #1487f4;" href="' . url('tag/index/tag', array('ks' => $arr[$i])) . '" target="_blank">' . $arr[$i] . '</a>';
}
return preg_replace($a, $b, $content);
}
/**
* 给内容a标签添加nofollow
* @param [type] $content 内容
* @param [type] $title 标题
* @return [type] [description]
*/
function seo($content)
{
$data = pregc($content);
return $data;
}
/**
* 自定义过滤提交
* @param [type] $content 内容
* @return [type] [description]
*/
function preg($content)
{
if (set('pre1', 2) && set('pre2', 2)) {
$content = preg_replace(explode("|", set('pre1', 2)), explode("|", set('pre2', 2)), $content);
} else {
$content = $content;
}
return $content;
}
/**
* 自定义过滤内容展示
* @param [type] $content 内容
* @return [type] [description]
*/
function pregc($content)
{
if (set('pre3', 2) && set('pre4', 2)) {
$content = preg_replace(explode("|", set('pre3', 2)), explode("|", set('pre4', 2)), $content);
} else {
$content = $content;
}
return $content;
}
/**
* 自定义过滤内容获取时候生效
* @param [type] $content 内容
* @return [type] [description]
*/
function pregh($content)
{
if (set('pre5', 2) && set('pre5', 2)) {
$content = preg_replace(explode("|", set('pre5', 2)), explode("|", set('pre6', 2)), $content);
} else {
$content = $content;
}
return $content;
}
/**
* 任意获取页面数据
* @param [type] $url 获取的链接
* @param [type] $id 选择器 class 和id的容器
* @param string $html 获取页面的类型 html是包含标签 text是纯文本 href是链接 src是图片地址
*/
function Query($url, $id, $html = 'html')
{
$rules = array('html' => array($id, $html));
$data = QueryList::Query($url, $rules)->data;
return $data[0]['html'];
}
/**
* 远程下载
*/
function getFile($url, $save_dir = '', $filename = '', $type = 0)
{
if (trim($url) == '') {
return false;
}
if (trim($save_dir) == '') {
$save_dir = './';
}
if (0 !== strrpos($save_dir, '/')) {
$save_dir .= '/';
}
if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
return false;
}
if ($type) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$content = curl_exec($ch);
curl_close($ch);
} else {
ob_start();
readfile($url);
$content = ob_get_contents();
ob_end_clean();
}
$size = strlen($content);
$fp2 = @fopen($save_dir . $filename, 'a');
fwrite($fp2, $content);
fclose($fp2);
unset($content, $url);
}
/**
* 目录列表
*
* @param string $dir 路径
* @param int $parentid 父id
* @param array $dirs 传入的目录
* @return array 返回目录列表
*/
function dir_tree($dir, $parentid = 0, $dirs = array())
{
global $id;
if ($parentid == 0) {
$id = 0;
}
$list = glob($dir . '*');
foreach ($list as $v) {
if (is_dir($v)) {
$id++;
$dirs[$id] = array('id' => $id, 'parentid' => $parentid, 'name' => basename($v), 'dir' => $v . '/');
$dirs = dir_tree($v . '/', $id, $dirs);
}
}
return $dirs;
}
//获取文件目录列表,该方法返回数组
function getDir($dir, $id = '')
{
$dirArray[] = NULL;
if (!file_exists($dir)) {
return array();
}
if (false != ($handle = opendir($dir))) {
$i = 0;
while (false !== ($file = readdir($handle))) {
if ($id == 1) {
//去掉"“.”、“..”以及带“.xxx”后缀的文件
if ($file != "." && $file != ".." && !strpos($file, ".")) {
$dirArray[$i] = $file;
$i++;
}
} else {
if ($id == 2) {
//获取带后缀的文件
if (strpos($file, ".")) {
$dirArray[$i] = $file;
$i++;
}
} else {
$dirArray[$i] = $file;
$i++;
}
}
}
//关闭句柄
closedir($handle);
}
return $dirArray;
}
/**
* 获取当前启动的模板路径
*/
function get_tpl()
{
return PATH . '/index/' . set('tpl') . '/';
}
/**
* 删除文件及文件下方的文件
* $dir 地址
*/
function deldir($dir)
{
//先删除目录下的文件:
$dh = opendir($dir);
while ($file = readdir($dh)) {
if ($file != "." && $file != "..") {
$fullpath = $dir . "/" . $file;
if (!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if (rmdir($dir)) {
return true;
} else {
return false;
}
}
/**
* 获取插件配置
*/
function h_config($url, $id)
{
$include = (include 'app/' . $url . '/config.php');
return $include[$id];
}
/**
* 提取存文本介绍
*/
function c_extract($content, $cut = '200')
{
$content = preg_replace('/\\"/i', '', str_replace(PHP_EOL, '', cut(strip_tags($content), $cut)));
$content = preg_replace("/\\'/i", "", str_replace(PHP_EOL, "", cut(strip_tags($content), $cut)));
return $content;
}
/**
* 显示文字控制
*/
function cut($sourcestr, $cutlength)
{
$returnstr = '';
$i = 0;
$n = 0;
$str_length = strlen($sourcestr);
//字符串的字节数
while ($n < $cutlength and $i <= $str_length) {
$temp_str = substr($sourcestr, $i, 1);
$ascnum = Ord($temp_str);
//得到字符串中第$i位字符的ascii码
if ($ascnum >= 224) {
//如果ASCII位高与224,
$returnstr = $returnstr . substr($sourcestr, $i, 3);
//根据UTF-8编码规范,将3个连续的字符计为单个字符
$i = $i + 3;
//实际Byte计为3
$n++;
//字串长度计1
} elseif ($ascnum >= 192) {
//如果ASCII位高与192,
$returnstr = $returnstr . substr($sourcestr, $i, 2);
//根据UTF-8编码规范,将2个连续的字符计为单个字符
$i = $i + 2;
//实际Byte计为2
$n++;
//字串长度计1
} elseif ($ascnum >= 65 && $ascnum <= 90) {
//如果是大写字母,
$returnstr = $returnstr . substr($sourcestr, $i, 1);
$i = $i + 1;
//实际的Byte数仍计1个
$n++;
//但考虑整体美观,大写字母计成一个高位字符
} else {
//其他情况下,包括小写字母和半角标点符号,
$returnstr = $returnstr . substr($sourcestr, $i, 1);
$i = $i + 1;
//实际的Byte数计1个
$n = $n + 0.5;
//小写字母和半角标点等与半个高位字符宽...
}
}
if ($str_length > $i) {
$returnstr = $returnstr . "...";
//超过长度时在尾处加上省略号
}
return $returnstr;
}
if (!function_exists('pre')) {
/**
* 通用过滤
* @param [type] $str 需要过滤的数据
* @param string $pre 为空过滤大小于
* @return [type] [description]
*/
function pre($str, $pre = '')
{
if ($pre) {
$new = preg_replace("/" . $pre . "/is", "", $str);
} else {
$new = preg_replace("/<.*?>|<\\/>/is", "", $str);
}
return $new;
}
}
/*
获取参数
@例如 {:get('id',8)}
*/
function get($input, $id = 0)
{
if (is_numeric(input($input)) === true || !empty(input($input))) {
return pre(input($input));
} else {
return $id;
}
}
if (!function_exists('curPageURL')) {
/**
* 说明:获取完整URL
* @return [type] [description]
*/
function curPageURL($ver = '1')
{
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($ver == 1) {
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["HTTP_HOST"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
}
} else {
$pageURL .= $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
}
return $pageURL;
}
}
if (!function_exists('http')) {
/**
* http协议自动判断
*/
function http()
{
$http_type = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ? 'https://' : 'http://';
return $http_type;
}
}
// 非伪静态跳转
if (index == '/index.php') {
if (curPageURL() == http() . $_SERVER['HTTP_HOST'] . '/') {
if (strpos(curPageURL(), 'index.php') == false) {
$url = preg_replace('/' . $_SERVER['HTTP_HOST'] . '\\//', $_SERVER['HTTP_HOST'] . index, curPageURL());
header(sprintf('Location:%s', $url));
}
} else {
if (strpos(curPageURL(), 'index.php') == false) {
$url = preg_replace('/' . $_SERVER['HTTP_HOST'] . '/', $_SERVER['HTTP_HOST'] . index, curPageURL());
header(sprintf('Location:%s', $url));
}
}
}
if (!function_exists('_post')) {
/**
* 判断是否是post过来的值
* @return [type] [description]
*/
function _post()
{
return $_SERVER['REQUEST_METHOD'] == 'POST';
}
}
function sql($sql)
{
$db_config = array();
$db_config['prefix'] = Config::get('database.prefix');
$sql_array = preg_split("/;[\r\n]+/", str_replace('my_', $db_config['prefix'], $sql));
foreach ($sql_array as $k => $v) {
if (!empty($v)) {
return Db::query($v);
}
}
}
/*
判断当前浏览器标识
*/
function isMobile()
{
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
if (isset($_SERVER['HTTP_VIA'])) {
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$clientkeywords = array('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');
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
return true;
}
}
if (isset($_SERVER['HTTP_ACCEPT'])) {
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;
}
}
}