一切福田,不離方寸,從心而覓,感無不通。

Category Archives: PHP

wordpress Mail sitename字段处理不当导致多处远程代码执行漏洞修复方法

wordpress Mail sitename字段处理不当导致多处远程代码执行漏洞修复方法,废话不多说,直接上截图 文件路径:wp-includes/class-phpmailer.php ,修复方法如上截图蓝色选中部分,代码如下: if (is_null($patternselect)) { $patternselect = self::$validator; } if (is_callable($patternselect)) { return call_user_func($patternselect, $address); } 把以上代码复制粘贴到对应的位置就可以了,可能因版本不同,粘贴的行数也不同,但应该都可以找到这个位置。 希望每一个关注王通seo的人看到这个都能够把这些漏洞修复方法转载到自己的空间去,让更多的人轻松修复自己的网站程序漏洞。   from:http://www.seo.net.cn/faq/2552.html

龙生   15 Nov 2017
View Details

解决WordPress后台插件更新模块任意目录遍历导致DOS漏洞的修复方案

一直在使用阿里云云服务器,当然小七博客没有放在阿里云上面,邮箱以及后台总或者经常收到短信提示“WordPress后台插件更新模块任意目录遍历导致DOS的漏洞”,可惜阿里云没有给出解决方案,需要修改可以购买提供的安骑士专业版进行修复。如果你使用其他程序,一会会收到你正在使用程序的漏洞等等,这个亲自实验了一下。 目前wordpress最新的4.6.1系列已经修复了这个漏洞,所以解决方案直接升级到最新版本就行。可是有一些用户的主题在升级到最新版可能出现兼容性问题,所以暂时不会升级,而且后台升级也是非常慢的或者根本就无法升级,嘿嘿。下面说说4.5.4以及以下版本的修复方案,在进行更改代码的时候,建议备份一份,防止修改出错能够马上恢复,最好把整站数据打包备份吧。 WordPress 4.5.4版本 我们只需要将打开WordPress后台文件/wp-admin/includes/ajax-actions.php,搜索以下代码: $plugin = urldecode( $_POST[‘plugin’] ); 然后在这段代码后面添加以下代码即可: $plugin = plugin_basename( sanitize_text_field( wp_unslash( $_POST[‘plugin’] ) ) ); 至此,修改保存上传覆盖后即可成功修复WordPress 4.5.4版本的WordPress后台插件更新模块任意目录遍历导致DOS漏洞。 WordPress 4.5.4版本以下 如果您使用的4.5.4以下的版本,那么可能还需要修改以下两个地方:(PS:如果某版本的以下2点中的代码已经跟修复后一样的就不用修改了): 1、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代码: if ( $plugin_update_data === true ) {     wp_send_json_error( $status ); } 直接修改为: if ( $plugin_update_data === true ) { $status[‘error’] = __( ‘Plugin update failed.’ ); wp_send_json_error( $status ); } 2、在/wp-admin/includes/ajax-actions.php文件中搜索找以下代码: if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {   $status[‘error’] = $wp_filesystem->errors->get_error_message();     } wp_send_json_error( $status );  } } 直接修改为: if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {      $status[‘error’] = $wp_filesystem->errors->get_error_message();    } wp_send_json_error( $status ); } else { // An unhandled error occured $status[‘error’] = __( ‘Plugin update failed.’ ); wp_send_json_error( $status ); } } 修改保存上传覆盖后即可成功修复WordPress 4.5.4版本以下的WordPress后台插件更新模块任意目录遍历导致DOS漏洞。 当然你也可以忽略,不然阿里云会天天提醒您的,嘿嘿!简单的操作下来也就耽误几分钟的时间。在修复好之后,不要忘了去阿里云后台验证一下哦,不然提醒还在的哦! 其实从另一方面也说明了阿里云在于安全方面的提醒还是不错的,虽说是为了推广他家的安骑士专业版,但是也说明确实有问题呢,嘿嘿。   from:https://www.xqblog.com/7091.html

龙生   07 Nov 2017
View Details

php-fpm

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包[1]  ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。 相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。

龙生   01 Oct 2017
View Details

安装集成PHP开发环境出现“计算机中丢失 MSVCR110.dll”问题

今日在安装PHP环境时出现下列问题 于是乎去网站搜索并下载了MSVCR110.dll。解压后,将MSVCR110.dll放在了C:\\windows\SysWOW64(64位系统,32系统放在C:\WINdows\system32)下面,然后window+R(启动运行),输入cmd,在输入regsvr32 msvcr110.dll,以为问题得以解决,然而又出现下列问题 后又"咨询下了百度",问题才得以解决。解决步骤如下: 1.下载Visual C++ Redistrbutable for Visual Studio 2012 Update 4. 地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 ,进入该网页 2.选择语言:中文简体,然后点击下载 3.根据电脑系统(32位,64位)选择适合自己的版本。 4.点击Next,出现新建下载任务,点击下载就OK了。 5.下载完后,运行下载的exe文件。 6.在运行PHP环境就没问题了。   from:http://www.cnblogs.com/-scl/p/4198746.html

龙生   27 Sep 2017
View Details

PHP json_encode() 函数详解及中文乱码问题

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。 这个函数的功能是将数值转换成json数据存储格式。 1 2 3 4 5 6 7 8 9 <?php $arr = array   (    'Name’=>’希亚',    'Age’=>   ); $jsonencode = json_encode($arr); echo $jsonencode; ?> 程序运行结果如下: {"Name":null,"Age":} json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf- 编码,我认为是前端的 Javascript 也是 utf- 的原因。 1 2 3 4 5 6 7 8 <?php $array = array  (   'title’=>iconv('gb',’utf-',’这里是中文标题'),   'body’=>’abcd…'  ); echo json_encode($array); ?> 这个程序的运行结果为: {"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd…"} 数组中所有中文在json_encode之后都不见了或者出现\u2353等。 解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 […]

龙生   23 Sep 2017
View Details

php返回json数据函数实例

本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考。具体方法如下: json_encode()函数用法: ? 1 echo json_encode(array('a’=>’bbbb',’c’=>’ddddd'); 这样就会生成一个标准的json格式的数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?php //需要执行的SQL语句 //单条 $sql="select id,name from tbl_user where id=1"; //多条数据 //$sql="select id,name from tbl_user"; //调用conn.php文件进行数据库操作 require('Conn.php'); //提示操作成功信息,注意:$result存在于conn.php文件中,被调用出来 if($result) { // $array=mysql_fetch_array($result,MYSQL_ASSOC);      /*数据集  $users=array();  $i=0;  while($row=mysql_fetch_array($result,MYSQL_ASSOC)){  echo $row['id'].'———--'.$row['name'].'</br>';  $users[$i]=$row;  $i++;  }  echo json_encode(array('dataList’=>$users));  */  /*单条数据*/  $row=mysql_fetch_row($result,MYSQL_ASSOC);    echo json_encode(array('jsonObj’=>$row)); } mysql_free_result($result); //释放结果 mysql_close(); //关闭连接 ?> […]

龙生   22 Sep 2017
View Details

php保存base64图片

base64图片格式:$base64_url = data:image/jpeg;base64,xxxxxxxxxxxxxxxxxxxxxx 1,去除头部:$base64_body = substr(strstr($base64_url,','),1); 2,解码:$data= base64_decode($base64_body ); 3,存储or创建图片: file_put_contents($file_path,$data); 或$image = imagecreatefromstring($data);  from:http://blog.csdn.net/suchfool/article/details/41312149

龙生   22 Sep 2017
View Details

php生成UUID

UUID含义是 通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。 UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft’s Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字 UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。 (2)时钟序列。 (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。 UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。 而 标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。 第一种,PHP代码如下: function create_guid(){ $microTime = microtime(); list($a_dec, $a_sec) = explode(" ", $microTime); $dec_hex = dechex($a_dec* 1000000); $sec_hex = dechex($a_sec); ensure_length($dec_hex, 5); ensure_length($sec_hex, 6); $guid = ""; $guid .= $dec_hex; $guid .= create_guid_section(3); $guid .= '-'; $guid .= create_guid_section(4); […]

龙生   22 Sep 2017
View Details

PHP 时间与字符串的相互转化

1、求两个日期的差数,例如2007-3-5 ~ 2007-3-6 的日期差数 echo abs(strtotime("2007-3-5") – strtotime("2007-3-6"))/60/60/24; echo "天<br>";   2、JS 获取当前日期 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear();    //获取完整的年份(4位,1970-????) myDate.getMonth();       //获取当前月份(0-11,0代表1月) myDate.getDate();        //获取当前日(1-31) myDate.getDay();         //获取当前星期X(0-6,0代表星期天) myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours();       //获取当前小时数(0-23) myDate.getMinutes();     //获取当前分钟数(0-59) myDate.getSeconds();     //获取当前秒数(0-59) myDate.getMilliseconds();    //获取当前毫秒数(0-999) myDate.toLocaleDateString();     //获取当前日期 var mytime=myDate.toLocaleTimeString();     //获取当前时间 myDate.toLocaleString( );        //获取日期与时间 3、PHP 日期与时间戳相互转化 PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2008-12-4) 所以存到数据库也有两种形式了(真正不止,我的应用就两种),时间戳类型我是保存为字符串的,这个是比较方便的. 正常日期类型是保存为DATE型的. 这两个要注意一下,我平时用两种,所以,前几天建的表,把时间类型存为DATE的,我还一直用时间戳保存,一直资料写不进表,调试了好久的才知错误之处,是类型不符合,不给写入库. 像上面的时间戳是比较方便,但,显示的时候,不至于把这个1228348800串给客户看吧,GOD NOWS! 所以就用到了这两个的转换,先说一下如何取得当前的时间戳,$date1=time();这样就取得当前的时间戳了,要转回2008-12-4这种格式 呢, 用到date()这个函数了,在PHP中date()函数比较常用,如取得当前日期,可以用$date2=date('Y-m-d');,关于里面参数的 意思,如不懂就查一下php的手册了. 好,言归正传,把1228348800转成2008-12-4格式代码如下: $date3=date('Y-m-d H:i:s',"1228348800"); 这样就OK了,如还想得到小时,分钟秒,只要把’Y-m-d’改一下就可以了,不过要注意一下,PHP时间还像有8个小时的误差.加上就OK了. 时间戳转正常日期有了,反之呢,把正常日期格式转为时间戳呢,请看如下代码: $year=((int)substr("2008-12-04",0,4));//取得年份 $month=((int)substr("2008-12-04",5,2));//取得月份 $day=((int)substr("2008-12-04",8,2));//取得几号 echo mktime(0,0,0,$month,$day,$year); 这样就能把正常日期转成时间戳了,这里如果有时分秒也是同理, 注意:php5.1以上时间戳会与实际时间相差8小时,解决办法如下 1、最简单的方法就是不要用php5.1以上的版本--显然这是不可取的方法!!! 2、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序 放到别人的服务器上,不能修改php.ini,那就奈何不得了。 3、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推 荐。 时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin 港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北) […]

龙生   22 Sep 2017
View Details
1 12 13 14 29