xml version="1.0" encoding="UTF-8" 白石头博客 https://www.jxjmedu.org 分享技术,享受生活 Sat, 30 Jan 2021 04:43:25 +0000 zh-CN hourly 1 https://.org/?v=5.6 白石头博客 https://www.jxjmedu.org/4377.html Sat, 30 Jan 2021 04:36:58 +0000 https://www.jxjmedu.org/?p=4377 继续阅读 ]]> 随着HTML5、CSS3等更先进的技术日趋成熟,慢慢变得落后的Flash就像一个垂暮的老人,逐渐离开网民的视线,2012年,Adobe公司宣布将停止在安卓平台上继续更新Flash插件,转为开发HTML5;2015年,Youtube宣布终止使用Flash作为默认设置,而改用HTML5;同年,谷歌Chrome浏览器团队宣布,所有对于网页内容非至关重要的Flash动画广告和内容将禁止自动播放。从2021年1月1日开始,Flash Player将不再获得来自Adobe的支持。的图集上传功能使用的是flash控件,安全性也低,而且不能轻松实现多实例多图集,所以我们就来把它换一换,换成现在比较流行的layui前端框架 – layui上传模块。

实现功能:

  • 支持 gbk / utf8编码程序
  • 支持后台、前台、会员接入
  • 支持所有模型接入
  • 支持每个图片删除一并删除图片文件
  • 支持每个图片注释
  • 支持每个图片排序
  • 支持前台超级简单标签调用每个图集

动手前,我们得先下载图集layui上传模块

图集layui上传模块

下载后根据自己网站编码把文件放到网站根目录下的include文件夹即可。

实现方法:

1、打开 /dede/templets/album_add.htm 搜索

<div id="thumbnails"></div>

在它所在的tr标签下面加入下面代码:

<link href="../include/layui/css/layui.css" rel="stylesheet" media="all">
<script src="../include/layui/layui.js" type="text/javascript"></script>
<tr>
	<td width="100%" height="24" colspan="4" class="bline">
		<table width="800" border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td width="80" height="40">&nbsp;<b>默认图集:</b></td>
				<td><button type="button" class="layui-btn layui-btn-sm layui-btn-normal imgurls"><i class="layui-icon layui-icon-upload"></i>上传图片</button></td>
			</tr>
		</table>
	</td>
</tr>
<tr>
	<td colspan="4" class="bline">
		<table width='100%'>
			<tr>
				<td><div class="layui-upload-img"><ul class="layui-upload-list" id="imgurls"></ul></div></td>
			</tr>
		</table>
	</td>
</tr>
<script type="text/javascript">
    layui.use('upload', function(){
        var $ = layui.jquery
            ,upload = layui.upload;

        // imgurls 图片上传
        var uploadInst = upload.render({
            elem: '.imgurls'
            ,url: '../include/layui/layuiupload.php'
			,multiple: true
			,accept: 'images'
            ,acceptMime: 'image/*'
            ,done: function(res){
				if(res.code == 0){
					return layer.msg(res.msg);
				}
				$('#imgurls').append('<li class="item_img"><div class="operate"><i class="toleft layui-icon layui-icon-left"></i><i class="toright layui-icon layui-icon-right"></i><i class="close layui-icon layui-icon-close-fill" data-id="' + res.id + '"></i></div><img src="' + res.img + '" class="img" ><input type="text" name="imgurls[alt][]" value="" class="layui-input" /><input type="hidden" name="imgurls[url][]" value="' + res.img + '" /><input type="hidden" name="imgurls[uaid][]" value="' + res.id + '" /></li>');
			}
            ,error: function(){

            }
        });

		$("body").on("click",".close",function(){
			var id = $(this).data('id');
			$.get('../include/layui/layuiupload.php',{'dopost':'del','id':id},function(res){})
			$(this).closest("li").remove();
		});

		$("body").on("click",".layui-upload-img ul li .toleft",function(){
			var li_index = $(this).closest("li").index();
			if(li_index >= 1){
				$(this).closest("li").insertBefore($(this).closest("ul").find("li").eq(Number(li_index)-1));
			}
		});
		$("body").on("click",".layui-upload-img ul li .toright",function(){
			var li_index = $(this).closest("li").index();
			$(this).closest("li").insertAfter($(this).closest("ul").find("li").eq(Number(li_index)+1));
		});

    });
</script>

如下图所示位置:

2、打开 /dede/templets/album_edit.htm 搜索

<div id="thumbnails"></div>

在它所在的tr标签下面加入下面代码

