Laravel4でスパムコメントを弾きたい時に便利なAkismetの使い方

カテゴリ:Web制作タグ:,,

今回は、Laravel4でWebアプリケーションを作る時にコメントシステムを実装したい時もあるでしょう。
コメントに限らずユーザーから何か投稿をしてもらう仕組みの時に面倒なのがスパム投稿だと思います。
そんな時に便利なAkismetの使い方をご紹介します。

AkismetはWordPressに標準でプラグインが搭載されており、使った事のある人もいるかと思います。
Laravel4用にも簡単に扱えるようパッケージが用意されています。

この記事の内容

  1. composer.jsonに追加する
  2. app.phpにコードを追加する
  3. akismet.phpを作成する
  4. テーブルを作成する
  5. コントローラを作成する
  6. モデルを作成する
  7. ビューを作成する
  8. ルーティングを編集する
  9. 動作確認
  10. その他便利なメソッド
  11. 最後に

composer.jsonに追加する

今回使うパッケージはこちらのパッケージです。
※2013/1/12追記:Laravel4.1では上記パッケージだとcomposer.jsonのバージョン指定の関係で使用出来ないのでforkされたコチラのパッケージを使用すると良いでしょう。
まず、ルートディレクトリにある「composer.json」のrequireに以下を追加します。

例:

追加が終わったらコマンド画面でルートディレクトリに移動し

を実行します。

app.phpにコードを追加する

パッケージのダウンロードが完了したら、次に「config/app.php」を開き「providers」の最終行へ下記を追加します。

例:

akismet.phpを作成する

パッケージの説明では、APIキーをapp.phpに記述をするよう説明されていますが、今回は新たにファイルを作成して記述することにします。
「config」フォルダに新しく「akismet.php」を作成し、下記の記述を行います。

※API_KEYの部分をご自分のAkismet用のAPIキーに書き換えて下さい。

まだAkismetのAPIキーを持っていない方は、コチラへアクセスしていただき、下記の手順で取得して下さい。
laravel4-spam-comment-akismet_01
1.「Get a WordPress Key」ボタンをクリックします。

laravel4-spam-comment-akismet_02
2.「Personal」の「SIGN UP」ボタンをクリックします。

laravel4-spam-comment-akismet_03
3.「E-mail Address」、「Username」、「Password」を入力して「Sign up→」ボタンをクリックします。

laravel4-spam-comment-akismet_04
4.WHAT IS AKISMET WORTH TO YOU?の欄のバーを一番左まで動かして「$0.00/yr」にしたら下記のようになります。

laravel4-spam-comment-akismet_05
5.「First name(名前)」、「Last name(苗字)」を入力して「CONTINE」ボタンをクリックします。

laravel4-spam-comment-akismet_06
6.しばらくすると画面が切り替わります。このページに深緑色で表示されているものがAkismetのAPIキーになります。

laravel4-spam-comment-akismet_07
もし間違えてこの画面を閉じてしまった場合アカウントのページのAPI Keyの右側にある「reveal」をクリックすると表示されます。
※要ログイン

テーブルを作成する

ここでは説明のためにコメントを例としてデータベースのテーブルを作成します。
※実際はユーザーIDなども入ったりするかとは思いますが、今回は省略します。
ルートディレクトリでコマンド

を実行するか
「app/database/migrations/」内に2013_12_08_000000_create_comments_table.phpを作成し、中身を下記のようにします。

作成が終わったら、コマンド画面に戻り

を実行し、テーブルを作成しましょう。

コントローラを作成する

次に「app/controllers/」に「CommentController.php」を作成し、下記をコピーして貼り付けて下さい。

モデルを作成する

「app/models」に「Comment.php」を作成します。

通常と違うのは「protected $softDelete = true;」を追加しているところでしょうか。
こちらをtrueにしておくと、deleteメソッドを使い簡単にソフトデリートを行う事が出来るようになります。
テーブルの作成でカラムを用意したのもそのためです。

ビューを作成する

