メールフォームの重複送信制限の方法

このQ&Aのポイント
  • メールフォームでの重複送信を制限する方法について教えてください。PHP4を使用しているため、クッキーやJavascriptなどを利用せずに実現したいです。また、一般的な処理だけですむ方法を教えてください。
  • 初心者ですので、メールフォームでの重複送信を制限する方法について検索しても具体的な方法が見つからず、困っています。一般的な処理で、悪意のあるメールの重複送信に対処する方法について教えてください。
  • メールフォームで同じパソコンからの重複送信を制限する方法について教えてください。1日内に同じPCから10回までの送信を許可し、日が変わるとリセットされるような処理を実現したいです。一般的な方法で実現可能な処理について教えてください。
回答を見る
  • ベストアンサー

メールフォームの重複送信の制限の処理を教えてください。

メールフォームをPHP4で作成している最中なのですが、最後に、メールフォームで同じパソコンから何度も送信ボタンをクリックして、メールを送信されないようにしたいと思っています。 ですが、初心者のため、良い方法が思いつかず、検索してもピンとくるものがなく、煮詰まっています。(クッキーやJavascriptなどを利用せずにできないものかと・・・) 1日のうち同じPCから10回まで続けて送信OK、日付が変われば、送信できるようになるというような処理が出来ないものか考えています。 上記のような処理に限らず、悪意のあるメールの重複送信に対して行う、PHPのスクリプトだけですむ、一般的な処理について教えていただければうれしいです。よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

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

「同じPCから」という条件だとCookieを使わないと仕方ないでしょう。「同じIPアドレスから」となると誤爆(間違って同一と判断してしまう)が心配です。HTTPリクエストから取り出せる内容は限られています。 あとメールフォームからPOSTされた内容全部がひとつ前のPOSTとまったく同一だったら弾く・・という手もあります。いたずら目的にはそこそこ有効です。

tetsufaq
質問者

お礼

ご回答ありがとうございます。確かに同じPCからだと無理そうですね。 色々検討しましたが、いただいたアイディアと同じように送信内容の重複しか思いつきませんでした。有効ということですし、前向きに作ってみます。(簡単なCookieも採用することにします)

