月度归档: 2017 年 9 月

  • php 插入随机字符 跳过HTML内容

    php 插入随机字符 跳过HTML内容

    前面我们写了一个WordPress插件,WordPress WP-JPost 自动采集发布插件.后面有小伙伴需要插入一些随机的元素以达到伪原创的目的,下面我们记录一下php实现的方法函数:

    function randomInsert($txt,$insert){//txt 内容;insert要插入的关键字,可以是链接,数组
        //将内容拆分成数组,每个字符都是一个value,英文,中文,符号都算一个,只能在utf-8下中文才能拆分
        preg_match_all("/[\x01-\x7f]|[\xe0-\xef][\x80-\xbf]{2}/", $txt, $match);
     
        $delay=array();
        $add=0;
        //获取不能插入的位置索引号($delay 数组),也就是< > 之间的位置
        foreach($match[0] as $k=>$v){
            if($v=='<') $add=1;
            if($add==1) $delay[]=$k;
            if($v=='>') $add=0;
        }
      
        $str_arr=$match[0];
        $len=count($str_arr);
      
        foreach($insert as $k=>$v){
            //获取随机插入的位置索引值
            $insertk=insertK($len-1,$delay);
            //循环将insert数据 拼接到 随机生成的索引
            $str_arr[$insertk].=$insert[$k];
        }
        //合并插入 关键词后的数据,拼接成一段内容
        echo join('',$str_arr);
    }
     
    function insertK($count,$delay){//count 随机索引值范围,也就是内容拆分成数组后的总长度-1;delay 不允许的随机索引值,也就是不能在 < > 之间
        $insertk=rand(0,$count);
        if(in_array($insertk,$delay)){//索引值不能在 不允许的位置处(也就是< > 之内的索引值)
            $insertk=insertK($count,$delay);//递归调用,直到随机插入的索引值不在 < > 这个索引值数组中
        }
        return $insertk;
    }

     

  • Discuz! QQ登陆出现 Unknown column ‘conuintoken’ in ‘field list’ 图文解决方案

    Discuz! QQ登陆出现 Unknown column ‘conuintoken’ in ‘field list’ 图文解决方案

    [title]故障描述[/title]

    Discuz 下 使用QQ登录时就会发生。打开qq互联提示一下错误:

    Discuz! Database Error

    (1054) Unknown column ‘conuintoken’ in ‘field list’
    REPLACE INTO common_connect_guest SET `conuintoken`=’7CF32BFC7A287A52C214CE8D5572B5B2′ , `conopenid`=’D97BD4F16541BB824016C0F495F88BA4′ , `conqqnick`=’laoji.org’
    PHP Debug

    No. File Line Code
    1 connect.php 40 require_once(%s)
    2 source/plugin/qqconnect/connect/connect_login.php 353 discuz_table->insert(Array, false, true)
    3 source/class/discuz/discuz_table.php 81 discuz_database::insert(%s, Array, false, true, false)
    4 source/class/discuz/discuz_database.php 60 discuz_database::query(%s, %s, %s, true)
    5 source/class/discuz/discuz_database.php 136 db_driver_mysql->query(%s, %s, true)
    6 source/class/db/db_driver_mysql.php 153 db_driver_mysql->halt(%s, %d, %s)
    7 source/class/db/db_driver_mysql.php 224 break()

    [title]解决方法:[/title]

    打开空间商或自己架设的phpmyadmin,选择数据库 点击 sql功能 运行:

    ALTER TABLE  `pre_common_member_connect` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT '';
    ALTER TABLE  `pre_common_connect_guest` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT '';

    问题解决。

  • AMP插件 给WordPress网站 移动页面加速

    AMP插件 给WordPress网站 移动页面加速

    这个插件添加了对支持加速移动页?Accelerated Mobile Pages?(AMP)项目,该项目是一个开源的倡议,旨在提供移动优化的内容,可以立即加载无处不在。

    随着插件活跃,网站上的所有文章都将动态生成的AMP兼容的版本,通过附加访问/amp/到最后你的帖子的网址。

    例如:

    你的帖子的网址是http://example.com/2016/01/01/amp-on/?,

    您可以访问AMP版本http://example.com/2016/01/01/amp-on/amp/?

    如果你没有漂亮的永久链接启用,您可以通过追加做同样的事情?amp=1?,

    http://example.com/2016/01/01/amp-on/?amp=1

    注意#1:当前不支持页面和存档。?正在处理页面支持。

    注意#2:此插件仅创建AMP内容,但不会在用户从移动设备访问时自动显示。?这由AMP消费者处理,例如Google搜索。?有关详细信息,请参阅AMP项目常见问题解答

    有请跟随或造成这个插件的开发https://github.com/Automattic/amp-wp

    使用方法:

    • 该文件夹上传到/wp-content/plugins/目录
    • 通过WordPress中的“插件”菜单激活插件
    • 您可能需要在 设置 > 固定链接 里刷新你的固定链接,然后点击保存按钮。

    插件下载地址:

    wordpress官方下载:https://wordpress.org/plugins/amp/

  • amh5.3面板 php7 无法启动 导致网站502错误 解决办法

    amh5.3面板 php7 无法启动 导致网站502错误 解决办法

    amh面板确实给我们大家带来了方便,但是如果出错的话也不容易解决,需要一些基础才行。

    Centos Debian Ubuntu Amh面板 安装图文教程

    这里我们记录一下安装amh5.3面板后,php无法启动,导致网站出现502错误。

    PS:正好是周末,即使去amh官方提交工单,也没人回应。

    之前并不知道做了什么升级或者操作,这里网站直接出现了502 Bad Getway。

    然后我们登录了amh面板,发现里面所有的php7.0都无法启动了。幸运的是我们开启了日志,果断查看日志。

    [title]检查php日志:[/title]

    cat /home/wwwroot/lnmp70/logs/147hub.com-php-fpm.log

    错误如下错误:

    [21-Aug-2017 11:07:45] ERROR: Unable to remove the PID file (/home/wwwroot/lnmp70/logs/147hub.com-php-fpm.pid).: No such file or directory (2)
    [17-Sep-2017 10:36:42] ERROR: Unable to remove the PID file (/home/wwwroot/lnmp70/logs/147hub.com-php-fpm.pid).: No such file or directory (2)

    [title]检查nginx日志文件:[/title]

    cat /home/wwwroot/lnmp70/logs/147hub.com-error.log

    2017/09/17 11:19:20 [crit] 10320#0: *173 connect() to unix:/tmp/php-cgi-lnmp70-147hub.com.sock failed (2: No such file or directory) while connecting to upstream, client: 121.41.112.148, server: 147hub.com, request: “HEAD / HTTP/1.1”, upstream: “fastcgi://unix:/tmp/php-cgi-lnmp70-147hub.com.sock:”, host: “147hub.com”

    [title]检查php.ini:[/title]

    最后没办法搜索一下php.ini的配置文件:

    find / -name php.ini

    发现了php.ini 的对应配置文件:

    cat /home/wwwroot/lnmp70/etc/amh-php.ini

    发现里面有写一句:

    error_log = /home/wwwroot/lnmp70/logs/amh-php-errors.log

    [title]查看最终的php7错误日志:[/title]

    接着我们查看日志这个错误日志:

    cat /home/wwwroot/lnmp70/logs/amh-php-errors.log

    出现错误:

    [17-Sep-2017 11:19:19 Asia/Shanghai] PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0

    然后我们检查了ionCube Loader扩展,发现这里并没有安装这个扩展,所以肯定会导致报错。

    [title]修复错误:[/title]

    直接把扩展安装上就能正常运行了。

  • mysql5.7 解决无法远程连接的方法

    mysql5.7 解决无法远程连接的方法

    刚安装了mysql服务器,使用远程管理工具总是连接不上,因为知道mysql的默认端口是3306,于是使用telnet连接这个端口,

    telnet 192.168.1.10 3306

    还是连接不上,于是怀疑是防火墙问题,便将防火墙关掉,

    service iptables stop

    再次telnet,还是没办法连上这个端口,然后通过netstat查看3306的端口状态是怎么样的

    netstat -apn|grep 3360

    终于发现了一个比较奇怪的东西

    tcp ? ? ? ?0 ? ? ?0?127.0.0.1:3306?? ? ? ? ? ?0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? ?3783/mysqld

    上面标红的地方,监听端口正常,但却绑定了本地回旋地址,难怪总是连接不上,于是查了下资料,找到了解决办法:

    修改mysql的配置文件/etc/mysql/my.conf(Ubuntu下是/etc/mysql/mysql.conf.d/mysqld.cnf),将bind-address后面增加远程访问IP地址或者禁掉这句话就可以让远程机登陆访问了。

    记得要重启mysql服务哦

    /etc/init.d/mysql restart

  • Chevereto-free 免费版 忘记管理员密码 强制登陆 重置密码方法

    Chevereto-free 免费版 忘记管理员密码 强制登陆 重置密码方法

    我们很久之前搞了一个788图床,由于很长时间没有登录忘记了登陆密码,默认的话有重置密码的功能,但是我们没有开启mail函数,所以发送不了邮件,下面我们给出强制登陆并修改密码的方法。

    [title]强制登陆[/title]

    FTP登陆到站点,编辑文件 /app/routes/route.login.php (大概第94行),找到:

    $is_login = CHV\Login::checkPassword($user_db[‘user_id’], $_POST[‘password’]);

    修改为:

    //$is_login = CHV\Login::checkPassword($user_db[‘user_id’], $_POST[‘password’]);

    $is_login = true;

    这样前台登陆的时候,只需要用户名正确,密码随便填写即可登录。

    登陆后记得恢复原来的修改。

    [title]重置密码[/title]

    使用FTP登陆,编辑文件?/app/routes/route.setttings.php , 找到:

    				case 'password':
    					
    					if(!$is_dashboard_user) {
    						if($user['login']['password'] && !password_verify($_POST['current-password'], $user['login']['password']['secret'])) {
    							$input_errors['current-password'] = _s('Wrong password');
    						} else {
    							if($_POST['current-password'] == $_POST['new-password']) {
    								$input_errors['new-password'] = _s('Use a new password');
    								$handler::updateVar('safe_post', ['current-password' => NULL]);
    							}
    						}
    					}
    				
    					if(!preg_match('/'.CHV\getSetting('user_password_pattern').'/', $_POST['new-password'])) {
    						$input_errors['new-password'] = _s('Invalid password');
    					}
    					
    					if($_POST['new-password'] !== $_POST['new-password-confirm']) {
    						$input_errors['new-password-confirm'] = _s("Passwords don't match");
    					}
    				break;

    修改成:

    				case 'password':
    /******					
    					if(!$is_dashboard_user) {
    						if($user['login']['password'] && !password_verify($_POST['current-password'], $user['login']['password']['secret'])) {
    							$input_errors['current-password'] = _s('Wrong password');
    						} else {
    							if($_POST['current-password'] == $_POST['new-password']) {
    								$input_errors['new-password'] = _s('Use a new password');
    								$handler::updateVar('safe_post', ['current-password' => NULL]);
    							}
    						}
    					}
    				
    					if(!preg_match('/'.CHV\getSetting('user_password_pattern').'/', $_POST['new-password'])) {
    						$input_errors['new-password'] = _s('Invalid password');
    					}
    					
    					if($_POST['new-password'] !== $_POST['new-password-confirm']) {
    						$input_errors['new-password-confirm'] = _s("Passwords don't match");
    					}
    ******/
    				break;

    然后在后台修改密码,原始密码随便填,输入新密码即可。

    修改密码后记得恢复原来的修改。

  • Discuz 补丁安全分析 多处安全漏洞

    Discuz 补丁安全分析 多处安全漏洞

    尊敬的用户:

    您好,近日,开源社区论坛软件系统Discuz发布了X3.4版本,官方在最新版本中修复了多个安全问题,攻击者利用该漏洞可在获取论坛管理员权限后进行远程代码执行,进而远程控制服务器。
    为避免您的业务受影响,京东云建议您及时开展自查,并尽快完成升级更新,详细参见如下指引说明:
    【漏洞概述】
    Discuz官方发布的X3.4版本主要修复了两个安全问题,分别为authkey生成弱算法问题和管理员后台数据库连接密码修改未校验导致的任意代码执行漏洞。
    ?
    【风险等级】
    高风险
    【漏洞影响】
    被利用可导致任意代码执行和用户敏感信息泄露
    【影响范围】
    Discuz_X3.3_SC_GBK
    Discuz_X3.3_SC_UTF8
    Discuz_X3.3_TC_BIG5
    Discuz_X3.3_TC_UTF8
    Discuz_X3.2_SC_GBK
    Discuz_X3.2_SC_UTF8
    Discuz_X3.2_TC_BIG5
    Discuz_X3.2_TC_UTF8
    Discuz_X2.5_SC_GBK
    Discuz_X2.5_SC_UTF8
    Discuz_X2.5_TC_BIG5
    Discuz_X2.5_TC_UTF8
    【安全版本】
    Discuz_X3.4_SC_GBK
    Discuz_X3.4_SC_UTF8
    Discuz_X3.4_TC_BIG5
    Discuz_X3.4_TC_UTF8
    【检测方法】
    自行检查使用的版本是否在受影响范围内
    【修复建议】
    Discuz官方已经在2017年8月1日发布最新版,请用户检查自己使用的版本,并及时更新至最新版。
    https://git.oschina.net/ComsenzDiscuz/DiscuzX/commit/8446bd9e897bb19672389cc4aed42716ccd0f537
    https://git.oschina.net/ComsenzDiscuz/DiscuzX/commit/bb600b8dd67a118f15255d24e6e89bd94a9bca8a
WeChat