「app/views」に「comment」というフォルダを作成し、その中に「list.blade.php」を作成し、下記の内容を入力します。

続いて同じフォルダに「add.blade.php」を作成し下記の内容を入力します。

ルーティングを編集する

最後にルーティングの編集です。
ルートディレクトリの「routes.php」に下記を追加します。

動作確認

ここまでは追加が終わったら、
「http://example.com/comment/list」へアクセスするとコメント一覧ページが表示されるかと思います。
同ページの「コメントを投稿する」リンクをクリックすると新しくコメントの投稿をしてみることが出来ます。
Akismetには直接関係はありませんがコメントが一覧に表示されている状態では、削除したり復旧させたりすることも出来るのでコメント投稿~削除・復旧の一連の流れも分かるかと思います。

その他便利なメソッド

今回は、スパム判定されたらソフトデリート状態にしてしまいましたが、Akismetの判定がいつも正しいとは限りません。
もし間違えてスパム判定されてしまった場合は、該当のコメント等を読みだしてから

を実行してあげることにより「これはスパムじゃない」ということを学習のために提出する事が出来るようです。

逆にスパムなのにスパムじゃない判定をされてしまった場合は

を実行することで「これはスパムです」ということを学習のために提出することが出来るようです。
ソフトデリートとは別に、Akismetのスパム判定用テーブルなどを用意してあげると便利かもしれませんね!

その他今回はコメント内容のみを判定に使用しましたが、Akismetで判定をする際に以下のメソッドを使用することが出来ます。

最後に

今回は説明のためにデザインなどもしていない簡単なコメント投稿フォームですが、名前など追加したり削除や復旧は管理人のみが出来るようにしたり自分の使いやすいように作ってみてくださいね!

あとでよむ / みんなにシェアする

このエントリーをはてなブックマークに追加
LINEで送る

コメントをする / みる

コメントを残す

コメントはまだありません。

検索する

カテゴリ一覧

タグ一覧

お知らせ アクセス解析 アプリケーション ゲーム サーバー スニペット プラグイン 動画 日記 Laravelパッケージ Laravel3 Laravel4 Tips Webサービス Webデザイン WordPress

最近投稿された記事

つぶやき

【GIGAZINE読者限定早い者勝ち】無料でDropbox・Googleドライブなどのクラウドを自由自在に同期・一括管理できる「まとめてクラウド」が先着5万人48時間だけゲット可能 - GIGAZINE gigazine.net/news/20151010-…

約2年前

離れていてもコミュニケーションが取りやすい便利なサービス「Remotty」 #remotty remotty.net

約2年前

RT @localdisk: メジャーどころがたくさん / 【セキュリティ ニュース】「WPTouch」など多数のWordPressプラグインに脆弱性(1ページ目 / 全1ページ):Security NEXT security-next.com/057930

約2年前

Javascript フレームワーク「Aurelia」aurelia.io

約2年前

dockerで起動済みのコンテナに対して何かしたい時は、docker exec -it コンテナ名 /bin/bashで入って実行したり、docker exec -it コンテナ名 supervisorctl restart nginxみたいな事も出来て便利。

約2年前

サーバー移転完了に伴いサイトの閲覧も可能な状態になりました。移転作業中にご訪問いただいた方には大変ご迷惑をおかけいたしました。今後このようなことがないよう気をつけて参ります。

約2年前

現在当サイトが閲覧出来ない状態となっております。こちらはサーバーの移転作業に遅れが生じているためとなっております。ご利用いただいている方にはご迷惑をおかけいたします。

約2年前

WordPress4.1.1(日本語版)が利用出来るようになりました wp.me/p4RkJY-Dj

約3年前

RT @keito_jp: Twitterをサマーウォーズ的に表示させるやつを製作中。遊んでみてね。 open.moo.jp http://t.co/gIgp5Gh6qW

約3年前

任天堂、YouTubeの広告収入を動画制作者とシェアする「Creators Program」サービス開始 | Game*Spark - 国内・海外ゲーム情報サイト s.gamespark.jp/article/2015/0…

約3年前

↑上へ戻る