2013年1月14日 : してログ

いくつかありますが、1ファイルでこれ(lastRSS)がいちばん簡単でした。ただし、警告が出る場合(存在しない配列要素を参照する場合)があるので、気になる場合はコードを修正した方が良いでしょう。

Last RSS Simple yet powerful PHP RSS parser
http://lastrss.oslab.net/
サンプルコード
include_once('lastRSS.php');

$rss = new lastRSS;

$rss->cache_dir = './cache';
$rss->cache_time = 3600; // キャッシュの有効時間(単位:秒)

if ($rs = $rss->get('http://landhere.info/feed.php?type=blog')) {
    print_r($rs);
} else {
    die("RSSの取得に失敗しました");
}

見つけたフォームに片っ端からコメントスパムを投稿していくロボットへの対策ですが、単純な対策でかなり効果がありました。この手のスパムコメントは、ほとんど英文のやつで放っておくとすぐに、もの凄い数に上ってしまいます。

ロボットは、見つけたフォーム要素の種類(type="text" など)と名前(name="email" など)を頼りに書き込みを行います。そこで、ダミーの入力欄を設けてロボットを騙してやればロボットかどうか判定できると考えました。最初は、名前を日本語ローマ字(name="namae" とか)にしてみましたが、これは効果がありません。最終的に、非表示のフォーム要素を使う方法が、大いに効果ありました。

<input type="text" name="name" style="display:none;" />

このように、ブラウザに表示されないダミーのテキスト入力欄を設けます。このフォームの受け取り側では、この要素が空の場合のみ正しい処理をするようにします。たったこれだけですが、今のところロボットはうまく騙されてくれているようです。