月度归档: 2020 年 4 月

  • PHPExcel导出导入”continue” targeting switch is equivalent to “break”.

    PHPExcel导出导入”continue” targeting switch is equivalent to “break”.

    问题描述

    continue” targeting switch is equivalent to “break”.Did you mean to use “continue 2”?

    解决办法

    在 php 7.3 的 switch 中使用 continue 会出现警告 1 2 3

    最好的方式是把 \PHPExcel\Shared\OLE.php 文件中的 continue; 改为 continue 2; break;

  • 解决WordPress网站被利用xmlrpc.php文件攻击问题

    解决WordPress网站被利用xmlrpc.php文件攻击问题

    问题描述

    这几天博客经常有出现监控报警VPS宕机的问题,开始我还认为是VPS不稳定造成的(目前用的VPS也有遇到不稳定问题),然后通过日志看到应该是由于有被攻击利用导致的WEB卡死导致的。原因在于使用的WORDPRESS程序默认xmlrpc.php开启,而被用来DDOS攻击导致占用资源过高。

    通过日志我们可以看到如下的内容:

    解决办法

    方法一:利用Nginx直接返回,在对应的主机配置文件中添加

    location ~* /xmlrpc.php {
        deny all;
    }

    方法二:屏蔽 XML-RPC (pingback) 的功能

    在主题对应的 functions.php 中添加如下代码:

    add_filter('xmlrpc_enabled', '__return_false');

    方法三:Apache通过.htaccess屏蔽xmlrpc.php文件的访问

    # protect xmlrpc
    <Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    </Files>

  • Javascript 计算两时间差换算天时分秒

    Javascript 计算两时间差换算天时分秒

    前面我们记录了 使用WdatePicker日期组件时,选择日期后,执行某个方法 。下面我们记录一下如何计算2个时间差,写成天小时分的格式

    function time_different( date1 , date2 ){
        var date3 = new Date(date2).getTime() - new Date(date1).getTime();   //时间差的毫秒数      
        //------------------------------
        //计算出相差天数
        var days=Math.floor(date3/(24*3600*1000))
        //计算出小时数
        var leave1=date3%(24*3600*1000)    //计算天数后剩余的毫秒数
        var hours=Math.floor(leave1/(3600*1000))
        //计算相差分钟数
        var leave2=leave1%(3600*1000)        //计算小时数后剩余的毫秒数
        var minutes=Math.floor(leave2/(60*1000))
        //计算相差秒数
        var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数
        var seconds=Math.round(leave3/1000)
        return days+" 天 "+hours+" 小时 "+minutes+" 分钟 "+seconds+" 秒";
    }

    调用方法:

        $("#begin_time").click(function(){
           WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd H:m'});
        });
        $("#end_time").click(function(){
            WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd H:m',onpicked:function(){
                var date2 = $('#end_time').val();
                var date1 = $('#begin_time').val();
                $('.duration').html( time_different(date1,date2) );
            }});
        });
  • 使用WdatePicker日期组件时,选择日期后,执行某个方法

    使用WdatePicker日期组件时,选择日期后,执行某个方法

        $("#end_time").click(function(){
            WdatePicker({readOnly:true,dateFmt:'yyyy-MM-dd H:m:s',onpicked:function(){
                    alert(123);
            }});
        });    

    1、onpicked:选择日期后执行的方法。

    2、dateFmt:显示日期的格式。

    3、maxDate:日期组件能选择和输入的最大日期,该格式默认为系统当前日期为最大日期。

    还有很多参数和样式,可以参照日期组件网站。

  • jquery 获取下拉列表select中选中值和选中项指定属性的解决办法

    jquery 获取下拉列表select中选中值和选中项指定属性的解决办法

    我们在javascript中,如果有监听change事件,无法直接获取到对应option的指定属性,我们需要使用如下写法才行:

    var strValue=$("#select_id").val(); //获取Select选择的Value
    var strText=$("#select_id").find("option:selected").text();   //获取Select选择的text
    var strText=$("#select_id").find("option:selected").attr('指定属性');   //获取Select选择的指定属性值
  • jquery中使用each()循环return fasle;无效的解决办法

    jquery中使用each()循环return fasle;无效的解决办法

    jquery中使用 .each() 循环return fasle;无效。这里记录一下如何解决。

        $('#addForm').submit(function(){
            flag = true;
            $('table.detail tr').each(function(){
                if( $(this).find('.property').val() == '' ){
                    alert('请填写性质');flag = false;return false;
                }
                if( $(this).find('.category').val() == '' ){
                    alert('请填写类别');flag = false;return false;
                }   
                if( $(this).find('.people').val() == '' && $(this).find('.property').val() != '消耗品' ){
                    alert('请填写使用人');flag = false;return false;
                }  
                if( $(this).find('.amount').val() == '' ){
                    alert('请填写数量');flag = false;return false;
                }                                   
            });
            if( ! flag ){
                return false;
            }
        });

    我们这里使用 flag 进行标记,如果有一个为false都无法进行提交。

  • 用jQuery remove()方法删除表格行(table tr)的写法

    用jQuery remove()方法删除表格行(table tr)的写法

    Query删除表行(table tr):本文介绍如何删除选定的表行(table tr)。如何用jQuery按钮单击事件,按id或class-name删除表行。 在按钮单击时,我们删除选定的行/ tr可能是其动态添加的表行或已在DOM上使用的。 使用jQuery .on()将能够通过指定其类名或Id来选择动态添加的元素,然后使用.remove()方法删除所选的表行。

    输出

    HTML:添加包含一些数据的HTML表(删除表格行)

    首先,我们在HTML页面中添加了一个表标记,其中包含一些“tr”表行和“td”表数据以及一个名为Delete的按钮。 这里删除按钮用于删除特定的表行。我们的HTML结构如下面的代码所示。

    <table id="tbUser">
      <tr>
        <th>Sr</th><th>Name</th><th>Location</th><th></th>
      </tr>
      <tr>
        <td>1</td><td>Amit</td><td>Ghatkopar</td>
        <td><button class="btnDelete">Delete</button></td>
      </tr>
      <tr>
        <td>2</td><td>Vicky</td><td>Powai</td>
        <td><button class="btnDelete">Delete</button></td>
      </tr>
      <tr>
        <td>3</td><td>Sunny</td><td>Powai</td>
        <td><button class="btnDelete">Delete</button></td>
      </tr>
      <tr>
        <td>4</td><td>John</td><td>NewYork</td>
        <td><button class="btnDelete">Delete</button></td>
      </tr>
    </table>

    在上表中,我们添加了一些数据,在每一行中,我们有一个公共类为“btnDelete”的按钮。 现在将在按钮单击时添加单击事件,单击它将从HTML表中删除该行tr。

    jQuery:在按钮单击时删除表行(tr)的代码

    在这里,首先我们在按钮标签上创建一个jQuery单击事件,然后使用nearest()方法选择tr,之后用remove()方法删除该tr,类似于使用.next()方法和.remove()删除下一个表行tr。 这是我们能够删除表格行的方式,我们的最终代码如下所示。

    $("#tbUser").on('click', '.btnDelete', function () {
      $(this).closest('tr').remove();
    });

  • Nginx反向代理Google实例

    Nginx反向代理Google实例

    没事研究一下nginx的反向代理,从网上扒了一段,添加 g.laoji.org.conf 配置文件如下:

    linux下nginx设置静态页面压缩缓存和过期时间教程

    server
    {
        listen          80;
        server_name     g.laoji.org;  #你的域名
        location / {
            proxy_pass          https://www.google.com/;  #需要反代的域名
            proxy_redirect      off;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        }
            #add_header X_Via $server_addr;  #添加响应头部信息,真实服务器
            #add_header X_cache_hit $upstream_cache_status;  #添加响应头部信息,是否命中缓存
            #sub_filter                 downloads.wordpress.org downloads.wp.laoji.org;    #替换字符串
            #sub_filter_last_modified   on;
            #sub_filter_once            off;
    }

  • windows下如何设置pip源为国内 图文教程

    windows下如何设置pip源为国内 图文教程

    在这里我使用清华源来做示范

    win+R 打开用户目录%HOMEPATH%,在此目录下创建 pip 文件夹,在 pip 目录下创建 pip.ini 文件, 内容如下,

    在pip文件夹里新建的pip.ini代码如下

    [global]
    timeout = 6000
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    trusted-host = pypi.tuna.tsinghua.edu.cn

    另外还有一些其他国镜像

    阿里云  http://mirrors.aliyun.com/pypi/simple/ 
    中国科技大学   https://pypi.mirrors.ustc.edu.cn/simple/ 
    豆瓣(douban)  http://pypi.douban.com/simple/ 
    清华大学  https://pypi.tuna.tsinghua.edu.cn/simple/ 
    中国科学技术大学  http://pypi.mirrors.ustc.edu.cn/simple/

  • php 多维数组挑取某个键名的值 转换成 值=>值 的新数组

    php 多维数组挑取某个键名的值 转换成 值=>值 的新数组

    我们在实际开发中,需要在多维数组中挑选一个键名将其转换成一位数组,可以使用 array_column 函数来做。但是有些时候我们需要将一位数组的值重新组成一个二维数组,并使其键名 key 与值 value相等。

    比如我们获取所有职员的姓名。get_table_option() 方法得出的经过如下:

    我们需要在这个多维数组中取其 name 字段,变成 name=>name的新数组。代码如下:

    function get_all_staff_names(){
            $staff = get_table_option("user" , "is_del=0");
            $tmp = array_column($staff,'name');
            return array_combine(array_keys(array_flip($tmp)),$tmp);
    }
WeChat