• ベストアンサー

連続投稿対策

掲示板などの書き込むタイプのphpを製作しているのですが、 連続投稿を防止しようとしたところで、困ってしまいました。 time関数を使って禁止するのか、 IPを判別して弾くのはどちらがポピュラーなのでしょうか。 作成したphpは、送信されてきたものをfopen関数とfwrite関数を使って、 テキストファイルに書き込みをするというものなのですが、 どうにも困り果てました。 どなたか詳しい方、教えていただければ幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

どう困っているのかがちょっとわかりませんが・・凝り始めるといくらでも凝ってしまえる部分なので、どの程度であればOKかは設置環境ごとの判断でしょう。 とりあえず同一IPかつ同一UserAgentからのPOSTが連続した場合には一定時間(1分とか)経過していなければメッセージ表示して受け付けない・・くらいでいいのでは?これならファイルにIP、UserAgent、POST時刻だけ書き込んでおけばチェック可能ですよね?

samot
質問者

お礼

ご回答ありがとうございました。 試してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • fopen()関数を使用し、最後から二行目に保存する

    こんにちは。 PHPで、データをfopen()関数を使用し、 <?php ・ ・(途中略) ・ ?> のうちの、?>の一つ上の行にデータを保存したいのですが、 可能ですか? 要は、ここです。 <?php ・ ・ ・ $data = "●●"; // ←ここ ?> 今のところ、最後の行に保存する方法しか知らないので・・・。 $dataopen = fopen ("./data.php", "a"); fwrite ($dataopen, "$data = $_POST["data"];"); fwrite ($dataopen, "\n"); fclose ($dataopen); どうか、ご教授くだされば幸いです。

    • 締切済み
    • PHP
  • 掲示板の連続レスは幾つ位から注意するもの?

    キャスフィと言う掲示板で 規約に過激なアゲ行為は禁止事項になっているのですが 1時間以内に20レス以上連続(ほかの書き込みは無い) を注意して逆切れされたんですけど 今後も注意はしたほうがいいですか?

  • IP/ホスト連続投稿チェック機能が上手く行かない。

    なんでだろ?? ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> ホスト取得処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub get_HostAgent { $Host = $ENV{'REMOTE_HOST'}; $Addr = $ENV{'REMOTE_ADDR'}; if ($Host eq '') { $Host = $Addr; } if ($Host eq $Addr) { $Host = gethostbyaddr(pack('C4',split(/\./,$Host)),2) || $Addr; } $H_A = "$Host"; } ホスト取得ルーチンにある変数で、 いろんな掲示板の中のP/ホスト連続投稿チェック機能だけ抜き出して、 もう何十個も試したけれど、上手くいきません。 カスタマイズしてる会員掲示板に、 IP/ホスト連続投稿チェック機能を付けたいのですが上手くいきません。 二重投稿チェックはあるのですが、、 ↓↓↓ #--二重投稿チェック--# if ($r1 eq "$name" && $r4 eq "$street<>$title" && $r5 eq "$comment") { &lock2; &error("二重投稿は禁止です"); } より極めるために、以下を利用したいのです。。 ↓↓↓ #--IP/ホスト連続投稿チェック--# if ($Addr = $ENV{'REMOTE_ADDR'} && $^T - $time < 120) { &lock2; &error("連続投稿はできません。<BR>時間をおいてから書き込みして下さい");} 宜しくお願い致します。 どこがおかしいのかサッパリです。 なんとか機能を追加できるようにお願いしますろ

    • 締切済み
    • CGI
  • 投稿番号、投稿削除と投稿修正機能

    こんにちわ。今、PHPのみで掲示板の機能の一つである、投稿番号(投稿記事に番号をふりたい)と投稿者自身が投稿を削除する(削除キーを使用して8文字以内とかにしようかと)機能と投稿者が投稿を修正できる機能を作成したいと思っているのですが、なにか簡単な例でいいですので記述していただけないでしょうか?削除キーはテキストボックスで作りました。webのサンプルソースをみても組み込めないでいます。だいぶ、省略していますが、下記のようになスクリプトを組んでいます。 // ファイル書き込み  $file = fopen("data.txt", "w"); fwrite($file, "$name\t$mail\t$body\t$dt\n".implode("", $data)); $i = 1; foreach ($data as $value) { if($i < 100) { fwrite($file, "$value"); $i++; } } fclose($file); header("Location:subject03-02.php"); exit; } //投稿表示 $data = file("data.txt"); $i = 1; foreach($data as $value){ $view = explode("\t", $value); list($name, $mail, $body, $dt) = explode("\t",$value); if( $i < 11 ){ if($mail== ""){ echo "お名前:$view[0]$view[3]<br>"; echo "本文:$view[2]<br>"; echo '<hr size="1" width="80%"><br>'; } else { echo "お名前:<a href=\"mailto:$mail\">$view[0]</a>$view[3]<br>"; echo "本文:$view[2]<br>"; echo '<hr size="1" width="80%"><br>'; } } $i++; }

    • ベストアンサー
    • PHP
  • 二重投稿防止処理

    PHPの掲示板を作成しています。 現在リロードや連続で送信ボタンを押された際の二重投稿防止処理を作っているのですが、どうしてもうまくいきません。 ログで最新に書かれた記事を呼び出し、送信されたデータと比較し、名前とコメントが一緒であれば二重投稿という扱いにするつもりなのですが、 改行があるとうまくいかないようなのです。 str_replaceを使って<br>タグを削除したり、 \r\nや\rを\nに統一させたり、 両方にtrimを使用してみたりしたのですが、 ソースを見るとフォームで送られてくるコメントのみ、どうしても改行されたままなんです。 これは一体何が原因なのでしょうか? どうしたら改行を含んだデータを比較することができますか?

    • ベストアンサー
    • PHP
  • NGワード設定もしくはテキストファイルから指定の言葉の行を削除する方法がありましたら…

    只今、PHPでシステムをつくる課題に取り組んでます。 初心者でphpはほとんど分からず、あいまいな質問かもしれませんが回答よろしくお願いします。 簡単な掲示板の作成、ということで掲示板を作っている最中であります。 ■禁止ワードをphpで設定。 ■もしくは書き込んだテキストファイルから、NGワードがある行を削除する。 という方法をさがしてます。 トップ画面から、投稿ボタン(submit)で→書き込む画面へと移り、テキストファイルに書き込み→トップ画面に戻り、テキストファイルの読み込み を行います。 NGワード設定やテキストファイル削除等色々試してみたのですが、うまく作動しません。 分かる方いましたら、よろしければどこにどのようにすればいいのか教えていただけないでしょうか?? 書き込み画面↓↓のソースの一部です。 <p><a href="keiji.php">スレッドに戻る</a></p> <?php $zikoku = date( "Y/m/j H:i:s " ); $youbi = date("D"); $no_word[] = "/死ね/"; $fp = fopen("keijiban.txt", "a+"); flock($fp, LOCK_EX); fwrite($fp, "<p><table> <tr> <td>名前 </td><td>".$_POST['name']."</td> <td> 送信日</td><td>$zikoku($youbi)</td> </tr> <tr><td>".$_POST['comment']."</td> </tr> </table></p>"); if (is_array($no_word)) { foreach(&no_word as $ng){ if(ereg($ng, $_POST['comment']))return FALSE; }} return TRUE; flock($fp, LOCK_UN); fclose($fp); ?> $no_word[]がNGワードだとしています。 もちろん他にも付け加えていきたいです。

    • 締切済み
    • PHP
  • PHPのfrrite関数

    お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

    • 締切済み
    • PHP
  • 荒らし対策付き掲示板CGI

    荒らし対策のついた掲示板CGIを探しています。 ・投稿禁止ワードが設定できる ・画面にランダムで表示される「確認キー」を入れないと投稿できない 等の対策がついたCGIをご存知ないでしょうか? よろしくお願いします。 *特定の人間の書き込みではなく、ロボットと思われるものがムチャクチャ連続で投稿してくるのを防ぎたいのです。

  • phpでの二重投稿防止について

    お世話になります。 php5にて二重投稿防止のスクリプトを考えておりますが、 なかなか良いものが浮かばず、検索でも見つけられないため質問します。 制作仕様としては、 1つのindex.phpの中に一言コメントを付けて送信するものなのですが、(twitterのような感じ) 更新ボタンを押すと「再送信~」というダイアログが出てしまいます。 別に確認ページや完了ページ等を設ければ、$_SESSIONやheader関数で解決するのですが、 どうしても同一ページ(index.php)内で全てを処理したいのです、何か方法があるのでしょうか? お手隙の方、ヒントをよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 無料レンタルCGIの掲示板

    ご閲覧有難うございます。 登録した会員に掲示板に新しい書き込みがきたらメールで知らせる機能があるレンタルCGIの掲示板はありますでしょうか? 荒らし防止の為連続投稿規制、禁止ワード機能があればありがたいです。 http://www.cgiboy.com/ このような所で探しましたが管理人のみにメールを送るのはあるようです。 無いようでしたら「無い」、又は似たような物をご教授いただければポイントとさせていただきます。 どうぞよろしくお願い致します。