鲍成龙
把字刻在石头上。
鲍成龙

站点运行时间

也是闲的,就给自己网站加了一个运行时间

代码如下(需要手动修改时间:月/日/年)

本站已安全运行<a><strong><script language = "JavaScript"type = "text/javascript" >var urodz = new Date("06/19/2012");var now = new Date();var ile = now.getTime() - urodz.getTime();var dni = Math.floor(ile / (1000 * 60 * 60 * 24));document.write( + dni)</script></strong></a>天

 

如果需要显示运行时间:XX年XX天XX时XX秒,秒数还是动态的,请选用下面的代码

    <script>
    function secondToDate(second) {
        if (!second) {
            return 0;
        }
        var time = new Array(0, 0, 0, 0, 0);
        if (second >= 365 * 24 * 3600) {
            time[0] = parseInt(second / (365 * 24 * 3600));
            second %= 365 * 24 * 3600;
        }
        if (second >= 24 * 3600) {
            time[1] = parseInt(second / (24 * 3600));
            second %= 24 * 3600;
        }
        if (second >= 3600) {
            time[2] = parseInt(second / 3600);
            second %= 3600;
        }
        if (second >= 60) {
            time[3] = parseInt(second / 60);
            second %= 60;
        }
        if (second > 0) {
            time[4] = second;
        }
        return time;
    }
    </script>
    <script type="text/javascript" language="javascript">
    function setTime() {
        var create_time = Math.round(new Date(Date.UTC(2012, 06, 19, 13, 57, 50)).getTime() / 1000);
        var timestamp = Math.round((new Date().getTime() + 8 * 60 * 60 * 1000) / 1000);
        currentTime = secondToDate((timestamp - create_time));
        currentTimeHtml = '本站已安全运行:' + currentTime[0] + '年' + currentTime[1] + '天'
                + currentTime[2] + '时' + currentTime[3] + '分' + currentTime[4]
                + '秒';
        document.getElementById("htmer_time").innerHTML = currentTimeHtml;
    }    setInterval(setTime, 1000);
    </script>

上面代码中“2012,06,19,13,57,50”是指的我的建站时间,分别对应年、月、日、时、分、秒,根据自己实际修改即可。

把上面代码复制到网页文件中,然后在你想显示的地方添加如下代码即可(请注意修改颜色配置):

   <span id="htmer_time" style="color: #f00;"></span>

 

显示当前时间的代码如下

    <script type="text/javascript">
    var timer = null,
    divText = document.getElementById("clock");
    showTime();
    timer = setInterval(showTime,1000);function showTime(){
     var today = new Date(); 
      var date = today.getDate();
      var day = today.getDay();
      var month = today.getMonth()+1;
      var year = today.getFullYear();
      var hour= addZero(today.getHours());
      var min = addZero(today.getMinutes());
      var sec = addZero(today.getSeconds());
      var week="";    
      if (true) {};                           
      if (day==0) week='星期日';
      if (day==1) week='星期一';
      if (day==2) week='星期二';
      if (day==3) week='星期三';
      if (day==4) week='星期四';
      if (day==5) week='星期五';
      if (day==6) week='星期六';
      divText.innerHTML = "当前时间:"+year+"年"+month+"月"+date+"日 "+ week +" "+"("+hour + ":"+ min + ":"+sec +")";}function addZero(num){
    if (num <= 9) {
        return "0"+num;
    }else {
        return num;
    }}
    </script>

把上面代码复制到网页文件中,然后在你想显示的地方添加如下代码即可

    <span id="clock" style="color: #f00;"></span>

 

鲍成龙

win10快捷小箭头去除软件存档

win10快捷小箭头去除软件存档

[button url="https://baochenglong.cn/wp-content/uploads/2019/10/win10.zip" types="down"]win10快捷小箭头去除[/button]

鲍成龙

linux 封禁ip

可以直接服务配置nginx.conf

添加 deny+IP 例如:

封禁单个IP

deny 106.5.76.83;

#封整个段即从123.0.0.1到123.255.255.254的命令
deny 123.0.0.0/8
#封IP段即从123.45.0.1到123.45.255.254的命令
deny 124.45.0.0/16
#封IP段即从123.45.6.1到123.45.6.254的命令是
deny 123.45.6.0/24

重启nginx 服务  ./nginx -s reload

也可以 在tcpd服务器配置中封禁

/etc/hosts.deny

封禁单个IP

ALL: 106.5.76.83;

#封整个段即从123.0.0.1到123.255.255.254的命令

ALL: 123.0.0.0/8

#封IP段即从123.45.0.1到123.45.255.254的命令

ALL: 124.45.0.0/16

#封IP段即从123.45.6.1到123.45.6.254的命令是

