こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

掲示板のあらし対策

プログラム初心者です

シンプルな掲示板を作ったのですが荒らし対策を付けたいと思いました

荒らし対策の作り方を教えてください

・IP規制
ipアドレスの取得はこんな感じでしょうか?
$ip = $_SERVER['REMOTE_ADDR'];


管理者側で拒否するipを複数指定しておいて、書き込みできないようにしたいです
$ip_no = array( 'ip1','ip2','ip3);


$ip_noの中に荒らしする投稿者ipがあるかどうか判定する方法はありますか?




もう一つ禁止ワードをチェックを付けたいです

・禁止ワード

$no_word = array( '禁止ワード1','禁止ワード2','禁止ワード3');


投稿者メッセ
$mes;

$mesの中に禁止ワードがあるか判定する方法はありますか?


もっといい方法があれば、お願いします

投稿日時 - 2013-12-29 17:13:59

QNo.8405485

暇なときに回答ください

質問者が選んだベストアンサー

strposは位置として「0」を返す可能性があるので、

strpos($mes, $word) !== false

で判定しなければなりません。マニュアルにも注意が書いてあります。
http://jp1.php.net/function.strpos

投稿日時 - 2013-12-31 14:12:11

お礼

回答ありがとうございます
動きました!

投稿日時 - 2013-12-31 15:43:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

in_array
http://www.php.net/manual/ja/function.in-array.php

strpos
http://www.php.net/manual/ja/function.strpos.php

前者は普通にin_array、後者はstrpos+foreachループでどうぞ。正規表現を使ってループを排除するという手もありますが、現実的には実行速度はどちらも同じぐらいなので。

投稿日時 - 2013-12-29 23:24:12

お礼

ipははじけるようになりました。ありがとうございます

禁止ワードが思ったように動いてくれませんでした。どこがいけないのでしょうか?

$mes = $_POST['mes'];
$no_word = array('禁止ワード','禁止ワード2');//禁止ワード
foreach($no_word as $word){
if (strpos($mes, $word)) {
throw new Exception('no_word');
}
}

投稿日時 - 2013-12-31 01:08:32

あなたにオススメの質問