• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのメールフォーム 同一IPからの連続送信禁止)

PHPのメールフォーム 同一IPからの連続送信禁止

このQ&Aのポイント
  • PHPのメールフォームで同一IPからの連続送信を禁止する方法について教えてください。
  • セキュリティ対策のため、同じIPからの連続送信を禁止する機能を実装したいです。
  • 現在、PHPのメールフォームを作成中で、同一IPからの連続送信を制限する方法がわかりません。どなたか教えていただけませんか?

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

  • ベストアンサー
  • 1minn
  • ベストアンサー率57% (52/90)
回答No.2

#1です PHPではSESSIONが切れる状態はiniファイルの設定に依存します。 また、session.cache_expireなどを使ってキャッシュの有効期限を変えてやることも可能です。 デフォルトであれば通常はブラウザを閉じたらSESSIONは破棄されます。 一定期間、cookieにSESSION IDを保持しておけばブラウザを閉じても、PCの電源を落としても再びそのページを開けばSESSIONは再開(保持していた値を参照)出来ます。 で、単純にPHPのSESSIONとクライアントのIPとは無関係です。 一般家庭で利用するような可変のIPであれば、多くの場合はルータに依存します。 ルータ側の設定によって、PCとの接続がきれた時点で現在使用してるIPを手放せば恐らく次回インターネットにつないだタイミングでIPは変わると思います。 変わるといっても一定の範囲内なので、たまたま同じIPと言う事もありえます。 そこら辺は契約している会社にも依存するので何とも言えないです。 なので、利用する個々のユーザーによってIPが変わるタイミングもまちまちです。 SESSIONが切れるタイミングでIPが変わる可能性があるのは、ブラウザを閉じた段階で 「通信切断」→「ルータ側でキャッシュクリア」→「次回接続時に再度IP取得」のようなパターンがありそうな気がしたので書いてみました。 (検証などはした事もないですので、勝手な想像です) ルーターも一般家庭で使う数千円から業務用の数万、数十万のものまでピンキリです。 それなりにいいやつはいろんな設定も出来ますので、あり得ない話ではないかな~ ってところです。 普通の家庭で無駄に高機能なルーター使う人も稀でしょうけど・・・

okfish
質問者

お礼

なるほど。 とても勉強になりました。 詳しい情報ありがとうございます。 とりえあえずはIPで判別しての制限は意味なさそうですね。 本当にいろいろありがとうございました。 もし、IP判別とは別に、連続送信の防御策などご存知でしたら 教えていただけると助かります。

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

その他の回答 (1)

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.1

同一IPでの制限は難しい(というかあまり意味がない)ように思います。 たいがいの一般契約はIPが可変でしょうから、SESSIONを切ればいくらでもIPは変わります。 もしかしたらネット自体の接続を切れば変るのかな?ルーター再起動? まぁそんな感じなので、それほど意味はないですよ。やたらといやがらせする人が固定IPなら有効かもしれませんが。 一応やるなら、この程度であればファイルにIPのリストを書き込んでおいて、アクセスがあった時にファイルを読み込んで比較とか? // 書き込み $logfile = fopen($logfilename, "a"); fwrite($logfile, "IPアドレス\n"); fclose($logfile); // 取得~比較 $fileArray = file('ファイルパス'); foreach ( $fileArray as $v ) { if ( $v === $_SERVER['REMOTE_ADDR'] ) { echo '一致'; } } すんごい雑ですが・・・ 時間やら回数も考慮したいならファイルにアクセス日時書き込んで、ループでカウンタつければよいかと思います。

okfish
質問者

お礼

ご回答ありがとうございます。 また、サンプルコードもありがとうございます。 大変参考になります。 あと、1minnさんの言うとおり IPが可変なら確かに意味がないですよね。 そのあたりまったく考えていませんでした。 私も勉強不足であやふやなところがあるんですが、 セッションが切れると(一回メールフォームから送信完了すると)、 IPも変わってしまうのでしょうか? インターネットへの接続を「切断」→「再接続」しないと IPは変わらないような気がするのですが、いかがでしょう?

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

関連するQ&A