ALL: 123.45.6.0/24

 重启服务 service xinetd restart

在防火墙禁止ip访问也是可行的:

封禁IP:

#iptables -I INPUT -s ***.***.***.*** -j DROP

解封IP:

#iptables -D INPUT -s ***.***.***.*** -j DROP

封禁IP段:

#iptables -I INPUT -s ***.***.***.0/24 -j DROP

添加完规则记得保存规则

#/etc/rc.d/init.d/iptables save

查看规则

#iptables -L

重启iptables

#service iptables restart

即可生效

 

鲍成龙

首先找到路劲中文件 /www/server/panel/vhost/nginx/你的域名.conf (以宝塔面板实例,可根据你的实际找到XX.conf文件)

或者找不到路劲可以直接在BT面板的配置文件中修改

nginx系统图片等防盗链设置

如果在宝塔中开启了防盗链 那么默认的应该是这样(以我的网站实例)

    location ~ .*\.(jpg|jpeg|gif|png|js|css)$
    {
        expires      30d;
        access_log /dev/null;
        valid_referers none blocked www.5cwx.com 5cwx.com;
        if ($invalid_referer){
           return 404;
        }
    }

把这一段删掉,修改成:

    location ~ .*\.(jpg|jpeg|gif|png|bmp|swf|mp4|js|css)$ {
expires     30d;
access_log /dev/null;
valid_referers *.5cwx.com www.5cwx.com;
if ($invalid_referer) {
rewrite ^/ http://www.baochenglong.cn/zb_users/upload/2019/09/20190928130722156964724244914.jpg;
#return 404;
}
}

 

第一行:     location ~ .*\.(jpg|jpeg|gif|png|bmp|swf|mp4|js|css)$

其中“jpg|jpeg|gif|png|bmp|swf|mp4|js|css”设置防盗链文件类型,自行修改,每个后缀用“|”符号分开!

第三行:valid_referers none blocked www.5cwx.com 5cwx.com;

就是白名单,允许文件链出的域名白名单,自行修改成您的域名!*.5cwx.com这个指的是子域名,域名与域名之间使用空格隔开!

第五行:rewrite ^/ http://www.baochenglong.cn/zb_users/upload/2019/09/20190928130722156964724244914.jpg;

这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号。

这样设置差不多就可以起到防盗链作用了,上面说了,这样并不是彻底地实现真正意义上的防盗链!

我们来看第三行:valid_referers none blocked www.5cwx.com 5cwx.com;

valid_referers 里多了“none blocked”

我们把“none blocked”删掉,改成

valid_referers  *.5cwx.com 5cwx.com;

nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:

   location ~ .*\.(jpg|jpeg|gif|png|bmp|swf|mp4|js|css)$ {
expires     30d;
access_log /dev/null;
valid_referers *.5cwx.com www.5cwx.com *.so.com *.baidu.com *.google.com *.sougou.com *.sm.cn *.bing.com *.soso.com *.chinaso.com;
if ($invalid_referer) {
rewrite ^/ https://baochenglong.cn/wp-content/uploads/2019/09/20190928130722156964724244914.jpg;
#return 404;
}
}

这样您在浏览器直接输入图片地址就不会再显示图片出来了,也不可能会再右键另存什么的。

第五行:rewrite ^/ https://baochenglong.cn/wp-content/uploads/2019/09/20190928130722156964724244914.jpg;

这个是给图片防盗链设置的防盗链返回图片,如果我们是文件需要防盗链下载,把第五行:

rewrite ^/ https://baochenglong.cn/wp-content/uploads/2019/09/20190928130722156964724244914.jpg;

改成一个链接,可以是您主站的链接,比如把第五行改成:

rewrite ^/ http://www.5cwx.com;

这样,当别人输入文件下载地址,由于防盗链下载的作用就会跳转到您设置的这个链接!

最后,配置文件设置完成别忘记重启nginx生效!

nginx系统图片等防盗链设置

鲍成龙

使用WordPress建站首次建立的管理员账户用户名现在是不可修改的,但是总有些强迫症看着不爽

以下为修改系统用户名教程

使用现有用户名登陆后台,WordPress后台-外观-主题编辑器

选择右侧【主题文件】模板函数=functions.php文件

