Browse Source

移除百度新闻,常规优化

tags/6.2.0
xushubieli 1 year ago
parent
commit
c41aaefdef
17 changed files with 156 additions and 403 deletions
  1. +0
    -76
      src/admin/baidunews.php
  2. +2
    -2
      src/admin/dialog/select_templets_post.php
  3. +2
    -2
      src/admin/shops_operations_cart.php
  4. +3
    -3
      src/admin/shops_operations_userinfo.php
  5. +1
    -1
      src/admin/templets/action_search.htm
  6. +0
    -41
      src/admin/templets/baidunews.htm
  7. +2
    -1
      src/admin/templets/friendlink_type.htm
  8. +1
    -1
      src/admin/templets/member_main.htm
  9. +1
    -1
      src/admin/templets/stepselect_main.htm
  10. +1
    -1
      src/admin/templets/update_guide_getfiles.htm
  11. +8
    -48
      src/data/config.file.inc.php
  12. +100
    -104
      src/install/sql-dfdata.txt
  13. +18
    -75
      src/system/libraries/agent.class.php
  14. +5
    -25
      src/system/libraries/crawlerdetect.class.php
  15. +9
    -18
      src/system/libraries/statistics.class.php
  16. +3
    -3
      src/user/ajax_feedback.php
  17. +0
    -1
      src/user/operation.php

+ 0
- 76
src/admin/baidunews.php View File