<link href="../include/layui/css/layui.css" rel="stylesheet" media="all">
<script src="../include/layui/layui.js" type="text/javascript"></script>
<tr>
	<td width="100%" height="24" colspan="4" class="bline">
		<table width="800" border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td width="80" height="40">&nbsp;<b>默认图集:</b></td>
				<td><button type="button" class="layui-btn layui-btn-sm layui-btn-normal imgurls"><i class="layui-icon layui-icon-upload"></i>上传图片</button></td>
			</tr>
		</table>
	</td>
</tr>
<tr>
	<td colspan="4" class="bline">
		<table width='100%'>
			<tr>
				<td><div class="layui-upload-img"><ul class="layui-upload-list" id="imgurls"></ul></div></td>
			</tr>
		</table>
	</td>
</tr>
<script type="text/javascript">
    layui.use('upload', function(){
        var $ = layui.jquery
            ,upload = layui.upload;

        // imgurls 图片上传
        var uploadInst = upload.render({
            elem: '.imgurls'
            ,url: '../include/layui/layuiupload.php'
			,multiple: true
			,accept: 'images'
            ,acceptMime: 'image/*'
            ,done: function(res){
				if(res.code == 0){
					return layer.msg(res.msg);
				}
				$('#imgurls').append('<li class="item_img"><div class="operate"><i class="toleft layui-icon layui-icon-left"></i><i class="toright layui-icon layui-icon-right"></i><i class="close layui-icon layui-icon-close-fill" data-id="' + res.id + '"></i></div><img src="' + res.img + '" class="img" ><input type="text" name="imgurls[alt][]" value="" class="layui-input" /><input type="hidden" name="imgurls[url][]" value="' + res.img + '" /><input type="hidden" name="imgurls[uaid][]" value="' + res.id + '" /></li>');
			}
            ,error: function(){
                //失败重传
                
            }
        });

		$("body").on("click",".close",function(){
			var id = $(this).data('id');
			$.get('../include/layui/layuiupload.php',{'dopost':'del','id':id},function(res){})
			$(this).closest("li").remove();
		});

		$("body").on("click",".layui-upload-img ul li .toleft",function(){
			var li_index = $(this).closest("li").index();
			if(li_index >= 1){
				$(this).closest("li").insertBefore($(this).closest("ul").find("li").eq(Number(li_index)-1));
			}
		});
		$("body").on("click",".layui-upload-img ul li .toright",function(){
			var li_index = $(this).closest("li").index();
			$(this).closest("li").insertAfter($(this).closest("ul").find("li").eq(Number(li_index)+1));
		});

    });
</script>

如下图所示位置:

3、打开 /dede/album_add.php 搜索

//加入附加表

在它上面加入下面代码

//图集字段 imgurls
if(is_array($_POST['imgurls']['url']))
{
	$my_imgurls = "";
	foreach($_POST['imgurls']['url'] as $key => $val)
	{
		$my_imgurls .= "{dede:img ddimg='$val' text='{$_POST['imgurls']['alt'][$key]}' width='' height='' uaid='{$_POST['imgurls']['uaid'][$key]}'}$val{/dede:img}\r\n";
	}
}
$imgurls .= addslashes($my_imgurls);

4、打开 /dede/album_edit.php 找到

//更新附加表

在它上面添加下面代码

//图集字段 imgurls
if(is_array($_POST['imgurls']['url']))
{
	$my_imgurls = "";
	foreach($_POST['imgurls']['url'] as $key => $val)
	{
		$my_imgurls .= "{dede:img ddimg='$val' text='{$_POST['imgurls']['alt'][$key]}' width='' height='' uaid='{$_POST['imgurls']['uaid'][$key]}'}$val{/dede:img}\r\n";
	}
}
$imgurls .= addslashes($my_imgurls);

内容页模板调用图集标签新写法

<h2>默认图集</h2>
	<ul>
	{dede:imagelist}
	<li>
		<img src="[field:imgsrc/]" alt="[field:text/]" width="220" height="150">
		<p>[field:text/]</p>
	</li>
	{/dede:imagelist}
</ul>

<h2>户型图片</h2>
<ul>
	{dede:imagelist field="huxing"}
	<li>
		<img src="[field:imgsrc/]" alt="[field:text/]" width="220" height="150">
		<p>[field:text/]</p>
	</li>
	{/dede:imagelist}
</ul>

特别说明

{dede:imagelist field=”huxing”}

field=’图片集字段’

不填的话就是调用图集默认

如果你嫌上面修改太麻烦,可下载修改好的。

后台图片集模型添加layui上传模块4个文件

 

多个图集多实例万博体育官网,万博体育平台官网,万博体育官方网站首页

在操作下面的万博体育官网,万博体育平台官网,万博体育官方网站首页之前必须确定你已经完成上面第一、第二、第三步

1、附加表里添加多个图集字段,例如 户型图片 字段

