为wordpress文章评论添加算术验证码

从网上搜到http://www.yuju.org/379.html使用的方法,
但也许是我用的workpress版本不同,没有找到相关的代码,于是参考了作者文章的基础了,研究了下,最终这样实现。

修改wordpress根目录下的 wp-comments-post.php

修改源代码其实没那么难,只是任何源代码的修改都记得先备份一个就是了。

网站根目录下的 wp-comments-post.php,查找:

if ( ” == $comment_content )
在此代码的上面增加:

 

//my code

if ( !$user->ID ) {

$aaa = trim($_POST[aaa]);

$bbb = trim($_POST[bbb]);

$subab = trim($_POST[subab]);

if((($aaa+$bbb)!=$subab)|| empty($subab)){

wp_die( __(‘错误提示:请正确输入的两数字相加的结果。’) );

}

}

//my code

 

然后修改wp-includes文件夹下的的文件comment-template.php
找到function comment_form( $args = array(), $post_id = null ) 方法

查找相关代码,我修改后如下

$req = get_option( ‘require_name_email’ );
$aria_req = ( $req ? ” aria-required=’true'” : ” );
$html5 = ‘html5’ === $args[‘format’];
$aaa=rand(0,5);
$bbb=rand(3,9);
$fields = array(
‘author’ => ‘<p class=”comment-form-author”>’ . ‘<label for=”author”>’ . __( ‘Name’ ) . ( $req ? ‘ <span class=”required”>*</span>’ : ” ) . ‘</label> ‘ .
‘<input id=”author” name=”author” type=”text” value=”‘ . …

php 5.3起弃用session_register

最近下了dedecms V5.7时,在登陆后台时,用户名和密码也没错,就是跳转不走,进不了后台管理页面,追踪了好久才发现根目录/include/userlogin.class.php中289行左右的位置及之后的位置

@session_register($this->keepUserIDTag);

使用了

session_register函数,就在这个地方卡住了,而且还@了错误信息,原来
本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。我的php版本是5.4.0的
解决方法
加入代码

function fix_session_register(){
function session_register(){
$args = func_get_args();
foreach ($args as $key){
$_SESSION[$key]=$GLOBALS[$key];
}
}
}

if (!function_exists(‘session_register’)) fix_session_register();

function fix_session_unregister(){
function session_unregister(){
$args = func_get_args();
foreach ($args as $key){
$_SESSION[$key]=””;
}
}
}

if (!function_exists(‘session_unregister’)) fix_session_unregister();

 

用php切割大图片为成规则的小图

将根据xml配置,将合并后的大图切割成一系列小图

<?php
/**
 * 将大图片按照配置切割成一定比例的小图片
 * 并按照一定规则给小图片命名
 *
 * 使用方法:
 *根据guardians/g1目录下的Attack_1.xml配置切割Attack_1.png
 *也可批量切割(我写的是批量切割)
 *
 * 注:需要GD2支持
 */
// echo “{${phpinfo()}}”;
header(“Cache-Control:no-cache,must-revalidate”); //不使用缓存

for ($i = 1; $i < 100; $i++) {
    $filename = “guardians/g” . $i . “/Attack_1.png”; //大图文件
    $tempdir  = “temp”; //小图存放目录
    //判断文件是否存在 不存在就切割完毕
    if (file_exists($filename)) {
        if (!file_exists($tempdir))
            mkdir($tempdir);
    }
    $xml = simplexml_load_file(“guardians/g” . $i . “/Attack_1.xml”);
    echo “guardians/g” . $i . “/Attack_1.xml<br>”;
    $j = 1;
    foreach ($xml->SubTexture as $SubTexture) {
        $attri = $SubTexture->attributes();
        $picW  = $attri->frameWidth; //切割小图的宽
        $picH  = $attri->frameHeight;
        //为支持大图片增加内存限制
        ini_set(‘memory_limit’, ‘220M’); //切割小图的高
        echo $picW . “,” . $picH . “<br>”;
        list($width, $height, $type, $attr) = getimagesize($filename);
        
        $image = imagecreatefrompng($filename);
        //透明背景
        $im = imagecreatetruecolor((int) $picW, (int) $picH) or die(“Cannot Initialize new GD image stream”); //创建小图像
        imagealphablending($im, false);
        imagesavealpha($im, true);
        $white = imagecolorallocatealpha($im, 255, 255, 255, 127);
        imagefill($im, 0, 0, $white);
        
        $picX = $attri->width; //获取截取图片的宽度
        $picY = $attri->height; //获取截取图片的高度
        echo $picX . “,” . $picY . “<br>”;
       …