前天晚间博客遭受了一波垃圾评论攻击,攻击者大概是看了我之前的一篇介绍在用的防垃圾评论的日志,知道我这里评论文本框的名字叫 little_star,因此哥们一夜一间就制造了几百条垃圾评论。真是出乎意料,我一直觉得没人会对我的无名小站感兴趣,没想到这一天还是来了。

因此,这两天对在用的防垃圾评论机制进行了一些改进,总体思路是生成动态的评论文本框名称。方法大概入如下:
在主题 function.php 文件中加入以下几个函数

// 生成随机字符串
function get_brave_hash($hash_length = NULL) {
	$hash_length = !is_int($hash_length) ? rand(8,14) : abs($hash_length);
	return substr(str_shuffle("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), -$hash_length);
}

session_start(); // 开启 session

// 生成评论框名称
function get_comment_text_name() {
	$comment_text_name = 'real_comment';
	$comment_text_name_hash = get_array_key('_SESSION', $comment_text_name);
	if ( isset($comment_text_name_hash) ) {
		// session 里存在时直接返回 $_SESSION 中存储的值
		return $comment_text_name_hash;
	}
	$sep = '_';
	$hash_length = 8; // 8 位长度
	$comment_text_name_hash = $comment_text_name . $sep . get_brave_hash($hash_length);
	// 加入到 session
	$_SESSION[$comment_text_name] = $comment_text_name_hash;
	return $comment_text_name_hash;
}

// 获取数组键值
function get_array_key($array, $key) {
	if (is_string($array)) {
		global $$array;
		return array_key_exists($key, $$array) ? $$array[$key] : null;
	}
	return array_key_exists($key, $array) ? $array[$key] : null;
}

在主题评论文件中(我这里是 comments.php)调用 get_comment_text_name() 函数,生成动态的名称,用作评论文本框名称:

<?php
$comment_text_name = get_comment_text_name();
comment_form( array(
'fields' => array(
'author' => '<p class="commentform"><input type="text" name="author" id="author" class="inp cmt-input" placeholder="昵称 [必填]" aria-required="true" size="30" value="' . esc_attr( $commenter['comment_author'] ) . '"></p>',
'email' => '<p class="commentform"><input type="text" name="email" id="email" class="inp cmt-input" placeholder="邮箱 [必填·保密]" aria-required="true" size="30" value="' . esc_attr( $commenter['comment_author_email'] ) . '"></p>',
'url' => '<p class="commentform"><input type="text" name="url" id="url" class="inp cmt-input" placeholder="网址 [选填]" size="30" value="'.$comment_author_url.'"></p>',
'cookies' => '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' .
'<label for="wp-comment-cookies-consent" class="c4"> 记住我的个人信息</label></p>'
),
'comment_field' => '<textarea id="comment" name="comment"></textarea>
<textarea name= ' . '"' .$comment_text_name . '"' . ' class="inp text-bg comment-textarea" placeholder="添加评论..." aria-required="true" cols="45" rows="8"></textarea>',
'title_reply' => '发表评论',
'cancel_reply_link' => '取消回复',
'label_submit' => '发表评论',
'comment_notes_before' => '',
'comment_notes_after' => '',
'class_submit' => 'btn submit',
'action' => '/wp-stop-spam.php'
));
?>

在 wp-stop-spam.php 文件中通过 session 获取评论框名称,并进行置换

<?php
/** Sets up the WordPress Environment. */
require_once __DIR__ . '/wp-load.php';
nocache_headers();

$comment = trim($_POST['comment']);
if ( empty( $comment ) ) {
// 置换评论内容
$comment_text_name = get_comment_text_name();
$_POST['comment'] = trim($_POST[$comment_text_name]);
require_once( __DIR__ . '/wp-comments-post.php' );
}
if ( ! empty( $comment ) ) {
	// 返回错误
	wp_die('放过我吧!');
}

2021年年底买的三苗余蝴蝶,2022年发了几苗并来了两个花苞,临近春节这段时间花苞生长迅速,明显可见其中一个花苞出现了分裂,分出主副两个花苞,几乎可以肯定这是一杆双花,主花苞已经开裂肉眼可见花瓣了。
春兰·余蝴蝶

2022年2月25日,晴,花开了,状态还不错,香味较浓。
春兰·余蝴蝶

2023年3月3日,晴,今年这盆花来了一杆双花的。
春兰·余蝴蝶·一杆双花

2023年3月9日,晴,同一杆上的另一朵花也开了。
春兰·余蝴蝶·一杆双花

6:20我被父亲的电话惊醒,昨晚剃了头,整夜我都在被窝里尝试通过调整不同的位置让后脑勺不觉得那么冷,空调似乎变成了只能吹风的风扇,夜间第一次醒来发现灯没关,我料定起身再回来被窝就凉了,干脆蒙上头。

此时父亲电话叫我开门,外面很黑,没有光,迎面勉强看到父亲轮廓,除去铁门开合的声音,村子里寂静无声,我到外面小解,院外昨晚的软泥和着雨雪融水已被冻硬,踩上去咯咯作响,骤然间鸡鸣四起,父亲叫我回去睡觉,我躺下不一会便听到外面牛棚里牛儿们进食喉咙里发出的沉闷喘息声,夹着牛脖子上链绳的清脆碰击声,还有父亲的呵斥声。

大概是上周的某一天爱人通过平板将手机丢失的信息告诉我:午后使唤孩子到菜鸟驿站取快递,手机装在孩子上衣兜里,不巧就丢在了取快递的路上。孩子到了快递站发现手机丢了,调头找回来未果,我们这才知道手机不见了。

随后我陆续拨了几次丢失的手机,能拨通只是无人接听。尝试通过“查找我的手机”定位手机也未能成功,随后打电话给电信公司挂失了号码。

不久老婆又来了消息她自己亲自找了一遍,还去物业找人查了监控,也没有任何线索。此时已能断定手机是被人捡走了。我向孩子打听了一些细节,孩子告诉我去的路上遇见一个外卖员,问孩子“小朋友上几年级了”,孩子说这个外卖员不像什么好人。孩子在快递站发现手机丢失返回寻找。又遇到那个外卖员返回,这次外卖员说又遇到你了。

听了孩子的描述我觉得这个外卖员可疑,想到前几年一起手机失窃的例子,窃贼不仅转走了钱,甚至利用受害人身份开网贷借钱转走。觉得不能大意,先挂失了支付宝,接着出于预防进一步财产损失的目的,抱着试试看的心态拨了110报警。

至此我们已经接受手机丢失的现实,只是丢失的手机里有很多家庭照片和其他资料,还是非常希望能够找回。

回想我多年前捡过一个钱包,最后完璧归赵;也捡过手机,最后交给失主,怎么我就不能遇到一次这样的好运呢!

报警还是有用的,当晚回家警察出警过来处置,一起去物业找人查监控,最后发现手机在一个监控摄像头的可视区域正下方约半米左右的界内掉落在地,相隔不到半分钟被物业的一个清洁工人拾起。

次日上午拿回手机,手机里的资料保住了,同时又节约了一笔意外开支。当晚孩子从口袋里掏一张纸片,孩子告诉我这是取快递用的,以后取快递会把取件号码写在纸上,这样就不会再把妈妈手机弄丢了。至于为什么第一次查监控没能有结果,可能是操作者不同,对系统熟悉程度不同,也不排除警察来了他们查的比较上心。

孩子学习需要打印资料,两年前在闲鱼上360元买了台二手打印机惠普 2035n,这是一家汽车销售门店关门处理的机器,一起发过来的还有一个他们未使用的新硒鼓,当时我猜测机器大概率不是组装翻新的,也许他们当时买的就是二手呢。

很不幸一收到我就把进纸仓1右侧的塑料卡扣弄断了,好在还能打,前前后后用了差不多两年,前几天打印发现它开始卡纸了,可怕的是卡纸很有规律,表现是每打一张就会多带进去一张纸卡在机器里,报卡纸错误。昨天我捣鼓了一下把进纸仓2用起来了,同样不幸的是老婆在处理卡纸时把进纸仓2右侧的一个塑料支撑部件掰断的,好在不影响打印。今早再打印发现进纸仓2像是感染了进纸仓1传播的病毒一样,也阳了,一打印就卡纸,去你的吧。

赶到公司我就着手买打印机了:孩子上学只需要打印A4纸,用不到彩色打印,也不用复印,只需要基础的打印功能,耗材便宜就够了。总结出目前我家庭对打印机的需求如下:

  1. 具有基础的打印功能;
  2. 稳定工作,不要经常出问题;
  3. 后期使用成本低;
  4. 新机器,不冒二手的风险了;
  5. 使用周期长,预期使用8-10年;
  6. 价格亲和。

据此,选择了惠普的P1108黑白激光打印机。

惠普·激光·打印机·P1108