后台-系统-SQL工具-SQL命令行工具

ALTER TABLE dede_addonimages ADD `huxing` text;

注意:dede_addonimages 是默认的图集模型附加表,注意自己的附加表,千万别写错了。

2、打开 /dede/templets/album_add.htm 搜索

id="imgurls"

在它所在的tr下面加入下面代码

<tr>
	<td width="100%" height="24" colspan="4" class="bline">
		<table width="800" border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td width="80" height="40">&nbsp;<b>户型图片:</b></td>
				<td>
					<button type="button" class="layui-btn layui-btn-sm layui-btn-normal huxing">
						<i class="layui-icon layui-icon-upload"></i>上传图片
					</button>
				</td>
			</tr>
		</table>
	</td>
</tr>
<tr>
	<td colspan="4" class="bline">
		<table width='100%'>
			<tr>
				<td>
					<div class="layui-upload-img">
						<ul class="layui-upload-list" id="huxing"></ul>
					</div>
				</td>
			</tr>
		</table>
	</td>
</tr>

添加的地方如下图所示

继续搜索

// imgurls 图片上传

在它上面加入下面代码

// huxing 图片上传
var uploadInst = upload.render({
	elem: '.huxing'
	,url: '../include/layui/layuiupload.php'
	,multiple: true
	,accept: 'images'
	,acceptMime: 'image/*'
	,done: function(res){
		if(res.code == 0){
			return layer.msg(res.msg);
		}
		$('#huxing').append('<li class="item_img"><div class="operate"><i class="toleft layui-icon layui-icon-left"></i><i class="toright layui-icon layui-icon-right"></i><i class="close layui-icon layui-icon-close-fill" data-id="' + res.id + '"></i></div><img src="' + res.img + '" class="img" ><input type="text" name="huxing[alt][]" value="" class="layui-input" /><input type="hidden" name="huxing[url][]" value="' + res.img + '" /><input type="hidden" name="huxing[uaid][]" value="' + res.id + '" /></li>');
	}
	,error: function(){
		//失败重传
		
	}
});

如下图所示位置

3、打开 /dede/templets/album_edit.htm 搜索

id="imgurls"

在它所在的tr下面加入下面代码

<tr>
	<td width="100%" height="24" colspan="4" class="bline">
		<table width="800" border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td width="80" height="40">&nbsp;<b>户型图片:</b></td>
				<td>
					<button type="button" class="layui-btn layui-btn-sm layui-btn-normal huxing">
						<i class="layui-icon layui-icon-upload"></i>上传图片
					</button>
				</td>
			</tr>
		</table>
	</td>
</tr>
<tr>
	<td colspan="4" class="bline">
		<table width='100%'>
			<tr>
				<td>
					<div class="layui-upload-img">
						<ul class="layui-upload-list" id="huxing">
							<?php
							if($addRow['huxing']!="")
							{
								$dtp = new DedeTagParse();
								$dtp->LoadSource($addRow['huxing']);
								if(is_array($dtp->CTags))
								{
									$fhtml = '';
									foreach($dtp->CTags as $ctag)
									{
										if($ctag->GetName()=="img")
										{
											$bigimg = trim($ctag->GetInnerText());
											$text = trim($ctag->GetAtt('text'),'‘');
											$uaid = trim($ctag->GetAtt('uaid'),'‘');
											$fhtml .= "<li class=\"item_img\"><div class=\"operate\"><i class=\"toleft layui-icon layui-icon-left\"></i><i class=\"toright layui-icon layui-icon-right\"></i><i class=\"close layui-icon layui-icon-close-fill\" data-id=\"{$uaid}\"></i></div><img src=\"{$bigimg}\" class=\"img\" ><input type=\"text\" name=\"huxing[alt][]\" value=\"{$text}\" class=\"layui-input\" /><input type=\"hidden\" name=\"huxing[url][]\" value=\"{$bigimg}\" /><input type=\"hidden\" name=\"huxing[uaid][]\" value=\"{$uaid}\" /></li>";
										}
									}
									echo $fhtml;
								}
								$dtp->Clear();
							}
							?>
						</ul>
					</div>
				</td>
			</tr>
		</table>
	</td>
</tr>

如下图所示位置

继续搜索

// imgurls 图片上传

在它上面加入下面代码

