お世話になっております。
現在、旅行の予約サイトを運営しています。
個人情報の入力:input.html
確認:confim.php
完了:thanks.php
と遷移します。
confim.phpには末尾にランダムの数字を割り振っております。
SESSIONを使用し、ブラウザバックを禁止しております。
検証端末では、タブの複製やURLのコピーをしても入力情報は消えます。
例)https://www.XXX.com/confirm.php?rand_str=ABC123456
しかし、連日同じメールが何度も届くことがあります。
ブラウザの更新をしても送信されない仕様なので、ページを開きなおしたわけでもなさそうです。
(そもそもthanks.phpから数秒後にトップページに遷移される)
メール送信判定:confirm.php
confirm.php
1// メール取得済み&ここまででエラーがなければメール送信フラグ取得 2// confirmページから下記Valueが渡されていたらメール送信処理へ進んでよい。 3if (empty($error_msg) && !empty($post_mail)) { 4 if (!empty($_POST['HiddenMailSendOK']) && $_POST['HiddenMailSendOK'] === "mail_is_ok") { 5 $sendmail = 1; 6 }
動的URL生成:input.php
input.php
1 // 規定の組み合わせからランダムな文字列を返却 2 function getRndStr() { 3 var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 4 var len = 8; 5 var ret = ""; 6 for (var i = 0; i < len; i++) { 7 ret += str.charAt(Math.floor(Math.random() * str.length)); 8 } 9 return ret; 10 } 11 // submitボタン処理 12 function sendConfirm() { 13 if (checkRequire() !== true) { 14 return false; 15 } 16 17 // 飛び先キャッシュ回避 18 document.main_form.action = "confirm.php?rand_str=" + getRndStr(); 19 20 return true; 21 }
原因の切り分けを行いたいのですが、テスト環境では再現できず。
confirm.php?rand_str=ABC123456を複数回開くにはどういった動作が必要でしょうか?
回答2件
あなたの回答
tips
プレビュー