//修改用户名
global $wpdb;
$wpdb->query( "
UPDATE wp_users
SET user_login = '新用户名'
WHERE user_login = '现在用户名';
" );

将上面的代码添加到您的主题 functions.php文件

更新之后,需要重新登陆【需要用修改之后的用户名登陆

修改成功之后可以删除上面这段代码~

防止意外,请务必要备份好网站数据,数据无价

 

ps:优化修改ID为1的系统用户名

//修改用户名
global $wpdb;
$wpdb->query( "
UPDATE wp_users
SET user_login = '新用户名'
WHERE ID = 1;
" );

这样似乎更加方便一点,但是功能一样

 

鲍成龙

演示地址:吾创网

话不多说,直接上图

1、动态加载前

2、动态加载中

LightSNS动态加载效果 LightSNS动态加载效果

/*加载ing效果-吾创网 www.5cwx.com */
.jinsom-more-posts {height: 35px;line-height: 35px;text-align: center;cursor: pointer;padding:0;border-radius: 0;background-color: #f9f9f9;color: #333;width: auto;margin: 0px 0px 50px 0px;box-sizing: inherit;clear: none;}
.jinsom-more-posts:hover  {background-color: #0096e6;color: #fff;}
.jinsom-load {padding:20px 0;background:#fff;border-radius:2px;box-shadow:0 1px 0 0 #e3e4e8,0 0 0 1px #f1f1f1;margin-bottom:30px;overflow:hidden}
.jinsom-loading {margin:auto;background-image:radial-gradient(circle 30px at 60px 30px,#ebeced 99%,transparent 0),linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.5) 50%,rgba(255,255,255,0) 80%),linear-gradient(lightgray 15px,transparent 0),linear-gradient(#f1f1f1 10px,transparent 0),linear-gradient(#f1f1f1 10px,transparent 0),linear-gradient(#f1f1f1 10px,transparent 0);background-repeat:repeat-y;background-size:100px 200px,50px 200px,150px 200px,350px 200px,300px 200px,250px 200px;background-position:0 0,0 0,120px 0,120px 40px,120px 60px,120px 80px}
.jinsom-loading {height:100px;-webkit-animation:shine 1.5s infinite;animation:shine 1.5s infinite}
.jinsom-loading {position: relative;width:auto;margin: 0;}
.jinsom-loading i{display:none;}

由于是替换自带css ,所以有些属性是none;有些属性是0;

直接复制到后台自定义css代码粘贴,或者另建css文件引入

 

鲍成龙

问题描述:1年没有重启服务器,今天重启了一下,发现磁盘挂载错误,导致网站404

检查:发现挂载文件夹变成了以前挂载的一个文件夹A(现在已经删除不用),切网站所有的数据文件都被搬迁到了这个文件夹A

主机重启之后BT面板显示挂载磁盘不对检查及描述

立刻抓紧修复

df -h

查看你的磁盘名,我的是/dev/xvda1 

mkdir /www

创建www目录

umount /home

卸载掉/home磁盘

mount /dev/xvda1 /www

将磁盘挂载到www目录下

vi /etc/fstab

接着,开始编辑fstab文件,设置每次开机自动挂载

(发现了问题所在,原来之前挂载的磁盘设置了开机自动挂载,后来挂了磁盘忘记设置了)

主机重启之后BT面板显示挂载磁盘不对检查及描述

/dev/xvda1    /www    ext4    defaults    0 0

将磁盘xva1挂载到www目录下

重启

df

查看是不是变成了/www

 

到此一切ok

linux命令小技巧:

怎么修改编辑fdtab文件呢?进入到文件内,点击i 光标就会变成可编辑样式的,然后就把代码粘贴到合适的位置吧。

修改后怎么保存? 按esc,光标会恢复浏览样子,然后输入:wq (冒号wq)进行保存,:qi 不保存并退出。


鲍成龙
ln -s /www/wwwroot/jieqi/storage/files /www/wwwroot/jieqi/public/www/xsfm

命令解释:在xsfm文件夹 创建 files文件夹快捷方式

备注:jieqi文件夹是我网站根目录;xsfm文件夹 是我在网站运行目录(public/www)下 新建的文件夹

 

后台绝对路径:/xsfm/files/article/image

 

 

鲍成龙

百度链接自动提交-js代码推送进化版

 

       自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,安装自动推送JS代码的网页,在页面被访问时,页面URL将立即被推送给百度。

              原始代码

<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>

 

这里我们可以发现两个问题:

  • 其一是这段脚本先后会调用两个百度资源,这造成了冗余,不利于页面加载速度。

  • 其二是该脚本会提交目前URL,但是许多URL会是动态URL,会带各种参数。虽然百度爬虫也有自己的判断方法,但无疑这增加了其负担。

改良版本的百度索引自动推送脚本

<script>
(function(){
var canonicalURL, curProtocol;
//Get the <link> tag
var x=document.getElementsByTagName("link");
//Find the last canonical URL
if(x.length > 0){
for (i=0;i<x.length;i++){
if(x[i].rel.toLowerCase() == 'canonical' && x[i].href){
canonicalURL=x[i].href;
}
}
}
//Get protocol
    if (!canonicalURL){
    	curProtocol = window.location.protocol.split(':')[0];
    }
    else{
    	curProtocol = canonicalURL.split(':')[0];
    }
    //Get current URL if the canonical URL does not exist
    if (!canonicalURL) canonicalURL = window.location.href;
    //Assign script content. Replace current URL with the canonical URL
    	!function(){var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi,r=canonicalURL,t=document.referrer;if(!e.test(r)){var n=(String(curProtocol).toLowerCase() === 'https')?"https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"//api.share.baidu.com/s.gif";t?(n+="?r="+encodeURIComponent(document.referrer),r&&(n+="&l="+r)):r&&(n+="?l="+r);var i=new Image;i.src=n}}(window);})();
</script>
  • 这个新脚本的作用是多了一步查看页面的canonical URL的步骤。我们知道canonical属性表示该页面纵有千种URL的花样,请搜索引擎只认准href中给出的URL值。这样一来就不会让搜索引擎为了同一个页面(或许已经索引了)多次检查你的推送页面具体内容。

  • 这个新脚本的另一个更改是直接将上述两个js的内容拿了出来。由于这两个js中的代码其实是静态的,每次都去调用并不必要。另一方面,我们需要对r的值进行更改,将它更改为canonical URL的值,因此这样解决了我们上面的第二个问题。

需要注意的是百度随时可能更新这两个js文件的内容,虽然该功能上线后一直没有更新不代表以后不会更新,因此需要手动及时更新代码。

 

鲍成龙

解决办法

这是由于在升级Wordpress时,Wordpress会在数据库wp_options表中增加core_updater.lock记录。如中途打断Wordpress升级,这个记录会留在数据库中。当下次升级时,Wordpress检测到此记录的存在就会返回”另一更新正在进行”。可通过以下方法解决:

方法一、通过MySQL数据库管理工具(比如 phpMyAdmin),在 wp_options表中找到 core_updater.lock记录并将这一列数据删除。

方法二、通过终端登录数据库,假设表前缀是wp_,数据库是wordpress,

mysql -u root -p
use wordpress; select * from wp_options where option_name='core_updater.lock';

解决升级 WordPress 时提示”另一更新正在进行”

delete from wp_options where option_name='core_updater.lock';

 

鲍成龙

wordpress插件怎么汉化

需要调用的到工具:

1.POEDIT

2.UltraEdit

这里以configure-smtp插件为例来做演示

一、普通汉化

首先将configure-smtp安装后进入插件设置界面可以看到全是英文,打开wp-content\plugins\configure-smtp目录

可以看到目录下有configure-smtp.pot文件,这个就是语言包的英文模板(可移植对象文件)了

1.将其复制一份到lang目录下并重命名为configure-smtp-zh_CN.po

2.使用POEDIT软件打开(POEDIT的设置就不做讲解了,百度一下你就知道)

打开后即可对原文本对照进行逐个翻译了。翻译完成后保存,这是会自动根据po文件生成同名的mo文件。mo文件就是WP调用的语言包。

3.翻译完成后需要设置加载,打开configure-smtp.php主文件,在其中加入如下代码

load_plugin_textdomain('configure-smtp','wp-content/plugins/configure-smtp/lang');
/*
*说明:load_plugin_textdomain('插件名称','wp-content/plugins/configure-smtp/lang 插件语言包所在目录');
*
*/

如果是其他的插件或者主题找到插件的主文件或者主题的function文件加入上面的代码。如果存在多个语言包会根据wp-config.php中设置的语言来加载。

4.这时候再打开后台就可以发现插件已经变成了中文。

二、添加条目

如果语言包中没有某些条目这时候可以手动添加例如插件更新升级添加了一些设置或者说明,没必要重新翻译语言包,只需要在现有的语言包中添加部分条目就可以了。

本人使用dreamweaver和记事本添加无效,只有使用UltraEdit。

1.使用UltraEdit打开.po文件手动添加条目

添加格式如下:

#: 条目所在文件:行数
msgid "条目内容"
msgstr "翻译"

说明:msgid必须和php文件中完全相同!

2.新添加了条目后再使用POEDIT打开,重新生成.mo文件。

这样所添加的内容就生效了,再打开后台就能看到已经汉化的内容。

3.如果后台有一些内容并没有使用关联,例如一些说明性的内容,也可以手动将其关联并使用上面的方法添加相应的条目来进行汉化。

例如:configure-smtp的configure-smtp.php中的一处

echo'<p><em>You must save any changes to the form above before attempting to send a test e-mail.</em></p>';
//将其修改为:
echo'<p><em>'.__('You must save any changes to the form above before attempting to send a test e-mail.', $this->textdomain ).'</em></p>';

po中添加条目为:

再重新生成mo这句话就被汉化了。