// huxing 图片上传
var uploadInst = upload.render({
	elem: '.huxing'
	,url: '../include/layui/layuiupload.php'
	,multiple: true
	,accept: 'images'
	,acceptMime: 'image/*'
	,done: function(res){
		if(res.code == 0){
			return layer.msg(res.msg);
		}
		$('#huxing').append('<li class="item_img"><div class="operate"><i class="toleft layui-icon layui-icon-left"></i><i class="toright layui-icon layui-icon-right"></i><i class="close layui-icon layui-icon-close-fill" data-id="' + res.id + '"></i></div><img src="' + res.img + '" class="img" ><input type="text" name="huxing[alt][]" value="" class="layui-input" /><input type="hidden" name="huxing[url][]" value="' + res.img + '" /><input type="hidden" name="huxing[uaid][]" value="' + res.id + '" /></li>');
	}
	,error: function(){
		//失败重传
		
	}
});

如下图所示位置

4、打开 /dede/album_add.php 搜索

//生成HTML

在它上面添加下面代码

//新增图集字段 huxing
if(is_array($_POST['huxing']['url']))
{
	$huxing = "";
	foreach($_POST['huxing']['url'] as $key => $val)
	{
		$huxing .= "{dede:img ddimg='$val' text='{$_POST['huxing']['alt'][$key]}' width='' height='' uaid='{$_POST['huxing']['uaid'][$key]}'}$val{/dede:img}\r\n";
	}
	if($huxing)
	{
		$huxing = addslashes($huxing);
		$upquery = "UPDATE `$addtable` SET `huxing`='$huxing' WHERE aid='$arcID' ";
		$dsql->ExecuteNoneQuery($upquery);
	}
}

如下图所示位置

5、打开 /dede/album_edit.php 搜索

//生成HTML

在它上面添加下面代码

//新增图集字段 huxing
$huxing = "";
if(is_array($_POST['huxing']['url']))
{
	foreach($_POST['huxing']['url'] as $key => $val)
	{
		$huxing .= "{dede:img ddimg='$val' text='{$_POST['huxing']['alt'][$key]}' width='' height='' uaid='{$_POST['huxing']['uaid'][$key]}'}$val{/dede:img}\r\n";
	}
}
$huxing = addslashes($huxing);
$upquery = "UPDATE `$addtable` SET `huxing`='$huxing' WHERE aid='$id' ";
$dsql->ExecuteNoneQuery($upquery);

如下图所示位置

内容页调用标签参考上面的写法。

使用layui第一张图作为缩略图

打开 /dede/album_add.php 搜索

生成文档ID

在它上面添加下面代码

//使用layui第一张图作为缩略图
if($ddisfirst==1 && $litpic=='')
{
	if(isset($_POST['imgurls']['url'][0]))
	{
		$litpic = $_POST['imgurls']['url'][0];
	}
}

如下图所示位置

end

]]>
白石头博客 https://www.jxjmedu.org/4372.html Fri, 29 Jan 2021 08:38:03 +0000 https://www.jxjmedu.org/?p=4372 今天在DOS下,访问文件夹时出错。如下图。

其他文件夹都访问正常,mysql server 5.6这个文件夹访问出错。原来里面是有空格,才会造成这种情况。解决方法:

把这个文件名加上引号即可。

如下图

成功进入这个名称中带有空格的文件夹。

]]>
白石头博客 https://www.jxjmedu.org/4369.html Fri, 29 Jan 2021 07:09:17 +0000 https://www.jxjmedu.org/?p=4369 继续阅读 ]]> 平时我们在宝塔面板安全里面查看网站日志时,发现有很多IP在扫描网站,想要阻止它访问网址,直接在防火墙里面屏蔽该IP就可以了,宝塔面板后台还支持屏蔽IP段,比如我们想屏蔽192.168.0.1-192.168.0.254这个IP段就可以这样写:192.168.0.0/24,官方的说明默认的就有。如下图。

但我们想屏蔽192.168.X.X段的应该怎么写呢?

192.168.0.0/16

那么意思就是屏蔽192.168开头的所有IP

屏蔽所有以192开头的IP就是192.0.0.0/8

 

]]>
白石头博客 https://www.jxjmedu.org/4360.html Fri, 22 Jan 2021 09:36:34 +0000 https://www.jxjmedu.org/?p=4360 继续阅读 ]]> 今天在给新安装的系统安装网络打印机时发现访问共享打印机出现下面提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证来宾访问

 

以前新系统都是直接访问的,还没有遇到过这种情况,我估计是新安装的系统是windows 企业版 LTSC原因造成的。

解决方法:

打开运行,快捷键:win+R

输入gpedit.msc

然后确定

在计算机配置-管理模板-网络-lanman工作站

启用不安全的来宾登录,在上面单击右键同,然后点编辑,把已启用勾选,然后确定。

再访问,搞定。

]]>
白石头博客 https://www.jxjmedu.org/4347.html Tue, 19 Jan 2021 03:41:56 +0000 https://www.jxjmedu.org/?p=4347 继续阅读 ]]> 什么是LTSC版:
LTSC = Long-Term Servicing Channel该版本是微软公司面向企业级用户提供的版本,中文名称叫做长期支持版。原来的名字叫做LTSB版Long-Term Servicing Branch。


