<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用公共文件
use think\facade\Cache;
use think\facade\Env;
use think\facade\Log;
//cms核心表前缀;
define('CMS_PREFIX', 'cms_');
if (\think\facade\Config::get('cache.type') == 'Redis')
define('CACHE_SEPARATOR', ':');
else
define('CACHE_SEPARATOR', '_');
function ip()
{
//strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$res = preg_match('/[\d\.]{7,15}/', $ip, $matches) ? $matches [0] : '';
return $res;
//dump(phpinfo());//所有PHP配置信息
}
//客户端信息解析成数组,字段与服务器对应
function get_client_info()
{
$client = htmlspecialchars_decode(input('client'));
$client = json_decode($client, true);
if (empty($client) || !is_array($client)) {
return $client;
}
$arr = [];
foreach ($client as $k => $v) {
$key = parse_name($k);
$arr[$key] = $v;
}
return $arr;
}
/**
* ip转化为地址
* @param $ip 纯数字或ipv4字符串
* @param string $fields 指定拼接的字段【country, province, city, isp】
* @return string
*/
function ip_to_address($ip, $fields = '')
{
if (empty($ip)) {
return '';
}
include_once Env::get('root_path') . 'extend/' . 'ipipnet/IP4datx.class.php';
if (is_numeric($ip) || count(explode('.', $ip)) == 0) {
$ip = long2ip($ip);
}
//添加地区
$country = '未知';
$province = '未知';
$city = '未知';
$isp = '';
try {
$ipInfo = \IP::find($ip);
$country = $ipInfo[0];
$province = $ipInfo[1];
$city = $ipInfo[2];
$isp = $ipInfo[3];
} catch (Exception $e) {
Log::error($e);
}
$data['country'] = $country;
$data['province'] = $province;
$data['city'] = $city;
$data['isp'] = $isp;
//移除不需要的字段
if (!empty($fields)) {
$values = '';
$fields = explode(',', $fields);
foreach ($data as $k => $v) {
if (in_array($k, $fields)) {
$values .= $v;
}
}
return $values;
}
return $data;
}
//获取当前完整的url路径
function get_cur_url()
{
// $url = 'http://';
// if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
// $url = 'https://';
// }
//
// if ($_SERVER['SERVER_PORT'] != '80') {
// $url .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
// } else {
// $url .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
// }
//
// return $url;
$request = request();
if ($request->isCli()) {
$scheme = $request->header('scheme') ? $request->header('scheme') : $request->scheme();
return $scheme . '://' . $request->header('x-original-host') . $request->server('REQUEST_URI');
} else {//cgi
return $request->url(true);
}
}
/**
* 压缩文件|文件夹
* @param string $path 需要压缩的文件[夹]路径
* @param string $zipFile 压缩文件所保存的目录
* @return string zip文件路径
*/
function x_zip($path, $zipFile)
{
set_time_limit(0);
$zip = new \ZipArchive();
$zip->open($zipFile, ZIPARCHIVE::CREATE);
$path = preg_replace('/\/\//', '/', $path);
$base_dir = strpos($path, DIRECTORY_SEPARATOR) == strlen($path) - 1 ? $path: $path . DIRECTORY_SEPARATOR; //基目录
if (is_file($path)) {
$localName = str_replace($base_dir, '', $path);
$zip->addFile($path, $localName);
$zip->close();
return $zipFile;
}
function addFileToZip($path, &$zip, &$base_dir) {
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file == '.' || $file == '..') {
continue;
}
$targetFile = $path . DIRECTORY_SEPARATOR . $file;
if (is_file($targetFile)) {//条目是文件
$localName = str_replace($base_dir, '', $targetFile);
//var_dump($localName);var_dump($targetFile);
$zip->addFile($targetFile, $localName);
} else if (is_dir($targetFile)) {
addFileToZip($targetFile, $zip, $base_dir);
$localName = str_replace($base_dir, '', $targetFile);
//var_dump($localName);
$zip->addEmptyDir($localName);
}
}
closedir($handle);
}
addFileToZip($path, $zip, $base_dir);
$zip->close();
return $zipFile;
}
/**
* 解压zip文件
* @param String $zipFile 压缩包路径
* @param string $unzipPath 解压路径
*/
function x_unzip($zipFile, $unzipPath = '.')
{
$zip = new \ZipArchive();
if ($zip->open($zipFile) == true) {
//将压缩文件解压到指定的目录下
$zip->extractTo($unzipPath);
//关闭zip文档
$zip->close();
}
}
//日志输出,用于第三方库统一日志输出,如extend或vendor内的库输出
function file_log($message, $level='debug')
{
Log::log($level, $message);
}
//金额分显示为元
function money_show($fee)
{
return number_format($fee / 100, 2);
}
//php获取中文字符拼音首字母
function get_first_pinyin($str)
{
$py = new \app\common\library\PinYin();
$str = $py->getFirstLetter($str);
return strtoupper($str);
}
/**
* 密码,加密 方式
* @param 原始密码 $rawPasswd
* @param 加密key $key
* @return boolean|string
*/
function encrypt_password($rawPasswd, $key = '')
{
if (empty($rawPasswd)) {
return false;
}
$passwd = strtolower((string)$rawPasswd);
if (empty($key)) {
$key = get_config('password_key', '');
}
$shaStr = hash("sha256", $passwd . "{" . $key . "}");
return strtolower(md5($shaStr));
}
/**
* sha256+md5加密密码, 安全度高
* @param 原始密码 $rawPasswd
* @param 加密key $key
* @return boolean|string
*/
function encrypt_password_advanced($rawPasswd, $key = '')
{
if (empty($rawPasswd)) {
return false;
}
$passwd = strtolower((string)$rawPasswd);
if (empty($key)) {
$key = get_config('password_key', '');
}
$shaStr = hash("sha256", $passwd . "{" . $key . "}");
return strtolower(md5($shaStr));
}
/**
* sha1+md5加密密码,安全度低
* @param 原始密码 $rawPasswd
* @param 加密key $key
* @return boolean|string
*/
function encrypt_password_low($rawPasswd, $key = '')
{
if (empty($rawPasswd)) {
return false;
}
$passwd = strtolower((string)$rawPasswd);
if (empty($key)) {
没有合适的资源?快使用搜索试试~ 我知道了~
BeyongCms内容管理系统(简称BeyongCms) v1.6.8 开源免费
共1493个文件
png:443个
js:275个
php:208个
需积分: 9 0 下载量 199 浏览量
2023-01-11
17:47:09
上传
评论
收藏 20.57MB ZIP 举报
温馨提示
BeyongCms系统基于ThinkPHP5.1框架的轻量级内容管理系统,适用于企业Cms, 个人站长等,针对移动App、小程序优化;提供完善简洁的项目文档,方便开发人员进行二次开发。 支持模块式开发,方便平台扩展及第三方进行二次开发。专注于个人站长、中小企业客户,提供基础平台功能及丰富的应用扩展, 支持PC和移动场景,满足企业建站系统、后台管理框架、App后台开发、微信小程序开发、小程序开发框架、小程序API、小程序开发等实际二次开发场景。
资源推荐
资源详情
资源评论
收起资源包目录
BeyongCms内容管理系统(简称BeyongCms) v1.6.8 开源免费 (1493个子文件)
start_timer.bat 641B
start_queue.bat 417B
style.css 177KB
style.css 177KB
summernote-bs3.css 149KB
bootstrap.min.css 118KB
bootstrap.min14ed.css 118KB
bootstrap.min.css 118KB
style.min.css 97KB
style.min862f.css 97KB
layui.css 68KB
animate.css 67KB
animate.min.css 46KB
ueditor.css 45KB
ueditor.min.css 34KB
datepicker3.css 34KB
jquery-ui.css 33KB
font-awesome.css 30KB
ambiance.css 26KB
style.min.css 25KB
fullcalendar.css 24KB
font-awesome.min.css 23KB
video-js.css 22KB
image.css 19KB
sweetalert.css 18KB
video.css 15KB
attachment.css 15KB
select2.min.css 15KB
chartist.min.css 14KB
layer.css 14KB
layer.css 14KB
jasny-bootstrap.min.css 14KB
jquery-ui-1.10.4.custom.min.css 14KB
chosen.css 13KB
main.css 13KB
ui.jqgrid.css 13KB
bootstrap-datetimepicker.css 12KB
dropzone.css 12KB
video-js.min.css 11KB
layim.css 11KB
layer.css 11KB
bootstrap-datetimepicker.min.css 11KB
summernote.css 10KB
datatables.min.css 10KB
footable.bootstrap.css 10KB
layui.mobile.css 10KB
dropzone-4.3.0.min.css 9KB
footable.bootstrap.min.css 8KB
ladda-themeless.min.css 8KB
codemirror.css 7KB
laydate.css 7KB
shCoreDefault.css 7KB
daterangepicker-bs3.css 7KB
awesome-bootstrap-checkbox.css 7KB
main.css 7KB
toastr.min.css 7KB
blueimp-gallery.min.css 7KB
bootstrap-table.min.css 6KB
laydate.css 6KB
jquery.steps.css 6KB
webuploader-demo.min.css 6KB
laydate.css 6KB
fullcalendar.print.css 5KB
cropper.css 5KB
styles.css 5KB
clockpicker.css 4KB
scrawl.css 4KB
basic.css 4KB
style.css 4KB
cropper.min.css 4KB
laydate.css 3KB
laydate.css 3KB
laydate.css 3KB
bootstrap-colorpicker.min.css 3KB
laydate.css 3KB
laydate.css 3KB
laydate.css 3KB
shCoreDefault3.css 3KB
ion.rangeSlider.css 3KB
slick-theme.css 3KB
jquery.nouislider.css 3KB
codemirror.css 3KB
layer.ext.css 3KB
charts.css 3KB
bootstrap-markdown.min.css 3KB
jquery.gritter.css 3KB
background.css 2KB
c3.min.css 2KB
bootstrap-tour.min.css 2KB
ion.rangeSlider.skinFlat.css 2KB
slick.css 2KB
emotion.css 2KB
dialogbase.css 2KB
music.css 2KB
custom.css 1KB
edittable.css 1KB
code.css 1KB
template.css 1KB
jquery.bootstrap-touchspin.min.css 908B
jquery.tagsinput.min.css 770B
共 1493 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
跟着猫哥学
- 粉丝: 122
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功