2024年のうちにやっておきたいこと、ここで宣言しませんか?

プログラム初心者です

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

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

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


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


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




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

・禁止ワード

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


投稿者メッセ
$mes;

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


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

A 回答 (2件)

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



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

で判定しなければなりません。マニュアルにも注意が書いてあります。
http://jp1.php.net/function.strpos
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/12/31 15:43

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ループでどうぞ。正規表現を使ってループを排除するという手もありますが、現実的には実行速度はどちらも同じぐらいなので。
    • good
    • 0
この回答へのお礼

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報