什么是长期支持:所谓长期支持即微软对于该版本提供高达10年的支持,10 年里微软始终会发布安全更新。
为什么需要LTSC版:正常的 Windows 10 每隔半年就会更新,对于企业来说这种更新频率实在太高不适合。

由于win10系统经常需要更新,一部分用户对此非常抵触,所以就有了win10企业版LTSC,LTSC版本面向企业级用户,不会有过多的系统功能,不会强制更新,受到一部分用户青睐。白石头为小伙伴们整理分享windows10 LTSC 2019原版iso镜像下载地址,包括32位和64位系统。

下载说明:

下载链接是ed2k,一般使用迅雷下载,复制ed2k链接,打开迅雷自动识别。

一、win10企业长期支持版LTSC简体中文版

1、64位版本:

Windows 10 Enterprise LTSC 2019 (x64) – DVD (Chinese-Simplified)企业长期支持版LTSC

文件名:cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso

SHA1:24b59706d5eded392423936c82ba5a83596b50cc

文件大小:4.17 GB

发布时间:2019-03-15

下载链接:

2、32位版本:

Windows 10 Enterprise LTSC 2019 (x86) – DVD (Chinese-Simplified)企业长期支持版LTSC

文件名:cn_windows_10_enterprise_ltsc_2019_x86_dvd_1814dbab.iso

SHA1:ba2169edd94f123211cd4aaca68352f1ab6195d9

文件大小:2.98 GB

发布时间:2019-03-15

下载链接:

二、win10企业长期支持版LTSC英文版

1、64位版本:

Windows 10 Enterprise LTSC 2019 (x64) – DVD (English)企业长期支持版LTSC

文件名:en_windows_10_enterprise_ltsc_2019_x64_dvd_5795bb03.iso

SHA1:615a77ecd40e82d5d69dc9da5c6a6e1265f88e28

文件大小:4.03 GB

发布时间:2019-03-15

下载链接:

2、32位版本:

Windows 10 Enterprise LTSC 2019 (x86) – DVD (English)企业长期支持版LTSC

文件名:en_windows_10_enterprise_ltsc_2019_x86_dvd_892869c9.iso

SHA1:88af607f1e752761577d21f2b7aa98692809bf66

文件大小:2.82 GB

发布时间:2019-03-15

下载链接:

 

如果需要制作U盘启动盘,可查看下面万博体育官网,万博体育平台官网,万博体育官方网站首页:

用UltraISO制作U盘系统安装盘万博体育官网,万博体育平台官网,万博体育官方网站首页(windows10)

]]>
白石头博客 https://www.jxjmedu.org/4333.html Mon, 18 Jan 2021 22:14:08 +0000 https://www.jxjmedu.org/?p=4333 继续阅读 ]]> 最近在发布文章时,经常会出现无法发布的问题。就是保存草稿,预览,发布这几个按钮都是灰色不可用。如下图

只能把文本框里的编辑好的正文复制一下,然后刷新页面,再发布。在后台发布页面,按F12检查错误时发现,浏览器出现下面错误:Uncaught TypeError: Cannot read property ‘WordCounter’ of undefined

经查,导致这些bug的原因在于更新了系统却没有更新语言包。

解决方法:将wp-content目录下的languages文件夹删除,

然后刷新后面页面,刷新后后台会变成英文界面

然后升级语言包就可以了。

]]>
白石头博客 https://www.jxjmedu.org/4339.html Mon, 18 Jan 2021 07:10:49 +0000 https://www.jxjmedu.org/?p=4339 继续阅读 ]]> 今天查询发现上午发布的一篇文章被收录了,但收录的地址却是动态的。

可以我的网站是伪静态的,所以就不想让它收录动态页面。robots里面加入了禁止抓取这些动态地址和某些路径,但是蜘蛛依然每天抓取,而且还收录了!所以只能强制禁止它访问。

把下列代码加入到服务器配置文件ROOT后面即可

#### 禁止搜索引擎访问指定文件夹或者路径 【开始】####
    #初始化变量为空
    set $deny_spider "";
    #如果请求地址中含有需要禁止抓取关键词时,将变量设置为y:
    if ($request_uri  ~* "\?replytocom=(\d+)|\?p=(\d+)|/feed|/date|/wp-admin|comment-page-(\d+)|/go") {
         set $deny_spider 'y';
    }
    #如果抓取的UA中含有spider或bot时,继续为变量赋值(通过累加赋值间接实现nginx的多重条件判断)
    if ($http_user_agent ~* "spider|bot") {
     set $deny_spider "${deny_spider}es";
    }
    #当满足以上2个条件时,则返回404,符合搜索引擎死链标准
     if ($deny_spider = 'yes') {
         return 403; #如果是删除已收录的,则可以返回404
         break;
     }
     #### 禁止搜索引擎访问指定文件夹或者路径【结束】 ####

