質問
PHPでheader関数を用いて、画面遷移を実行した処理が記録されているのですが、アクセスログにはGETログが存在しませんでした。
どういったことが原因としてありますでしょうか?
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
コード
PHP
1//確認画面(confirm.html(PHP)) 2 3if (前画面の入力データ不足チェック){ 4 エラー画面遷移 5} 6 7// 次画面遷移処理 8$next = filter_input(INPUT_POST, "next"); 9if (isset($next)) { 10 登録API実行 11 登録メール送信 12 13 $path = "thanks.html" 14 if (UAのスマートフォンチェック){ 15 $path = "sp/".$path; 16 } 17 logsave('REDIRECT','TO:'.$path); 18 header("Location: " . SITE_URL . $path); // SITE_URLは"https://ドメイン/" 19} 20 21前画面入力データの表示設定処理
完了画面については、ほぼ静的画面になります。
詳細
当初質問に至った経緯(動作)については以下になります。
画面 ・確認画面 ・完了画面 理想動作(処理) 確認画面 実行ボタン(submit)押下 ・登録APIを実行 ・完了画面にheader関数で遷移実行 完了画面 ページ表示 障害 登録APIが2度実行している アクセスログ調査結果 POST 確認画面 GET 確認画面 ←本来"GET 完了画面"になる想定。 上のPOSTとは1分程度の時間差がありました。 POST 確認画面 GET 完了画面 処理ログ調査結果 header関数実行の1行前の処理で、完了画面へのheader関数実行の旨が記録されている。 最初の"POST 確認画面"後にも、その記録はされており、header関数を実行したのは間違いない認識。
調査結果から現在の考察結果
タイムアウトや読み込みが終わらないなどの現象があったのでは無いかと考えております。
アクセスログ調査結果の2行目に、"GET 完了画面"が出なかったのは、読み込み待ちやタイムアウトなどを予想しております。
待ちきれず、またはタイムアウトし、ブラウザなどの戻るボタンで、一度確認画面に戻り、再度実行ボタンを押下したことで、2度の"POST 確認画面"で、登録APIが2度実行されたのでは無いかと考えています。
回答1件
あなたの回答
tips
プレビュー