1

ユーザーがHTMLフォームを介してエントリを追加できるゲストブックを作成しました。ゲストブックにデータを送信した後、一部のユーザーはページを更新します。私が知っているすべてのブラウザは、データを再送信します。その後。データを再送信しないようにブラウザに通知する方法はありますか?

以前は、データをデータベースに正常に保存した後、リダイレクトがありました。しかし、ここで、「「...」というタイトルのエントリをありがとう」や「エントリの一部が電子メールアドレスに送信されました...」などの追加情報をユーザーに提供したいと思います。転送後に情報を使用できるように、GET-Parametersにすべての値を追加することは避けたいと思います。

ユーザーが「更新」ボタンをクリックした後、ブラウザーがデータを再度送信しないようにする別の方法(転送なし!)はありますか?

4

3 に答える 3

3

投稿されたデータのハッシュを使用してセッション変数を設定し、ページが読み込まれるたびにそれを確認できるかもしれません。ハッシュが同じである場合、データはすでに送信されています。

<?php
session_start(); //Start the session

$dataHash = md5($_POST['name'].$_POST['comment'].$_POST['whatever']); //Get a hash of the submitted data

if(isset($_SESSION['gbHash']) && $_SESSION['gbHash'] == $dataHash) { //Check if the data has been submitted before
    //Do not save the data/show a warning message
} else {
    //Save the data/show a thank you message
}


$_SESSION['gbHash'] = $dataHash;
?>
于 2012-07-24T07:51:09.523 に答える
1

ユーザーが[更新]ボタンをクリックした後、ブラウザーがデータを再度送信しないようにする別の方法(転送なし!)はありますか?

はい-Ajax-それでも、すべての成功/失敗メッセージ、さらには検証を表示できます。

これを読んでください-http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

例:

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;  
//alert (dataString);return false;  
$.ajax({  
  type: "POST",  
  url: "bin/process.php",  
  data: dataString,  
  success: function() {  
    $('#contact_form').html("<div id='message'></div>");  
    $('#message').html("<h2>Contact Form Submitted!</h2>")  
    .append("<p>We will be in touch soon.</p>")  
    .hide()  
    .fadeIn(1500, function() {  
      $('#message').append("<img id='checkmark' src='images/check.png' />");  
    });  
  }  
});  
return false;  

お役に立てれば。

于 2012-07-24T08:11:36.253 に答える
0

たとえば、POSTアクションが実行された後、リダイレクト場所に添付されたカスタムメッセージを使用してユーザーをリダイレクトします。

header("location: http://www.website.com/thankyou.php?msg=email_sent");

また

header("location: http://www.website.com/thankyou.php?msg=email_not_sent");

また

header("location: http://www.website.com/thankyou.php?success=0");

次に、GETパラメータを切り替えて、対応するメッセージタイプを表示します。またはユーザーAJAXPOSTING:)

于 2012-07-24T07:57:34.427 に答える