然后测试一下,动态地址抓取失败,静态地址成功。

还有一种方法就是把代码直接写进当前主题页的functions.php里面即可。

PHP代码如下

/*禁止蜘蛛抓取指定路径代码*/
ob_start("Deny_Spider_Advanced");
function Deny_Spider_Advanced() {
    $UA = $_SERVER['HTTP_USER_AGENT'];
    $Request_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    $Spider_UA  = '/(spider|bot|)/i'; //定义需要禁止的蜘蛛UA,一般是spider和bot
    //禁止蜘蛛抓取的路径,可以参考自己的robots内容,每个关键词用分隔符隔开,需注意特殊字符的转义
    $Deny_path  = '/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)/i';
    //如果检测到UA为空,可能是采集行为
    if(!$UA) {
        header("Content-type: text/html; charset=utf-8");
        wp_die('请勿采集本站,因为采集的站长木有小JJ!');
    } else {
        //如果发现是蜘蛛,并且抓取路径匹配到了禁止抓取关键词则返回404或者403
        if(preg_match_all($Spider_UA,$UA) && preg_match_all($Deny_path,$Request_uri)) {
             //header('HTTP/1.1 404 Not Found');  
             //header("status: 404 Not Found");       
             header('HTTP/1.1 403 Forbidden'); 
             header("status: 403 Forbidden");             
        }
    }
}

写在最后,我在发布这个篇文章时,发现发布按钮是灰色不可用的。用控制台检查发现有错误:Failed to load resource: the server responded with a status of 403 ()

原来是上面规则中访问后台目录会出现403错误。把后台目录从上面规则里删除即可。

 

]]>
白石头博客 https://www.jxjmedu.org/4324.html Mon, 18 Jan 2021 03:39:46 +0000 https://www.jxjmedu.org/?p=4324 继续阅读 ]]> 最近检查TAG标签时发现,有的TAG标签打开后,列表里面没有数据,但下面分页代码却还在,原来TAG标签关联过很多已经删除的文档,在TAG标签列表页就会出现有页码分页没有数据的情况,这是因为的TAG标签列表核心文件不严谨引起的,我们可以让关联的TAG标签所属的已经删除的文档在TAG表中删除掉就能解决空数据列表问题。

解决方法:

打开 /include/arc.taglist.class.php 搜索

 //更新Tag信息

大概在 137行左右,把它上面的这3行代码

$cquery = "SELECT COUNT(*) AS dd FROM `#@__taglist` WHERE tid = '{$this->TagInfos['id']}' AND arcrank >-1 ";
$row = $this->dsql->GetOne($cquery);
$this->TotalResult = $row['dd'];

修改为:

$this->dsql->SetQuery("SELECT aid FROM `#@__taglist` WHERE tid = '{$this->TagInfos['id']}' AND arcrank>-1 ");
$this->dsql->Execute();
while($row=$this->dsql->GetArray())
{
	$atrow = $this->dsql->GetOne("SELECT id FROM `#@__arctiny` WHERE id='{$row['aid']}' AND arcrank>-1");
	if(!is_array($atrow))
	{
		$this->dsql->ExecuteNoneQuery("DELETE FROM `#@__taglist` WHERE aid='{$row['aid']}' ");
		continue;
	}
	$idlists .= ($idlists=='' ? $row['aid'] : ','.$row['aid']);
}
if($idlists!=='') $this->TotalResult = $row['dd'] = count(explode(',',$idlists));

解决。

 

]]>
白石头博客 https://www.jxjmedu.org/3370.html Mon, 18 Jan 2021 03:12:08 +0000 https://www.jxjmedu.org/?p=3370 继续阅读 ]]> DNS已经是互联网通信的一项基础服务,如果你正在使用国内无良服务商的 DNS 服务,打开网站偶尔会发现有莫名其妙的广告弹出来,但这些广告并非所访问的网站本身提供。于是,你后来明白是被DNS劫持了,怎么办?其实,你可以更换自己家的DNS服务器地址。如果你是被宽带运营商DNS劫持了,那么是无解的,你只能去投诉当地的宽带网络运营商了。

