![]() |
EarthRiZEのコメントや掲示板に導入しているアンチスパムについての質問をいただきまして、この質問を機にEarthRiZEでもランダムアンチスパムキーを導入しました。 (今までは、固定のアンチスパムキーでした) せっかくなので一般記事としても、rNoteへランダムアンチスパムキーの導入方法について書いておこうと思います。 |
まず、ランダムアンチスパムキーとは何ぞや?
っという方は、「コメントを入れる」をクリックして見てください。
すると、コメントを入れるのに、anti spam key [12345678]なるものを入力せねばならぬ項目が表示されていると思います。
今回お話しております、ランダムアンチスパムキーはこの数字の部分が、アクセスするたびにランダムに変化するという物です。
ただ、今回ご紹介するランダムアンチスパムキーの導入方法では、一箇所だけJavaScriptを利用しています。
そのため、JavaScriptが利用できない環境では、コメント投稿が出来ないということになってしまいます。
もっとも、現在のブラウザ事情ではそうそう気にしなくても問題はないと思います。
さて、肝心のrNoteにランダムアンチスパムキーを導入する方法を紹介していこうと思います。
<毎度お馴染みの決まり文句ですが、ワタクシhogemonia_mk2はPHPやJavaScriptをマジメに勉強したことがない人間です。
聞きっかじりでうろ覚えの実に貧弱かつ脆弱なプログラム知識でプログラムを書いていますので、動作の保証は出来ません。>
まず、以下の内容のファイルを作成し、random_anti_spam_key.phpという名前で保存してください。
特にrNoteで使用する際は文字コードがutf-8となるように保存してください。
保存が完了したら、rnote.phpと同じフォルダへアップロードしてください。
-----random_anti_spam_key.php------
<?php
//セッション開始
session_start();
//100000~999999のランダムに変わる数値を取得(6ケタの場合)
//8ケタなどにする場合は rand(10000000,99999999);としてください。
//ただ、この方法では001234といった0から始まる数値はランダムの範囲に入りません
$random_ask = rand(100000,999999);
//セッション変数に保存
$_SESSION['random_anti_spam_key'] = $random_ask;
//参照元のページにアンチスパムキーを出力
echo "document.write(\"".$random_ask."\");";
?>
-------------------------------------
続いて、rnote.phpを編集作業に移りますが、念のため編集前のrnote.phpのバックアップを忘れないようにしてください。
では、お持ちのエディタでrnote.phpを開いていただき、1行目の<?php直下の行(2行目)に
-------------------------------------
session_start();
-------------------------------------
という行を加えてください。
次に、66行目辺りの// messagesとある付近に
-------------------------------------
define(WB_ERR_BAD_ANTISPAM,'投稿キーが間違っています。投稿画面に戻ってやり直してください。');
-------------------------------------
という行を加えてください。
そのまたお次は、506行目付近の// WriteBackの近くに
$file = $_GET['u']; <514行目辺り> と DoublePostChk($name.$com); <516行目辺り>
という2行がありますので、この2行の間に
-------------------------------------
if($_POST['antispam_keyword_wb'] != $_SESSION['random_anti_spam_key']){error(WB_ERR_BAD_ANTISPAM,ERR_WB);}
-------------------------------------
という行を加えてください。
以上の3行をrnote.phpに加え終わったら編集したrnote.phpを保存してアップロードしてください。
続いて、アンチスパムキーの入力部分の加えていきます。
コメント(ツッコミ)投稿部分にランダムアンチスパムキーを実装したい方は「entriesフォルダ内のwriteback.skin」ファイルを、掲示板の投稿部分に実装したい方は「entries/bbsフォルダ内のhtml_body.skin」ファイルをエディタで開いてください。
そして、どちらのファイルにも
url or email: <input type="text" name="tag_AuthorUrl" size="60" value="<%=$cookie_url%>" maxlength="200" />
といった行がありますので、その直下に
-------------------------------------
<p>anti spam key [<script type="text/javascript" src="random_anti_spam_key.php"></script>]: <input type="text" name="antispam_keyword_wb" size="50" maxlength="30" /><br/></p>
-------------------------------------
という行を追加してください。
あとは編集中のwriteback.skinないしhtml_body.skinを保存&アップロードして、rnoteadmin.phpからさい構築することでアンチスパムキーの入力テキストフィールドが表示され、コメント投稿時のランダムアンチスパムキー認証が有効になります。
以上、rNoteへランダムアンチスパムキーを導入する方法でした。
何か変なことを言っていたらご指摘いただければ、と思います。
それでは、今回の記事はこれにて。
















