blognplus+コメントスパム対策モジュールでの不具合対策

備忘録として…
先日、サーバOSバージョンアップ後から、本ブログの個別記事表示がInternal Server Error(500)となっていた件の対策について記述します。
PHPのバージョン5.3で、session_register()関数が非推奨となり、5.4で廃止されました。
この対応として、本ブログで採用しているblognplusは事前に対応されていたのですが、コメントスパム対策モジュール(asm4cmt)に、session_register()が残っていました。このモジュールは、個別記事の表示に関わるため、結果として、個別記事の表示がエラーとなっていました。
気付いたその場の対応としては、コメントスパム対策モジュールを無効化し、替りに、blognplus同梱のComment Captchaを有効化しました。
ただ、コメントの際に、画像に表示された文字を入力するのが難しいある人[:にこっ:]のために、久々にプログラムの解析、修正という作業を行いました。
PHPなんて、ほとんど触ったことがなかったのですけど、何とか動いています。
まず、エラーが出ないようにするには、
module/asm4cmt/display.phpの70行目、

session_register(“asm4cmt_token”);

をコメントアウトするだけでよいようです。
本ブログでは、ページの静的生成対応をしている(index.php?e=100→e100.html)のですが、今回の修正を行っている際に、静的生成対応の影響でスパムスコアが上がってしまっていることに気づきました。そこで、静的でも動的でもスコアに影響しないように修正してみました(静的化が完全でないため、タイミングによってどちらもありえるため)。
久々にプログラムを触るので、泥臭いやり方で恥ずかしいですが、
module/asm4cmt/spamchk.phpの122行目を

if(!stristr(BLOGN_HOMELINK, $purl[“host”]) || $qurl[0] != “e” || $qurl[1] != $id) {

if(!stristr(BLOGN_HOMELINK, $purl[“host”]) || (($qurl[0] != “e” || $qurl[1] != $id) && !stristr($referer, BLOGN_HOMELINK.”e”.$id.”.html”))) {

としました。
とりあえず、表示やコメント投稿もOKで、スコアも正常化したようです。

コメント

タイトルとURLをコピーしました