2018年4月1日,Cloudflare发布1.1.1.1公共DNS服务,这家全球最大的网络安全服务提供商向运营商、ISP供应商,乃至Google发起了挑战,并声称Cloudflare更注重隐私,且速度很快。1.1.1.1 只是提供了快速且安全的DNS查找,而不具备内容过滤或者阻止功能。为此在2020年的愚人节“No Joke”公告中,Cloudflare不仅扩大了公共DNS的服务范围,而且还为家庭用户提供了阻止恶意软件和成人内容的新公共DNS服务器地址:1.1.1.2(阻止恶意程序)和1.1.1.3(阻止恶意程序和成人内容)。

Cloudflare DNS(无阻止功能):1.1.1.1,1.0.0.1
Cloudflare DNS(阻止恶意软件):1.1.1.2,1.0.0.2
Cloudflare DNS(阻止恶意软件和成人内容):1.1.1.3,1.0.0.3

1.1.1.1 是 Cloudflare 与 APNIC 合作的非盈利项目,主打隐私保护和高速解析,这个非常牛的 IP 地址己经展示了项目实力。从技术角度来看,1.1.1.1 DNS 通过HTTPS(DoH)或TLS(DoT)加密,以确保Internet流量的私密性。1.1.1.1 还提供了一些无法从许多其他公共 DNS 服务获得的安全功能,例如查询名称最小化。1.1.1.1 通过仅将最少的查询名称发送到权威性 DNS 服务器,查询名称最小化可减少隐私泄漏。

 

主流的国内 DNS 服务器地址列表

1、百度公共DNS服务IP:180.76.76.76

2、阿里云DNS,223.6.6.6 还有一个223.5.5.5这一个PING值50多

3、腾讯DNS:119.29.29.29

4、360DNS 电信:首选:101.226.4.6 联通:首选:123.125.81.6 移动:首选:101.226.4.6 铁通:首选:101.226.4.6

5、114 DNS 114.114.114.114

纯净 无劫持 无需再忍受被强扭去看广告或粗俗网站之痛苦
服务ip为:114.114.114.114 和 114.114.115.115

拦截 钓鱼病毒木马网站 增强网银、证券、购物、游戏、隐私信息安全
服务ip为:114.114.114.119 和 114.114.115.119

学校或家长可选拦截 色情网站 保护少年儿童免受网络色情内容的毒害
服务ip为:114.114.114.110 和 114.114.115.110

以上测速网络环境为移动宽带。你可根据自己的宽带选择最适合的。

主流的国外 DNS 服务器地址列表

Google:8.8.8.8,8.8.4.4
Cloudflare:1.1.1.1,1.0.0.1
OpenDNS:208.67.222.222,208.67.220.220
oneDNS:112.124.47.27,112.124.47.27
Freenom World:80.80.80.80,80.80.81.81

Freenom是一家国外免费域名注册商,Freenom World 是 Freenom 提供的免费DNS服务,提供快速且保护隐私的DNS服务器。

全国各地电信 DNS 服务器 IP 地址

名称 DNS 服务器 IP 地址
安徽电信 DNS 61.132.163.68 202.102.213.68
北京电信 DNS 219.141.136.10 219.141.140.10
重庆电信 DNS 61.128.192.68 61.128.128.68
福建电信 DNS 218.85.152.99 218.85.157.99
甘肃电信 DNS 202.100.64.68 61.178.0.93
广东电信 DNS 202.96.128.86 202.96.128.166
202.96.134.33 202.96.128.68
广西电信 DNS 202.103.225.68 202.103.224.68
贵州电信 DNS 202.98.192.67 202.98.198.167
河南电信 DNS 222.88.88.88 222.85.85.85
黑龙江电信 219.147.198.230 219.147.198.242
湖北电信 DNS 202.103.24.68 202.103.0.68
湖南电信 DNS 222.246.129.80 59.51.78.211
江苏电信 DNS 218.2.2.2 218.4.4.4
61.147.37.1 218.2.135.1
江西电信 DNS 202.101.224.69 202.101.226.68
内蒙古电信 219.148.162.31 222.74.39.50
山东电信 DNS 219.146.1.66 219.147.1.66
陕西电信 DNS 218.30.19.40 61.134.1.4
上海电信 DNS 202.96.209.133 116.228.111.118
202.96.209.5 108.168.255.118
四川电信 DNS 61.139.2.69 218.6.200.139
天津电信 DNS 219.150.32.132 219.146.0.132
云南电信 DNS 222.172.200.68 61.166.150.123
浙江电信 DNS 202.101.172.35 61.153.177.196
61.153.81.75 60.191.244.5

全国各地联通 DNS 服务器 IP 地址