@@ -1,76 +0,0 @@
<?php
/**
* 百度新闻
*
* @version $Id: baidunews.php 1 14:31 2010年7月12日Z tianya $
* @package DedeBIZ.Administrator
* @copyright Copyright (c) 2022, DedeBIZ.COM
* @license https://www.dedebiz.com/license
* @link https://www.dedebiz.com
*/
require_once(dirname(__FILE__)."/config.php");
$filename = str_replace("..", "", $filename);
$filename = str_replace("{cmspath}", $cfg_cmspath, $filename);
if (empty($do)) {
include DEDEADMIN.'/templets/baidunews.htm';
} else {
$baidunews = "<?xml version=\"1.0\" encoding=\"".$cfg_soft_lang."\" ?>\n";
$baidunews .= "<document>\n";
$baidunews .= "<webSite>$cfg_webname </webSite>\n";
$baidunews .= "<webMaster>$cfg_adminemail </webMaster>\n";
$baidunews .= "<updatePeri>$cfg_updateperi </updatePeri>\n";
$limit = $cfg_baidunews_limit;
if ($limit > 100 || $limit < 1) {
$limit = 100;
}
$query = "SELECT maintable.*, addtable.body, arctype.typename
FROM `#@__archives` maintable
LEFT JOIN `#@__addonarticle` addtable ON addtable.aid=maintable.id
LEFT JOIN `#@__arctype` arctype ON arctype.ID=maintable.typeid
WHERE maintable.channel=1 and maintable.arcrank!=-1 ORDER BY maintable.pubdate DESC LIMIT $limit
";
$dsql->SetQuery($query);
$dsql->Execute();
$proto = IsSSL()? "https://" : "http://";
while ($row = $dsql->GetArray()) {
$title = dede_htmlspecialchars($row['title']);
$row1 = GetOneArchive($row['id']);
if ((strpos($row1['arcurl'], 'http://') === false) || (strpos($row1['arcurl'], 'https://') === false)) {
$link = ($cfg_basehost == '' ? $proto.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$row1['arcurl'];
} else {
$link = $row1['arcurl'];
}
$link = dede_htmlspecialchars($link);
$description = dede_htmlspecialchars(strip_tags($row['description']));
$text = dede_htmlspecialchars(strip_tags($row['body']));
$image = $row['litpic'] == '' ? '' : $row['litpic'];
if ($image != '' && (strpos($image, 'http://') === false) || (strpos($image, 'https://') === false)) {
$image = ($cfg_basehost == '' ? $proto.$_SERVER["HTTP_HOST"].$cfg_cmspath : $cfg_basehost).$image;
}
//$headlineimg = '';
$keywords = dede_htmlspecialchars($row['keywords']);
$category = dede_htmlspecialchars($row['typename']);
$author = dede_htmlspecialchars($row['writer']);
$source = dede_htmlspecialchars($row['source']);
$pubdate = dede_htmlspecialchars(gmdate('Y-m-d H:i', $row['pubdate'] + $cfg_cli_time * 3600));
$baidunews .= "<item>\n";
$baidunews .= "<title>$title </title>\n";
$baidunews .= "<link>$link </link>\n";
$baidunews .= "<description>$description </description>\n";
$baidunews .= "<text>$text </text>\n";
$baidunews .= "<image>$image </image>\n";
//$baidunews .= "<headlineimages/>\n";
$baidunews .= "<keywords>$keywords </keywords>\n";
$baidunews .= "<category>$category </category>\n";
$baidunews .= "<author>$author </author>\n";
$baidunews .= "<source>$source </source>\n";
$baidunews .= "<pubDate>$pubdate </pubDate>\n";
$baidunews .= "</item>\n";
}
$baidunews .= "</document>\n";
$fname = str_replace("//","/",DEDEROOT.$filename) ;
$fp = fopen($fname, 'w');
fwrite($fp, $baidunews);
fclose($fp);
showmsg("<a href='{$filename}' target=\"_blank\">{$filename}生成成功</a>", 'javascript:;');
}

+ 2
- 2
src/admin/dialog/select_templets_post.php View File

@@ -14,11 +14,11 @@ if (empty($uploadfile)) {
$uploadfile = "";
}
if (!is_uploaded_file($uploadfile)) {
ShowMsg("您没有选择上传的文件!", "-1");
ShowMsg("您没有选择上传的文件", "-1");
exit();
}
if (!preg_match("#^text#", $uploadfile_type)) {
ShowMsg("您上传的不是文本类型附件!", "-1");
ShowMsg("您上传的不是文本类型附件", "-1");
exit();
}
if (!preg_match("#\.(".$cfg_txttype.")#i", $uploadfile_name)) {


+ 2
- 2
src/admin/shops_operations_cart.php View File

@@ -11,9 +11,9 @@
require_once(dirname(__FILE__)."/config.php");
require_once(DEDEINC."/datalistcp.class.php");
CheckPurview('shops_Operations');
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作!</a>");
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作</a>");
$oid = preg_replace("#[^-0-9A-Z]#", "", $oid);
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号!</a>");
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号</a>");
$row = $dsql->GetOne("SELECT * FROM `#@__shops_userinfo` WHERE oid='$oid'");
$sql = "SELECT o.*,p.title,p.price as uprice,d.dname FROM `#@__shops_orders` as o left join `#@__shops_products` as p on o.oid=p.oid left join `#@__shops_delivery` as d on d.pid=o.pid WHERE o.oid='$oid'";
$dlist = new DataListCP();


+ 3
- 3
src/admin/shops_operations_userinfo.php View File

@@ -10,13 +10,13 @@
*/
require_once(dirname(__FILE__)."/config.php");
CheckPurview('shops_Operations');
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作!</a>");
if (!isset($oid)) exit("<a href='javascript:window.close()'>无效操作</a>");
$oid = preg_replace("#[^-0-9A-Z]#", "", $oid);
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号!</a>");
if (empty($oid)) exit("<a href='javascript:window.close()'>无效订单号</a>");
$rows = $dsql->GetOne("SELECT * FROM `#@__shops_userinfo` WHERE oid='$oid' LIMIT 0,1");
if (!is_array($rows)) {
$dsql->Close();
exit("<a href='javascript:window.close()'>该订单下没相关用户信息!</a>");
exit("<a href='javascript:window.close()'>该订单下没相关用户信息</a>");
}
$row = $dsql->GetOne("SELECT pid,dprice FROM `#@__shops_orders` WHERE oid='$oid'");
if (is_array($row)) {


+ 1
- 1
src/admin/templets/action_search.htm View File

@@ -26,7 +26,7 @@
<tr>
<td align="center">
<table width="98%" cellspacing="0" cellpadding="5">
<?php foreach ($row['soniterm'] as $rows) {?>
<?php foreach ($row['soniterm'] as $rows) { ?>
<tr>
<td align="left"><a href="<?php echo $rows['linkurl'] ?>" target="main"><?php echo $rows['title'] ?></a><br><?php echo $rows['description'] ?></td>
</tr>


+ 0
- 41
src/admin/templets/baidunews.htm View File

@@ -1,41 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="<?php echo $cfg_soft_lang; ?>">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<title>百度新闻地图</title>
<link rel="stylesheet" href="../static/web/css/bootstrap.min.css">
<link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css">
<link rel="stylesheet" href="../static/web/css/admin.css">
</head>
<body>
<table width="98%" align="center" cellpadding="4" cellspacing="1" class="table maintable mt-3 mb-3">
<tr>
<td colspan="2" background="../static/web/img/tbg.gif" style="padding-left:10px">百度新闻地图</td>
</tr>
<tr>
<td colspan="2">
<p>《互联网新闻开放协议》是百度新闻搜索制定的搜索引擎新闻源收录标准,网站可将发布的新闻内容制作成遵循此开放协议的XML格式的网页(独立于原有的新闻发布形式)供搜索引擎索引</p>
<p> <a href="http://news.baidu.com/newsop.html#kg" target="_blank">详情参见</a></p>
<p>配置的相关参数在 <a href="sys_info.php">系统设置</a>-其他选项中调整</p>
<p>只适用于文章频道,数据表为V6默认的</p>
</td>
</tr>
<form id="form2" name="form1" method="post" action="?do=yes" target="stafrm">
<tr>
<td>文件名:</td>
<td><input name="filename" type="text" id="textfield" value="{cmspath}/a/baidunews.xml" size="30" class='alltxt' /></td>
</tr>
<tr>
<td height="26" bgcolor="#F8FCF1" colspan="2" align="center"><button name="button" type="submit" class="btn btn-success btn-sm" id="button">开始生成</button></td>
</tr>
</form>
<tr>
<td colspan="2">状态:</td>
</tr>
<tr>
<td align="center" colspan="2"><iframe name="stafrm" frameborder="0" id="stafrm" width="96%" height="360px"></td>
</tr>
</table>
</body>
</html>

+ 2
- 1
src/admin/templets/friendlink_type.htm View File

@@ -17,7 +17,8 @@
<a href="friendlink_main.php">友情链接管理</a>&nbsp;
<a href="friendlink_add.php" class="btn btn-success btn-sm">增加链接</a>
<a href="friendlink_type.php" class="btn btn-success btn-sm">网站类型管理</a>
<a href='../apps/flink_add.php' target='_blank' class="btn btn-success btn-sm">外部申请表单</a></td>
<a href='../apps/flink_add.php' target='_blank' class="btn btn-success btn-sm">外部申请表单</a>
</td>
</tr>
<tr bgcolor="#F8FCF1">
<td width="4%" height="26" align="center">类型ID</td>


+ 1
- 1
src/admin/templets/member_main.htm View File

@@ -1,4 +1,4 @@
{dede:config.pagesize value="30"/}
{dede:config.pagesize value='30'/}
<!DOCTYPE html>
<html>
<head>


+ 1
- 1
src/admin/templets/stepselect_main.htm View File

@@ -1,4 +1,4 @@
{dede:config.pagesize value="30"/}
{dede:config.pagesize value='30'/}
<!DOCTYPE html>
<html>
<head>


+ 1
- 1
src/admin/templets/update_guide_getfiles.htm View File

@@ -17,7 +17,7 @@
</td>
</tr>
<tr>
<td height="26" colspan="2">下载的文件临时存放在文件夹<span class='text-danger'>../data/<?php echo $tmpdir; ?></span>内,如果某些基础类有重要的改动导致更新中途中错,您可以从这文件夹提取文件手工更新</td>
<td height="26" colspan="2">下载的文件临时存放在文件夹<span class='text-danger'>../data/<?php echo $tmpdir; ?></span>内,如果某些基础类有重要的改动导致更新中途中错,您可以从这文件夹提取文件手工更新</td>
</tr>
<?php echo $dirinfos; ?>
<tr bgcolor="#F8FEDA">


+ 8
- 48
src/data/config.file.inc.php View File

@@ -1,21 +1,17 @@
<?php
/*---------------------------------------------------------------------------------------------
文件远程发布目录更新配置(config.file.inc.php)
说明:本文件主要用于系统后台[生成]-[自动任务]-[远程服务器同步]
中的文件夹自定义更新配置所用,使用时候如果有特定目录需要进行同
步,则需要在这个文件中进行配置,配置方式如下:
说明:本文件主要用于系统后台[生成]-[自动任务]-[远程服务器同步]文件远程发布目录更新配置(config.file.inc.php)
中的文件夹自定义更新配置所用,使用时候如果有特定目录需要进行同步,则需要在这个文件中进行配置,配置方式如下:
$remotefile[] = array(
'filedir' => '/yourdir', //同步文件夹目录
'description' => '这里是文件夹说明',
'dfserv' => '0', //默认服务器选项,可以在系统后台[系统设置]-[服务器分布/远程 ]中配置
'state' => '0', //同步状态,0:未同步 1:已同步
'description' => ' //这里是文件夹说明',
'dfserv' => '0', //默认服务器选项,可以在系统后台[系统设置]-[服务器分布/远程 ]中配置
'state' => '0', //同步状态,0:未同步 1:已同步
);
-----------------------------------------------------------------------------------------------*/
global $remotefile;
$remotefile = array();
//以下是必备同步配置项
//@start_config 不要改动下面<>结构
#<s_config>
$remotefile[0] = array(
'filedir'=>'/a',
'description'=>'文档HTML默认保存路',
@@ -24,53 +20,17 @@ $remotefile[0] = array(
'issystem'=>1
);
$remotefile[1] = array(
'filedir'=>'/longhoo',
'description'=>'文档HTML默认保存路',
'filedir'=>'/static',
'description'=>'图片上传文件默认路径',
'dfserv'=>0,
'state'=>1,
'issystem'=>1
);
$remotefile[2] = array(
'filedir'=>'/uploads',
'description'=>'图片/上传文件默认路径',
'dfserv'=>0,
'state'=>1,
'issystem'=>1
);
$remotefile[3] = array(
'filedir'=>'/special',
'filedir'=>'/apps/special',
'description'=>'专题目录',
'dfserv'=>0,
'state'=>1,
'issystem'=>1
);
$remotefile[4] = array(
'filedir'=>'/data/js',
'description'=>'生成js目录',
'dfserv'=>0,
'state'=>1,
'issystem'=>1
);
$remotefile[5] = array(
'filedir'=>'/images',
'description'=>'图片素材存放文件',
'dfserv'=>0,
'state'=>1,
'issystem'=>0
);
$remotefile[6] = array(
'filedir'=>'/templets/images',
'description'=>'模板文件图片存放目录',
'dfserv'=>0,
'state'=>1,
'issystem'=>0
);
$remotefile[7] = array(
'filedir'=>'/templets/style',
'description'=>'模板文件CSS样式存放目录',
'dfserv'=>0,
'state'=>1,
'issystem'=>0
);
#<e_config>
?>

+ 100
- 104
src/install/sql-dfdata.txt View File

@@ -3946,11 +3946,11 @@ INSERT INTO `#@__sysconfig` VALUES
('2','cfg_cmspath','安装目录','2','string',''),
('3','cfg_cookie_encode','Cookies加密码','2','string',''),
('4','cfg_indexurl','首页链接','1','string','/'),
('5','cfg_backup_dir','数据备份目录,data文件夹里','2','string','backupdata'),
('5','cfg_backup_dir','数据备份目录,data文件夹里','2','string','backupdata'),
('6','cfg_indexname','首页链接名','1','string','首页'),
('7','cfg_webname','网站名称','1','string','某某公司'),
('8','cfg_adminemail','网站发信邮箱','2','string','support@dedebiz.com'),
('9','cfg_html_editor','富文本(默认CKEditor可换修改其他富文本)','2','string','ckeditor'),
('9','cfg_html_editor','富文本,默认CKEditor可自行更换其它富文本','2','string','ckeditor'),
('10','cfg_arcdir','默认文档生成文件路径','1','string','/a'),
('11','cfg_medias_dir','默认图片上传文件路径','1','string','/static'),
('12','cfg_ddimg_width','缩略图默认宽度','3','number','400'),
@@ -3961,7 +3961,7 @@ INSERT INTO `#@__sysconfig` VALUES
('17','cfg_mediatype','允许的多媒体文件类型','3','bstring','swf|rm|rmvb|mpg|mp3|mp4|wmv|wma|wav|mid|mov'),
('18','cfg_specnote','专题的最大节点数','2','number','10'),
('19','cfg_list_symbol','栏目位置的间隔符号','2','string',''),
('20','cfg_notallowstr','系统禁用词语,停止用户动作用“|”分开,但不要在结尾加“|”','5','bstring','神经病|废物'),
('20','cfg_notallowstr','系统禁用词语,用“|”分开,但不要在结尾加“|”','5','bstring','神经病|废物'),
('21','cfg_feedbackcheck','是否需审核评论及留言','5','bool','Y'),
('22','cfg_keyword_replace','是否使用关键词替换功能,开启影响文档生成速度','2','bool','Y'),
('23','cfg_rewrite','是否使用伪静态,开启需添加伪静态规则','1','bool','N'),
@@ -4004,108 +4004,104 @@ INSERT INTO `#@__sysconfig` VALUES
('60','cfg_arc_autopic','提取第一张图片作为缩略图','7','bool','Y'),
('61','cfg_arc_autokeyword','自动提取关键词','7','bool','N'),
('62','cfg_title_maxlen','文档标题最大长度,变量后需要手工修改数据表','7','number','250'),
('64','cfg_album_row','图集多行多列样式默认行数','3','number','3'),
('65','cfg_album_col','图集多行多列样式默认列数','3','number','4'),
('66','cfg_album_pagesize','图集多页多图每页显示最大数','3','number','12'),
('67','cfg_album_style','图集默认样式(1为多页多图、2为多页单图、3为缩略图列表)','3','number','2'),
('68','cfg_album_ddwidth','图集默认缩略图大小','3','number','200'),
('69','cfg_mb_notallow','不允许注册的会员ID','4','bstring','www,bbs,ftp,mail,user,users,admin,administrator'),
('70','cfg_mb_idmin','用户ID最小长度','4','number','6'),
('71','cfg_mb_pwdmin','用户密码最小长度','4','number','6'),
('72','cfg_md_idurl','是否严格限定会员登录ID,允许会员使用二级域名必须设置此项','4','bool','N'),
('73','cfg_mb_rank','注册会员默认级别,会员权限管理中查看级别代表的数字','4','number','10'),
('74','cfg_feedback_time','两次评论至少间隔时间:秒','5','number','30'),
('75','cfg_feedback_numip','每个IP一小时内最大评论数','5','number','30'),
('76','cfg_md_mailtest','是否限制邮箱只能注册一个帐号','4','bool','Y'),
('77','cfg_mb_spacesta','会员使用权限开通状态(-10邮件验证、-1手工审核、0没限制)','4','number','-10'),
('78','cfg_mb_allowreg','是否允许新会员注册','4','bool','Y'),
('79','cfg_mb_adminlock','是否禁止访问管理员帐号的空间','4','bool','N'),
('80','cfg_vdcode_member','是否会员投稿验证码','5','bool','Y'),
('81','cfg_mb_cktitle','是否检测会员投稿重复标题','5','bool','Y'),
('82','cfg_mb_editday','投稿多少天后不能再修改','5','number','1'),
('83','cfg_sendarc_scores','投稿可获取积分','5','number','10'),
('84','cfg_caicai_sub','被踩扣除文章好评度','5','number','2'),
('85','cfg_caicai_add','被顶扣除文章好评度','5','number','2'),
('86','cfg_feedback_add','详细好评可获好评度','5','number','5'),
('87','cfg_feedback_sub','详细恶评扣除好评度','5','number','5'),
('88','cfg_sendfb_scores','参与评论可获积分','5','number','3'),
('89','cfg_search_max','最大搜索检查文档数','6','number','50000'),
('90','cfg_search_maxrc','最大返回搜索结果数','6','number','300'),
('91','cfg_search_time','搜索间隔时间:秒','6','number','3'),
('92','cfg_baidunews_limit','百度新闻更新新闻数量,最大100','8','string','100'),
('93','cfg_smtp_port','SMTP服务器端口','2','string','25'),
('94','cfg_sendmail_bysmtp','是否启用SMTP方式发送邮件','2','bool','Y'),
('95','cfg_smtp_server','SMTP服务器','2','string','smtp.qq.com'),
('96','cfg_smtp_usermail','SMTP服务器的用户邮箱','2','string','tianya@dedebiz.com'),
('97','cfg_smtp_user','SMTP服务器的用户帐号','2','string','tianya'),
('98','cfg_smtp_password','SMTP服务器的用户密码','2','string','tianya'),
('99','cfg_updateperi','百度新闻更新时间:分','8','string','15'),
('100','cfg_online_type','在线支付网关类型','2','string','nps'),
('101','cfg_upload_switch','删除文章文件同时删除相关附件文件','2','bool','Y'),
('102','cfg_fck_xhtml','是否使用富文本','2','bool','N'),
('103','cfg_allsearch_limit','网站全局搜索时间限制:秒','2','string','1'),
('104','cfg_delete','是否开启文章回收站','2','bool','Y'),
('105','cfg_keywords','站点默认关键词','1','string',''),
('106','cfg_description','站点描述','1','bstring',''),
('107','cfg_beian','网站备案号','1','string',''),
('108','cfg_need_typeid2','是否启用副栏目','6','bool','Y'),
('109','cfg_mb_pwdtype','前台密码验证类型:默认32—32位md5,可选:l16—前16位、r16—后16位、m16—中间16位','4','string','32'),
('110','cfg_cache_type','id 文档ID,content标签最终内容,修改此变量后必须更新系统缓存','6','string','id'),
('111','cfg_max_face','会员上传头像大小限制KB','3','number','100'),
('112','cfg_typedir_df','栏目网址使用目录名(不显示默认页,则是/a/b/c形式)','2','bool','Y'),
('113','cfg_make_andcat','发表文章后马上更新相关栏目','6','bool','N'),
('114','cfg_make_prenext','发表文章后马上更新上下篇','6','bool','N'),
('115','cfg_feedback_forbid','是否禁止所有评论,包括禁止顶踩等','5','bool','N'),
('116','cfg_addon_domainbind','是否绑定附件目录为指定的二级域名','7','bool','N'),
('117','cfg_addon_domain','附件目录的二级域名','7','string',''),
('118','cfg_df_dutyadmin','默认责任编辑名称','7','string','网站管理员'),
('119','cfg_mb_allowncarc','是否允许用户空间显示未审核文章','4','bool','Y'),
('120','cfg_mb_spaceallarc','会员空间中所有文档的频道ID(不限为0)','4','number','0'),
('121','cfg_face_adds','上传头像增加积分','5','number','10'),
('122','cfg_moreinfo_adds','填写详细资料增加积分','5','number','20'),
('123','cfg_money_scores','多少积分可以兑换一个金币','5','number','50'),
('124','cfg_mb_wnameone','是否允许用户昵称重复','4','bool','N'),
('125','cfg_arc_dirname','是否允许用目录作为文档文件名,文档命名规则:{typedir}/{aid}/index.html','7','bool','Y'),
('126','cfg_puccache_time','需缓存内容全局缓存时间:秒','6','number','36000'),
('127','cfg_arc_click','文档默认点击数(-1表示随机50-200)','7','number','-1'),
('128','cfg_addon_savetype','附件保存形式,按data函数日期参数(y年m月d日)','3','string','ymd'),
('129','cfg_qk_uploadlit','异步上传缩略图,空间太不稳定用户关闭此项','3','bool','Y'),
('130','cfg_login_adds','登录会员中心获积分','5','number','2'),
('131','cfg_userad_adds','会员推广获积分','5','number','10'),
('132','cfg_ddimg_full','是否使用缩略图强制大小,对背景填充','3','bool','N'),
('133','cfg_ddimg_bgcolor','缩略图空白背景填充颜色(0白,1黑)','3','number','0'),
('134','cfg_replace_num','文档内容关键词替换次数(0为全部替换)','7','number','1'),
('135','cfg_uplitpic_cut','是否上传缩略图后马上弹出裁剪框','3','bool','Y'),
('136','cfg_album_mark','是否使用图集水印,小图也会受影响','3','bool','N'),
('137','cfg_mb_feedcheck','是否需要会员动态审核','4','bool','N'),
('138','cfg_mb_msgischeck','是否需要会员状态审核','4','bool','N'),
('139','cfg_title_site','是否发布和编辑文档时远程发布,启用远程站点的前提下','2','bool','N'),
('140','cfg_mysql_type','数据库类型,支持MySQL和Mysqli','2','string','mysql'),
('141', 'cfg_domain_cookie', '跨域共享Cookie的域名,例如: www.dedebiz.com', 2, 'string', ''),
('142', 'cfg_cross_sectypeid', '支持交叉栏目显示副栏目内容', '7', 'bool', 'Y'),
('143', 'cfg_digg_update', '顶踩缓存异步更新间隔(0为不缓存)', '6', 'number', '0'),
('144', 'cfg_feedback_guest', '是否允许匿名评论', '5', 'bool', 'N'),
('145', 'cfg_feedback_msglen', '评论内容字数限定', 5, 'number', '250'),
('146', 'cfg_auth_code', '商业版授权码', 1, 'bstring', ''),
('147', 'cfg_bizcore_hostname', 'DedeBIZ Core地址', 1, 'string', '127.0.0.1'),
('148', 'cfg_bizcore_port', 'DedeBIZ Core端口', 1, 'number', '8181'),
('149', 'cfg_bizcore_appid', 'DedeBIZ Core应用ID', 1, 'string', ''),
('150', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', ''),
('151', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags');
('63','cfg_album_row','图集多行多列样式默认行数','3','number','3'),
('64','cfg_album_col','图集多行多列样式默认列数','3','number','4'),
('65','cfg_album_pagesize','图集多页多图每页显示最大数','3','number','12'),
('66','cfg_album_style','图集默认样式(1为多页多图、2为多页单图、3为缩略图列表)','3','number','2'),
('67','cfg_album_ddwidth','图集默认缩略图大小','3','number','200'),
('68','cfg_mb_notallow','不允许注册的会员ID','4','bstring','www,bbs,ftp,mail,user,users,admin,administrator'),
('69','cfg_mb_idmin','用户ID最小长度','4','number','6'),
('70','cfg_mb_pwdmin','用户密码最小长度','4','number','6'),
('71','cfg_md_idurl','是否严格限定会员登录ID,允许会员使用二级域名必须设置此项','4','bool','N'),
('72','cfg_mb_rank','注册会员默认级别,会员权限管理中查看级别代表的数字','4','number','10'),
('73','cfg_feedback_time','两次评论至少间隔时间:秒','5','number','30'),
('74','cfg_feedback_numip','每个IP一小时内最大评论数','5','number','30'),
('75','cfg_md_mailtest','是否限制邮箱只能注册一个帐号','4','bool','Y'),
('76','cfg_mb_spacesta','会员使用权限开通状态(-10邮件验证、-1手工审核、0没限制)','4','number','-10'),
('77','cfg_mb_allowreg','是否允许新会员注册','4','bool','Y'),
('78','cfg_mb_adminlock','是否禁止访问管理员帐号的空间','4','bool','N'),
('79','cfg_vdcode_member','是否会员投稿验证码','5','bool','Y'),
('80','cfg_mb_cktitle','是否检测会员投稿重复标题','5','bool','Y'),
('81','cfg_mb_editday','投稿多少天后不能再修改','5','number','1'),
('82','cfg_sendarc_scores','投稿可获取积分','5','number','10'),
('83','cfg_caicai_sub','被踩扣除文章好评度','5','number','2'),
('84','cfg_caicai_add','被顶扣除文章好评度','5','number','2'),
('85','cfg_feedback_add','详细好评可获好评度','5','number','5'),
('86','cfg_feedback_sub','详细恶评扣除好评度','5','number','5'),
('87','cfg_sendfb_scores','参与评论可获积分','5','number','3'),
('88','cfg_search_max','最大搜索检查文档数','6','number','50000'),
('89','cfg_search_maxrc','最大返回搜索结果数','6','number','300'),
('90','cfg_search_time','搜索间隔时间:秒','6','number','3'),
('91','cfg_smtp_port','SMTP服务器端口','2','string','25'),
('92','cfg_sendmail_bysmtp','是否启用SMTP方式发送邮件','2','bool','Y'),
('93','cfg_smtp_server','SMTP服务器','2','string','smtp.qq.com'),
('94','cfg_smtp_usermail','SMTP服务器的用户邮箱','2','string','tianya@dedebiz.com'),
('95','cfg_smtp_user','SMTP服务器的用户帐号','2','string','tianya'),
('96','cfg_smtp_password','SMTP服务器的用户密码','2','string','tianya'),
('97','cfg_updateperi','百度新闻更新时间:分','8','string','15'),
('98','cfg_online_type','在线支付网关类型','2','string','nps'),
('99','cfg_upload_switch','删除文章同时删除相关附件文件','2','bool','Y'),
('100','cfg_fck_xhtml','是否使用富文本','2','bool','N'),
('101','cfg_allsearch_limit','网站全局搜索时间限制:秒','2','string','1'),
('102','cfg_delete','是否开启文章回收站','2','bool','Y'),
('103','cfg_keywords','站点默认关键词','1','string',''),
('104','cfg_description','站点描述','1','bstring',''),
('105','cfg_beian','网站备案号','1','string',''),
('106','cfg_need_typeid2','是否启用副栏目','6','bool','Y'),
('107','cfg_mb_pwdtype','前台密码验证类型,默认32—32位md5(l16—前16位、r16—后16位、m16—中间16位)','4','string','32'),
('108','cfg_cache_type','id 文档ID,content标签最终内容,修改此变量后必须更新系统缓存','6','string','id'),
('109','cfg_max_face','会员上传头像大小限制KB','3','number','100'),
('110','cfg_typedir_df','栏目网址使用目录名(不显示默认页,则/a/b/c形式)','2','bool','Y'),
('111','cfg_make_andcat','发表文章后马上更新相关栏目','6','bool','N'),
('112','cfg_make_prenext','发表文章后马上更新上下篇','6','bool','N'),
('113','cfg_feedback_forbid','是否禁止所有评论,包括禁止顶踩等','5','bool','N'),
('114','cfg_addon_domainbind','是否绑定附件目录为指定的二级域名','7','bool','N'),
('115','cfg_addon_domain','附件目录的二级域名','7','string',''),
('116','cfg_df_dutyadmin','默认责任编辑名称','7','string','网站管理员'),
('118','cfg_mb_allowncarc','是否允许用户空间显示未审核文章','4','bool','Y'),
('119','cfg_mb_spaceallarc','会员空间中所有文档的频道ID(不限为0)','4','number','0'),
('120','cfg_face_adds','上传头像增加积分','5','number','10'),
('121','cfg_moreinfo_adds','填写详细资料增加积分','5','number','20'),
('122','cfg_money_scores','多少积分可以兑换一个金币','5','number','50'),
('123','cfg_mb_wnameone','是否允许用户昵称重复','4','bool','N'),
('124','cfg_arc_dirname','是否允许用目录作为文档文件名,文档命名规则:{typedir}/{aid}/index.html','7','bool','Y'),
('125','cfg_puccache_time','需缓存内容全局缓存时间:秒','6','number','36000'),
('126','cfg_arc_click','文档默认点击数(-1表示随机50-200)','7','number','-1'),
('127','cfg_addon_savetype','附件保存形式,按data函数日期参数(y年m月d日)','3','string','ymd'),
('128','cfg_qk_uploadlit','异步上传缩略图,空间太不稳定用户关闭此项','3','bool','Y'),
('129','cfg_login_adds','登录会员中心获积分','5','number','2'),
('130','cfg_userad_adds','会员推广获积分','5','number','10'),
('131','cfg_ddimg_full','是否使用缩略图强制大小,对背景填充','3','bool','N'),
('132','cfg_ddimg_bgcolor','缩略图空白背景填充颜色(0白,1黑)','3','number','0'),
('133','cfg_replace_num','文档内容关键词替换次数(0为全部替换)','7','number','1'),
('134','cfg_uplitpic_cut','是否上传缩略图后马上弹出裁剪框','3','bool','Y'),
('135','cfg_album_mark','是否使用图集水印,小图也会受影响','3','bool','N'),
('136','cfg_mb_feedcheck','是否需要会员动态审核','4','bool','N'),
('137','cfg_mb_msgischeck','是否需要会员状态审核','4','bool','N'),
('138','cfg_title_site','是否发布和编辑文档时远程发布,启用远程站点的前提下','2','bool','N'),
('139','cfg_mysql_type','数据库类型,支持MySQL和Mysqli','2','string','mysql'),
('140', 'cfg_domain_cookie', '跨域共享Cookie的域名,例如: www.dedebiz.com', 2, 'string', ''),
('141', 'cfg_cross_sectypeid', '支持交叉栏目显示副栏目内容', '7', 'bool', 'Y'),
('142', 'cfg_digg_update', '顶踩缓存异步更新间隔(0为不缓存)', '6', 'number', '0'),
('143', 'cfg_feedback_guest', '是否允许匿名评论', '5', 'bool', 'N'),
('144', 'cfg_feedback_msglen', '评论内容字数限定', 5, 'number', '250'),
('145', 'cfg_auth_code', '商业版授权码', 1, 'bstring', ''),
('146', 'cfg_bizcore_hostname', 'DedeBIZ Core地址', 1, 'string', '127.0.0.1'),
('147', 'cfg_bizcore_port', 'DedeBIZ Core端口', 1, 'number', '8181'),
('148', 'cfg_bizcore_appid', 'DedeBIZ Core应用ID', 1, 'string', ''),
('149', 'cfg_bizcore_key', 'DedeBIZ Core通信密钥', 1, 'string', ''),
('150', 'cfg_tags_dir', 'TAGS生成目录', 7, 'string', '{cmspath}/a/tags');
INSERT INTO `#@__sys_module` VALUES (1, '0cce60bc0238aa03804682c801584991', '百度新闻', '', '', 0, ''),
(2, '1f35620fb42d452fa2bdc1dee1690f92', '文件管理器', '', '', 0, ''),
(4, 'b437d85a7a7bc778c9c79b5ec36ab9aa', '友情链接', '', '', 0, ''),
(5, 'acb8b88eb4a6d4bfc375c18534f9439e', '投票模块', '', '', 0, ''),
(6, '572606600345b1a4bb8c810bbae434cc', '挑错管理', '', '', 0, '');
INSERT INTO `#@__sys_module` VALUES (1, '1f35620fb42d452fa2bdc1dee1690f92', '文件管理器', '', '', 0, ''),
(2, 'b437d85a7a7bc778c9c79b5ec36ab9aa', '友情链接', '', '', 0, ''),
(3, '72ffa6fabe3c236f9238a2b281bc0f93', '广告管理', '', '', 0, ''),
(4, 'acb8b88eb4a6d4bfc375c18534f9439e', '投票模块', '', '', 0, ''),
(5, '572606600345b1a4bb8c810bbae434cc', '挑错管理', '', '', 0, '');
INSERT INTO `#@__plus` VALUES (27, '友情链接模块', '<m:item name=''友情链接'' link=''friendlink_main.php'' rank=''plus_友情链接'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(24, '文件管理器', '<m:item name=''文件管理器'' link=''file_manage_main.php'' rank=''plus_文件管理器'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(23, '百度新闻', '<m:item name=''百度新闻'' link=''baidunews.php'' rank=''plus_百度新闻'' target=''main'' />', '', 'DedeBIZ', 1, 'baidunews.php'),
(28, '投票模块', '<m:item name=''投票模块'' link=''vote_main.php'' rank=''plus_投票模块'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(25, '广告管理', '<m:item name=''广告管理'' link=''ad_main.php'' rank=''plus_广告管理'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(10, '挑错管理', '<m:item name=''挑错管理'' link=''erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />', '', 'DedeBIZ', 1, '<m:item name=''挑错管理'' link=''catalog_do.php?dopost=erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />');
INSERT INTO `#@__plus` VALUES (1, '文件管理器', '<m:item name=''文件管理器'' link=''file_manage_main.php'' rank=''plus_文件管理器'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(2, '友情链接模块', '<m:item name=''友情链接'' link=''friendlink_main.php'' rank=''plus_友情链接'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(3, '广告管理', '<m:item name=''广告管理'' link=''ad_main.php'' rank=''plus_广告管理'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(4, '投票模块', '<m:item name=''投票模块'' link=''vote_main.php'' rank=''plus_投票模块'' target=''main'' />', '', 'DedeBIZ', 1, ''),
(5, '挑错管理', '<m:item name=''挑错管理'' link=''erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />', '', 'DedeBIZ', 1, '<m:item name=''挑错管理'' link=''catalog_do.php?dopost=erraddsave.php'' rank=''plus_挑错管理'' target=''main'' />');
INSERT INTO `#@__sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_funs', '模板引擎禁用PHP函数', 7, 'bstring', '');
INSERT INTO `#@__sysconfig` (`varname`, `info`, `groupid`, `type`, `value`) VALUES ('cfg_disable_tags', '模板引擎禁用标签', 7, 'bstring', '');
ALTER TABLE `#@__arctiny` ADD INDEX `idx_typeid_arcrank_sortrank` (`typeid`, `arcrank`, `sortrank`);

+ 18
- 75
src/system/libraries/agent.class.php View File

@@ -2,9 +2,7 @@
if (!defined('DEDEINC')) exit('dedebiz');
require_once(DEDEINC."/libraries/crawlerdetect.class.php");
require_once(DEDEINC."/libraries/mobiledetect.class.php");

// copyright https://github.com/jenssegers/agent

//copyright https://github.com/jenssegers/agent
class Agent extends Mobile_Detect
{
/**
@@ -14,7 +12,6 @@ class Agent extends Mobile_Detect
protected static $desktopDevices = [
'Macintosh' => 'Macintosh',
];

/**
* List of additional operating systems.
* @var array
@@ -30,7 +27,6 @@ class Agent extends Mobile_Detect
'Linux' => 'Linux',
'ChromeOS' => 'CrOS',
];

/**
* List of additional browsers.
* @var array
@@ -50,21 +46,19 @@ class Agent extends Mobile_Detect
'Mozilla' => 'Mozilla',
'WeChat' => 'MicroMessenger',
];

/**
* List of additional properties.
* @var array
*/
protected static $additionalProperties = [
// Operating systems
//Operating systems
'Windows' => 'Windows NT [VER]',
'Windows NT' => 'Windows NT [VER]',
'OS X' => 'OS X [VER]',
'BlackBerryOS' => ['BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'],
'AndroidOS' => 'Android [VER]',
'ChromeOS' => 'CrOS x86_64 [VER]',

// Browsers
//Browsers
'Opera Mini' => 'Opera Mini/[VER]',
'Opera' => [' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]', 'Opera [VER]'],
'Netscape' => 'Netscape/[VER]',
@@ -74,12 +68,10 @@ class Agent extends Mobile_Detect
'Vivaldi' => 'Vivaldi/[VER]',
'Coc Coc' => 'coc_coc_browser/[VER]',
];

/**
* @var CrawlerDetect
*/
protected static $crawlerDetect;

/**
* Get all detection rules. These rules include the additional
* platforms and browsers and utilities.
@@ -88,32 +80,27 @@ class Agent extends Mobile_Detect
public static function getDetectionRulesExtended()
{
static $rules;

if (!$rules) {
$rules = static::mergeRules(
static::$desktopDevices, // NEW
static::$desktopDevices, //NEW
static::$phoneDevices,
static::$tabletDevices,
static::$operatingSystems,
static::$additionalOperatingSystems, // NEW
static::$additionalOperatingSystems, //NEW
static::$browsers,
static::$additionalBrowsers, // NEW
static::$additionalBrowsers, //NEW
static::$utilities
);
}

return $rules;
}

public function getRules()
{
if ($this->detectionType === static::DETECTION_TYPE_EXTENDED) {
return static::getDetectionRulesExtended();
}

return static::getMobileDetectionRules();
}

/**
* @return CrawlerDetect
*/
@@ -122,10 +109,8 @@ class Agent extends Mobile_Detect
if (static::$crawlerDetect === null) {
static::$crawlerDetect = new CrawlerDetect();
}

return static::$crawlerDetect;
}

public static function getBrowsers()
{
return static::mergeRules(
@@ -133,7 +118,6 @@ class Agent extends Mobile_Detect
static::$browsers
);
}

public static function getOperatingSystems()
{
return static::mergeRules(
@@ -141,7 +125,6 @@ class Agent extends Mobile_Detect
static::$additionalOperatingSystems
);
}

public static function getPlatforms()
{
return static::mergeRules(
@@ -149,12 +132,10 @@ class Agent extends Mobile_Detect
static::$additionalOperatingSystems
);
}

public static function getDesktopDevices()
{
return static::$desktopDevices;
}

public static function getProperties()
{
return static::mergeRules(
@@ -162,7 +143,6 @@ class Agent extends Mobile_Detect
static::$properties
);
}

/**
* Get accept languages.
* @param string $acceptLanguage
@@ -173,14 +153,11 @@ class Agent extends Mobile_Detect
if ($acceptLanguage === null) {
$acceptLanguage = $this->getHttpHeader('HTTP_ACCEPT_LANGUAGE');
}

if (!$acceptLanguage) {
return [];
}

$languages = [];

// Parse accept language string.
//Parse accept language string.
foreach (explode(',', $acceptLanguage) as $piece) {
$parts = explode(';', $piece);
$language = strtolower($parts[0]);
@@ -188,13 +165,10 @@ class Agent extends Mobile_Detect

$languages[$language] = $priority;
}

// Sort languages by priority.
//Sort languages by priority.
arsort($languages);

return array_keys($languages);
}

/**
* Match a detection rule and return the matched key.
* @param array $rules
@@ -203,22 +177,19 @@ class Agent extends Mobile_Detect
*/
protected function findDetectionRulesAgainstUA(array $rules, $userAgent = null)
{
// Loop given rules
//Loop given rules
foreach ($rules as $key => $regex) {
if (empty($regex)) {
continue;
}

// Check match
//Check match
if ($this->match($regex, $userAgent)) {
$val = (array)$this->matchesArray;
return $key ?: reset($val);
}
}

return false;
}

/**
* Get the browser name.
* @param string|null $userAgent
@@ -228,7 +199,6 @@ class Agent extends Mobile_Detect
{
return $this->findDetectionRulesAgainstUA(static::getBrowsers(), $userAgent);
}

/**
* Get the platform name.
* @param string|null $userAgent
@@ -238,7 +208,6 @@ class Agent extends Mobile_Detect
{
return $this->findDetectionRulesAgainstUA(static::getPlatforms(), $userAgent);
}

/**
* Get the device name.
* @param string|null $userAgent
@@ -252,10 +221,8 @@ class Agent extends Mobile_Detect
static::getTabletDevices(),
static::getUtilities()
);

return $this->findDetectionRulesAgainstUA($rules, $userAgent);
}

/**
* Check if the device is a desktop computer.
* @param string|null $userAgent deprecated
@@ -264,17 +231,15 @@ class Agent extends Mobile_Detect
*/
public function isDesktop($userAgent = null, $httpHeaders = null)
{
// Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
//Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
if ($this->getUserAgent() === 'Amazon CloudFront') {
$cfHeaders = $this->getCfHeaders();
if(array_key_exists('HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER', $cfHeaders)) {
return $cfHeaders['HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER'] === 'true';
}
}

return !$this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders) && !$this->isRobot($userAgent);
}

/**
* Check if the device is a mobile phone.
* @param string|null $userAgent deprecated
@@ -285,7 +250,6 @@ class Agent extends Mobile_Detect
{
return $this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders);
}

/**
* Get the robot name.
* @param string|null $userAgent
@@ -299,7 +263,6 @@ class Agent extends Mobile_Detect

return false;
}

/**
* Check if device is a robot.
* @param string|null $userAgent
@@ -309,7 +272,6 @@ class Agent extends Mobile_Detect
{
return $this->getCrawlerDetect()->isCrawler($userAgent ?: $this->userAgent);
}

/**
* Get the device type
* @param null $userAgent
@@ -327,51 +289,38 @@ class Agent extends Mobile_Detect
} elseif ($this->isRobot($userAgent)) {
return "robot";
}

return "other";
}

public function version($propertyName, $type = self::VERSION_TYPE_STRING)
{
if (empty($propertyName)) {
return false;
}

// set the $type to the default if we don't recognize the type
//set the $type to the default if we don't recognize the type
if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) {
$type = self::VERSION_TYPE_STRING;
}

$properties = self::getProperties();

// Check if the property exists in the properties array.
//Check if the property exists in the properties array.
if (true === isset($properties[$propertyName])) {

// Prepare the pattern to be matched.
// Make sure we always deal with an array (string is converted).
//Prepare the pattern to be matched.
//Make sure we always deal with an array (string is converted).
$properties[$propertyName] = (array) $properties[$propertyName];

foreach ($properties[$propertyName] as $propertyMatchString) {
if (is_array($propertyMatchString)) {
$propertyMatchString = implode("|", $propertyMatchString);
}

$propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);

// Identify and extract the version.
//Identify and extract the version.
preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match);

if (false === empty($match[1])) {
$version = ($type === self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]);

return $version;
}
}
}

return false;
}

/**
* Merge multiple rules into one array.
* @param array $all
@@ -380,7 +329,6 @@ class Agent extends Mobile_Detect
protected static function mergeRules(...$all)
{
$merged = [];

foreach ($all as $rules) {
foreach ($rules as $key => $value) {
if (empty($merged[$key])) {
@@ -392,24 +340,19 @@ class Agent extends Mobile_Detect
}
}
}

return $merged;
}

/**
* @inheritdoc
*/
public function __call($name, $arguments)
{
// Make sure the name starts with 'is', otherwise
//Make sure the name starts with 'is', otherwise
if (strpos($name, 'is') !== 0) {
throw new Exception("No such method exists: $name");
}

$this->setDetectionType(self::DETECTION_TYPE_EXTENDED);

$key = substr($name, 2);

return $this->matchUAAgainstKey($key);
}
}
}

+ 5
- 25
src/system/libraries/crawlerdetect.class.php View File

@@ -8,11 +8,9 @@ if (!defined('DEDEINC')) exit('dedebiz');
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/

require_once(DEDEINC."/libraries/fixtures/crawlers.php");
require_once(DEDEINC."/libraries/fixtures/exclusions.php");
require_once(DEDEINC."/libraries/fixtures/headers.php");

class CrawlerDetect
{
/**
@@ -21,56 +19,48 @@ class CrawlerDetect
* @var string|null
*/
protected $userAgent;

/**
* Headers that contain a user agent.
*
* @var array
*/
protected $httpHeaders = array();

/**
* Store regex matches.
*
* @var array
*/
protected $matches = array();

/**
* Crawlers object.
*
* @var \Jaybizzle\CrawlerDetect\Fixtures\Crawlers
*/
protected $crawlers;

/**
* Exclusions object.
*
* @var \Jaybizzle\CrawlerDetect\Fixtures\Exclusions
*/
protected $exclusions;

/**
* Headers object.
*
* @var \Jaybizzle\CrawlerDetect\Fixtures\Headers
*/
protected $uaHttpHeaders;

/**
* The compiled regex string.
*
* @var string
*/
protected $compiledRegex;

/**
* The compiled exclusions regex string.
*
* @var string
*/
protected $compiledExclusions;

/**
* Class constructor.
*/
@@ -79,14 +69,11 @@ class CrawlerDetect
$this->crawlers = new Crawlers();
$this->exclusions = new Exclusions();
$this->uaHttpHeaders = new Headers();

$this->compiledRegex = $this->compileRegex($this->crawlers->getAll());
$this->compiledExclusions = $this->compileRegex($this->exclusions->getAll());

$this->setHttpHeaders($headers);
$this->setUserAgent($userAgent);
}

/**
* Compile the regex patterns into one regex string.
*
@@ -98,7 +85,6 @@ class CrawlerDetect
{
return '('.implode('|', $patterns).')';
}

/**
* Set HTTP headers.
*
@@ -106,23 +92,20 @@ class CrawlerDetect
*/
public function setHttpHeaders($httpHeaders)
{
// Use global _SERVER if $httpHeaders aren't defined.
//Use global _SERVER if $httpHeaders aren't defined.
if (! is_array($httpHeaders) || ! count($httpHeaders)) {
$httpHeaders = $_SERVER;
}

// Clear existing headers.
//Clear existing headers.
$this->httpHeaders = array();

// Only save HTTP headers. In PHP land, that means
// only _SERVER vars that start with HTTP_.
//Only save HTTP headers. In PHP land, that means
//only _SERVER vars that start with HTTP_.
foreach ($httpHeaders as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
$this->httpHeaders[$key] = $value;
}
}
}

/**
* Return user agent headers.
*
@@ -132,7 +115,6 @@ class CrawlerDetect
{
return $this->uaHttpHeaders->getAll();
}

/**
* Set the user agent.
*
@@ -150,7 +132,6 @@ class CrawlerDetect

return $this->userAgent = $userAgent;
}

/**
* Check user agent string against the regex.
*
@@ -172,7 +153,6 @@ class CrawlerDetect

return (bool) preg_match("/{$this->compiledRegex}/i", $agent, $this->matches);
}

/**
* Return the matches.
*
@@ -182,4 +162,4 @@ class CrawlerDetect
{
return isset($this->matches[0]) ? $this->matches[0] : null;
}
}
}

+ 9
- 18
src/system/libraries/statistics.class.php View File

@@ -1,8 +1,6 @@
<?php
if (!defined('DEDEINC')) exit('dedebiz');

require_once(DEDEINC."/libraries/agent.class.php");

/**
* 流量统计
* 一个轻量级流量统计功能
@@ -13,13 +11,11 @@ require_once(DEDEINC."/libraries/agent.class.php");
* @license https://www.dedebiz.com/license
* @link https://www.dedebiz.com
*/

class DedeStatistics {
function __construct()
{
}

// 获取统计JS
//获取统计JS
function GetStat()
{
global $envs,$cfg_cookie_encode;
@@ -66,7 +62,7 @@ class DedeStatistics {
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
} else if (window.ActiveXObject) { //IE
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
@@ -83,14 +79,13 @@ class DedeStatistics {
fetch(u);
}
})();
EOT;
EOT;
}

// 统计
//统计
function Record()
{
global $dsql,$cfg_cookie_encode;
// 进行统计
//进行统计
$pm = array('dduuid','ssid','browser','device','device_type','os','t','created_date','created_hour','url_type','typeid','aid','value','sign');
$pmvalue = array();
foreach ($pm as $v) {
@@ -115,8 +110,7 @@ EOT;
$insql = "INSERT INTO `#@__statistics_detail`(".implode(",",$kstr).") VALUES (".implode(",",$vstr).")";
return $dsql->ExecuteNoneQuery($insql);
}

// 生成uuid
//生成uuid
function _uniqidReal($lenght = 13) {
if (function_exists("random_bytes")) {
$bytes = random_bytes(ceil($lenght / 2));
@@ -127,7 +121,6 @@ EOT;
}
return substr(bin2hex($bytes), 0, $lenght);
}

function GetInfoByDateMulti($ds = array())
{
$results = array();
@@ -137,8 +130,7 @@ EOT;
}
return $result;
}

// 获取某天的统计信息
//获取某天的统计信息
function GetInfoByDate($d=0)
{
global $dsql;
@@ -160,9 +152,8 @@ EOT;
$d = $today;
}
$d = intval($d);
// 如果统计数据中存在,则直接查询统计表
//如果统计数据中存在,则直接查询统计表
$info = $dsql->GetOne("SELECT * FROM `#@__statistics` WHERE sdate = $d");
if (is_array($info)) {
return $info;
}
@@ -171,7 +162,7 @@ EOT;
$ip = $dsql->GetOne("SELECT COUNT(DISTINCT ip) as total FROM `#@__statistics_detail` WHERE created_date = $d");
$vv = $dsql->GetOne("SELECT COUNT(DISTINCT ssid) as total FROM `#@__statistics_detail` WHERE created_date = $d");
if ($d < intval($today)) {
// 缓存数据
//缓存数据
$insql = "INSERT INTO `#@__statistics`(`sdate`,`pv`,`uv`,`ip`,`vv`) VALUES ('$d', '{$pv['total']}','{$uv['total']}','{$ip['total']}','{$vv['total']}')";
$dsql->ExecuteNoneQuery($insql);
}


+ 3
- 3
src/user/ajax_feedback.php View File

@@ -12,9 +12,9 @@ if ($myurl == '') exit('');
else {
$uid = $cfg_ml->M_LoginID;
$face = $cfg_ml->fields['face'] == '' ? $GLOBALS['cfg_memberurl'].'/images/nopic.gif' : $cfg_ml->fields['face'];
echo "用户名:{$cfg_ml->M_UserName} <input name=\"notuser\" type=\"checkbox\" id=\"notuser\" value=\"1\" />匿名评论\r\n";
echo "用户名:{$cfg_ml->M_UserName} <input name='notuser' type='checkbox' id='notuser' value='1' />匿名评论\r\n";
if ($cfg_feedback_ck == 'Y') {
echo "验证码:<input name=\"validate\" type=\"text\" id=\"validate\" size=\"10\" style=\"height:18px;width:60px;margin-right:6px;text-transform: uppercase;\" class=\"nb\" />";
echo "<img src='{$cfg_cmsurl}/apps/vdimgck.php' style='cursor:pointer' id='validateimg' onclick=\"this.src=this.src+'?'\" title='验证码' alt='验证码' />\r\n";
echo "验证码:<input name='validate' type='text' id='validate' size='10' style='height:18px;width:60px;margin-right:6px;text-transform: uppercase;' class='nb' />";
echo "<img src='{$cfg_cmsurl}/apps/vdimgck.php' style='cursor:pointer' id='validateimg' onclick='this.src=this.src+'?'' alt='验证码' title='验证码' />\r\n";
}
}

+ 0
- 1
src/user/operation.php View File

@@ -27,7 +27,6 @@ function GetSta($sta)
else if ($sta == 1) return '已付款';
else return '已完成';
}
if ($dopost == '') {
$sql = "SELECT * FROM `#@__member_operation` WHERE mid='".$cfg_ml->M_ID."' AND product<>'archive' ORDER BY aid DESC";
$dlist = new DataListCP();


Loading…
Cancel
Save