関連するQ&A

  • javascriptと連携したフォーム送信

    フォーム送信(メールフォーム)に関する質問です。 フォームの入力チェックをJavascirptのバリデータライブラリで行い 送信だけPHPを使用するというタイプのメールフォーム作成を考えています。 必須入力、正規表現によるチェックなどをJavascript側でやるので ・PHPではPOSTされた値を受け取って、htmlspecialchars・mb_ereg_replaceあたりで変換した後メール関数に渡す。値がなければエラー これでいいんじゃないかと思うのですが、甘いでしょうか? javascriptの無効状態による送信は、 ・Javascriptでhiddenかクッキーを出して、有効無効を判断 (hiddenのvalueかクッキーがPHPで受け取れなければJavascript無効状態での送信としてエラー) を考えています。 ご意見よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームからメール送信

    いつも参考にさせて頂いています。 現在メールフォームを作っていまして、Javascriptで作成したフォームからphpで作った確認画面へ遷移(form action=...phpにて)し、確認画面の送信ボタンをクリックした時点で指定したメールアドレスへ内容を送信 という流れで考えています。post変数をphpで受け取って確認画面を表示するところまではいいのですが、確認画面の内容をメールアドレスに送信するにはどうしたらいいのでしょうか? まだまだ初心者ですので噛み砕いて説明頂けば幸いです。 どうか宜しくお願いします

    • ベストアンサー
    • PHP
  • フォームの送信ボタンが押されたときの処理について

    (1).phpファイルにおいて、下記のようなフォームを作成したときに、 JavaScriptの、onSubmitイベントで、PHPの$pushsubumit 変数に 1を代入したいのですが、echo()した結果、代入されていません。 やはり、JavaScriptの文のなかでPHPスクリプトは通用しないのでしょうか? どのようにすれば、送信ボタンを押したという、PHPの$pushsubmitフラグを 1にできるのでしょうか。 (2)ちなみに、JavaScriptのテキストでは、return 1; という表現を用いていますが、 この戻り値はどこでどうやって受けるのでしょうか。 (3)例えば、onSubmit="var pushsubmit; pushsubmit=1;"などと書いたとして、 このpushsubmit=1をPHPスクリプト側でどうやって受ければいいのかがわかりません。 どうぞよろしくお願いします。 --------------------------------------------------------------------------- (1)<form name="form1" method="post" action="bbs.php" onSubmit="showdlgbox(); <?php $pushsubmit=1 ?>"> <?php ~ ?> (2)<form name="form1" method="post" action="bbs.php" onSubmit="showdlgbox(); return 1;">

    • ベストアンサー
    • PHP
  • フォームメール送信時のアラートについて

    HTMLとJavaScriptで作ったフォームメールで、送信ボタンをクリックすると、 ブラウザから ------------------------------- このフォームは電子メールを使用して送信されています。 このフォームを送信すると、電子メールアドレスが受信者に公開され、 フォームのデータが暗号化されずに送信されます。 この送信は続行できますが、取り消すこともできます。 [ OK ] [キャンセル] ------------------------------- というメッセージが表示されます。 このメッセージを表示させなくする方法はないのでしょうか?

    • ベストアンサー
    • HTML
  • メールフォームの送信ボタンが表示されないのはなぜ?

    ホームページにHTML、JAVA SCRIPTでメールフォームを設置しています。 このフォームを使おうとした人から"送信"ボタンが表示されませんと質問が来ました。ですが、私のPC環境で見てもそのような現象は確認できず、他の人も正常に表示されているようです。(メールフォームを使ったメールが届くので) 送信ボタンはフォームの一番下に以下のように記述しています。 <input type="button" onClick="javascript:_Submit()" value="送信"> メールフォームはベースとなるページから、新しくウィンドウが開くなるようにしてあり、scrollbarsは出るようにしてあります。 使う人のブラウザに影響されてしまうのでしょうか?

    • ベストアンサー
    • HTML
  • メール送信フォーム:SBは送信できるがdocomoは×、何故?

    PHPのメールフォームを使っています。 さくらインターネットレンタルサーバ上にアップして利用しています。 PCから、このメールフォームで、もちろん送信可能です。 SoftBankからでも、送信可能です。 しかし、肝心のdocomoから何故か送信ができません。 (ちなみに、auは手元に持っていないため、テストできていません) メールフォームに項目を入れ、[送信]ボタンでsubmitするタイプですが、 SoftBankは、submit後、送信完了ページに飛び、送信内容もちゃんと送信されます。 しかし、docomoは、[送信]ボタンを押すと、“指定サイトがみつかりません(404)”とメッセージがでるだけで、内容も送信されず、送信完了ページにも移動しません。 docomoでは使用できない、PHPの命令でもあるのでしょうか? PHP内で主に使用されているのは、 配列変数 global 変数 function switch for if~else foreach echo print <<<END・・・END;を用いたHTML記述などです。 PHP内部で、Javascriptは用いていません。 PC上ですでに使ってしまっているメールフォームなので、いまさら他のメールフォームを利用したくないのです。 何とかdocomoで実現したいので、どなたかわかる方がいましたら、お教えください。 よろしくお願いします。m(_"_)m

    • 締切済み
    • PHP
  • フォーム送信後の画面について教えて下さい!!

    送信先にmailtoを使用してフォームを作っています。 (諸事情のため、cgiを絡ませることができません) 現在、送信ボタンをクリックした後に、 アラートで、 「このフォームは電子メールを使用して送信されています」云々・・・ OK、キャンセルになっています。 OKと選択した後、画面がフォームのままになってしまっています。 希望は、OKを選択した後に、 「ありがとうございました」等のメッセージを表示して、 画面を指定したファイルに戻したいのですが、 どうすればこのような事ができますか? javascriptを使用すればいいのでしょうか? javascriptは全くわからないので、 できれば、ソースごと教えて頂けると嬉しいです。 宜しくお願いします!!

    • ベストアンサー
    • HTML
  • フォームからメールで送信

    ホームページビルダーを使ってフォームから送信ボタンをクリックして 私のメールへ送信されるよう次の操作を行いました。 まず送信ボタンを設定するため、挿入→フォームと入力部品→プッシュボタン→送信ボタン→属性ダイアログボックスが表示されプッシュボタンタブのボタンに表示するラベルに送信すると入力→OK(送信ボタンを設定しました) フォームを私のメールに送信するために次の操作をしました。 フォーム内を右クリック→属性の変更→属性ダイアログボックスが表示されフォームタブのアクションに私のメールアドレスを入力してメソッドからPostを選択エンコードの種類からtext/plainを選択→OK→プレビューにして送信ボタンをクリックしましたがその後表示されるはずの確認メッセージが表示されず、メールも送信されていません。 何か操作がおかしいんでしょうか? 解答宜しくお願いします。 ホームページビルダー11使用

  • PHPによるメールフォームの作り方

    今までメールフォーム制作する際、次のような構成で行っておりました。 1.contact.html・・・入力画面 2.contact.php・・・確認画面 3.mail.php・・・入力内容をメールに送信するプログラム 最後にjavascriptでダイアログを表示し「送信ありがとうございました」でOKを押すとトップに戻ります。しかしながら、2.の次に「ありがとうございました」というページを表示し、そこの中のOKを押すとトップに戻るようにしたいと思っております。その際、ファイルの構成はどのようになりますでしょうか?また、記述方法をご教授頂けますと幸いです。ちなみに現在「~有難う御座いました」はjavascriptのダイアログで表示してますが、2.の最後尾に echo(" <script>alert('送信ありがとうございました') location.href='index.html'; </script> "); のように記述しています。これを、htmlまたはphpのthank you画面で表示したく、今回有識者の方々にご質問させて頂きました。ご教授のほどよろしくお願い致します。

    • ベストアンサー
    • PHP
  • メール送信フォームで重複避ける

    相互リンクでアクセスアップなどのサイトにおいて http://www2.airnet.ne.jp/bolt/link/cgi-bin/link/linklinklink.cgi メール送信フォームがありますが、 複数の人に個別に送る必要があります。 そのつど同じことを書くのは効率が悪いので 何とかしたいのですが、 手間の重複を避けるためには どうしたらいいんでしょうか? よろしくおねがいします。

専門家に質問してみよう