No.3ベストアンサー
- 回答日時:
こんにちは。
次の方法はいかがでしょうか?
1.入力画面で埋め込んだ重複しない文字列を処理チェック用文字列として保持する。
2.完了画面に移動した時に、セッションに保持した処理チェック用文字とリクエストの処理チェック用文字が一致しなければ登録処理を行う。
3.登録処理後に、その文字列をセッションに保持する。
以下は、その実装サンプルです。ご覧ください。
<PHPファイル1>
1.入力画面表示
2.PHPで登録処理チェック用の非表示データ埋め込みを行う。
3.JavaScriptでボタン2度押し防止処理を実装する。
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>q7810942-Input</title>
<script type="text/javascript">
function onSubmit() {
document.forms[0].action = "q7810942-02.php";
document.forms[0].submit();
document.getElementById("go").disabled = true;
return true;
}
</script>
</head>
<body>
<h3>Input Page</h3>
<form action="javascript:onSubmit();">
<input type="hidden" name="token" value="<?php echo(date("YmdHis")); ?>" />
<input type="submit" id="go" />
</form>
</body>
</html>
<PHPファイル2>
1.データ登録処理
2.完了画面表示
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>q7810942-02</title>
</head>
<body>
<h3>Complete Page</h3>
<?php
session_start();
echo("REQUEST: ".$_REQUEST["token"]."<br>");
echo("SESSION: ");
if (isset($_SESSION["token"])) {
echo($_SESSION["token"]);
}
echo("<br>");
if (!isset($_SESSION["token"]) || $_REQUEST["token"] != $_SESSION["token"]) {
// DBインサート処理
echo("DBインサート処理実行<br>");
$_SESSION["token"] = $_REQUEST["token"];
}
?>
</body>
</html>
No.2
- 回答日時:
1さんの言うようにajaxで書き込み行いページ移動をしない方法、
あるいは簡単な方法としてインサート後 location.replace で履歴を上書きして他のページを出力してしまう方法、
などです。
<?php
インサート処理
?>
<html>
<head>
<script language="javascript">
<!--
location.replace('finish.html');
//-->
</script>
</head>
<body>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- ノートパソコン DELLノートがスリープから復帰しない 5 2022/09/01 20:08
- Excel(エクセル) マクロで作った ワードエクセル かけ線や コピペなど 修正や色々な方法を教えてください 2 2023/07/07 22:27
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- その他(お金・保険・資産運用) disney+の支払いはギフトカードを買ってするようにしてて、今日、支払おうと(更新する)を押したら 3 2022/11/01 18:48
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Android(アンドロイド) スマホ chromeの戻るボタンが機能しにくい スマホ(OPPO reno5A、Android12) 1 2022/09/11 20:39
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
PHP postgres でロールバック...
-
PHPの複数関数非同期実行方法を...
-
DBへの書き込みとメール送信を...
-
入れ子になっているHTMLタグも...
-
◆バックエンド処理の終了を知り...
-
関数の前にアットマークが付く場合
-
symfonyのCriteriaで実行すると...
-
Cronで同じ処理を複数同時に実...
-
onedrive にexcelファイルをア...
-
VBSの「MsgBox」について
-
こちらはただの直列処理ですか?
-
複数ファイルを連続でダウンロード
-
パースエラーとは?
-
リンク先を隠す方法はないでし...
-
拡張子php画像をjpg画像等に変...
-
図に示す階層構造で,現在のデ...
-
C# Excelファイルへの画像挿入。
-
PHPとCSVで簡易データベースな...
-
Subversionで、ファイルをリネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
インスタンス化に伴うメモリ消...
-
3の倍数の和
-
phpの処理中に画面表示ををする...
-
Smartyにて、文字検索
-
VBAからPHPを実行(キック)したい
-
PHPで偶数と奇数を判断するには
-
Cronで同じ処理を複数同時に実...
-
PHPExcel処理速度が遅い
-
PHP内、ボタン押下と同時にリロ...
-
タイムアウト処理?となる
-
DBへの書き込みとメール送信を...
-
プログラム内で処理中断後も継...
-
関数の前にアットマークが付く場合
-
PHPによるSQL文の中にPHP処理を...
-
アクセスクライアントごとにタ...
-
PHPが処理を途中でやめる。原因...
-
リンクのラベルを取得したい
-
PHP postgres でロールバック...
-
phpからjavascriptの関数呼び出し
おすすめ情報