名称 DNS 服务器 IP 地址
北京联通 DNS 202.106.196.115 202.106.46.151
202.106.0.20 202.106.195.68
重庆联通 DNS 221.5.203.98 221.7.92.98
广东联通 DNS 210.21.196.6 221.5.88.88
河北联通 DNS 202.99.160.68 202.99.166.4
河南联通 DNS 202.102.224.68 202.102.227.68
黑龙江联通 202.97.224.69 202.97.224.68
吉林联通 DNS 202.98.0.68 202.98.5.68
江苏联通 DNS 221.6.4.66 221.6.4.67
内蒙古联通 202.99.224.68 202.99.224.8
山东联通 DNS 202.102.128.68 202.102.152.3
202.102.134.68 202.102.154.3
山西联通 DNS 202.99.192.66 202.99.192.68
陕西联通 DNS 221.11.1.67 221.11.1.68
上海联通 DNS 210.22.70.3 210.22.84.3
四川联通 DNS 119.6.6.6 124.161.87.155
天津联通 DNS 202.99.104.68 202.99.96.68
浙江联通 DNS 221.12.1.227 221.12.33.227

全国各地移动 DNS 服务器 IP 地址

名称 DNS服务器 IP 地址
江苏移动 DNS 221.131.143.69 112.4.0.55
安徽移动 DNS 211.138.180.2 211.138.180.3
山东移动 DNS 218.201.96.130 211.137.191.26

公共DNS地址哪个好?我推荐您使用阿里云、腾讯云或百度云的公共DNS服务器地址,如果您经常科学上网查资料学习或从事科研外贸工作等,我推荐您使用 Google、Cloudflare 或 V2EX DNS。有人说,在国内使用国外 DNS 服务器地址会让网络变得缓慢,我的实践是确实影响解析速度,也就是反应速度稍慢,但是对解析后网络速度的影响并不明显,只是有时候会不太稳定,总体来说还是很稳定的。

]]>
白石头博客 https://www.jxjmedu.org/4303.html Mon, 18 Jan 2021 02:24:51 +0000 https://www.jxjmedu.org/?p=4303 继续阅读 ]]> 最近,白石头博客被刷了一些乱七八糟的词,并且被百度收录了,如下图,以前收录几千个页面,被刷后,现在收录9万多个页面,严重影响了本站的用户体验。

 

这样虽然我的网站没有这个内容,但访问过来都会有下面显示:

最开始我想通过301重定向所有访问地址里面有/?=的来源搜索自动转向网站首页,这样就不会看到这种情况,在宝塔面板试了好久,没有成功。只能通过修改文件实现了这个方法,在当前主题文件夹里面的functions.php加入下面代码,然后保存。

/* 搜索结果中无内容时自动跳转到网站首页 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
            wp_redirect( home_url() );
            exit;
        }
    }
}

这样,别人点击这样的垃圾链接的话,就直接跳转到本站首页了,如果是搜索正常关键字,则显示正常搜索页。

还有这下面这种方法,无论有没有搜索结果都自动跳转到首页(此方法没测试过)

//禁用前台搜索功能
function disable_search( $query, $error = true ) {
	if (is_search() && !is_admin()) {
		$query->is_search = false;
		$query->query_vars['s'] = false;
		$query->query['s'] = false;
		if ( $error == true )
		// 执行搜索后显示的错误页面
		   $query->is_home = true; //跳转到首页
		// $query->is_404 = true;//跳转到404页
	}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

 

第三种方法就是把站内搜索直接替换成百度搜索

代码:

//站内搜索替换为百度搜索
function wp_use_baidu_search( $wp_query ) {
  $s = '';  
  if (isset($wp_query->query_vars['s'])) {
    $s = trim($wp_query->query_vars['s']);
  }
  if (!$s) {  // 空搜索 不进行跳转
    return;
  }
  // 获取当前网站域名
  $host = strtolower($_SERVER['HTTP_HOST']);  
  // 使用 baidu 
  $search_engine = 'https://www.baidu.com/s?ie=UTF-8&wd=';
  $query = urlencode($s . ' site:' . $host);
  // 进行跳 转
  wp_redirect($search_engine . $query);  
  // 不再继续
  exit;
} 
// 加入 替换处理
add_action('parse_query', 'wp_use_baidu_search');

效果如下:

别人点击收录的垃圾链接就是这样的。

最开始测试时,搜索英文或者数字的话,搜索结果是正常的,但搜索中文的话,在百度搜索的中文转义了,也就是显示乱码。如下图

 

找到好久,才找到解决的方法,找到search的相关代码(一般在header.php),把里面的

<?php echo home_url('/search/'); ?>

修改为:

<?php echo home_url('/?s='); ?>

如果搜索结果前面多个/的话,直接把上面的/去掉就行了。

 

参考文章:

搜索结果中只有一篇文章时自动打开该文章

站内搜索更改为百度搜索

]]>