2011-07-14 2 views
0

私は、送信時に別のページに情報を送信し、そのページがデータを処理してデータベースに追加する通常のHTMLフォームを作成しました。しかし何らかの理由で、フォームが入っている最初のページをリフレッシュすると、その理由がわかりませんが、データベースにエントリが作成されています。フォームは送信されますが、方法や理由はわかりません。

これは、フォームのコードです:

<?php $owner = $_GET['user']; ?> 

    <h2 class="dotted"><?php _e('Add feedback for user','appthemes'); echo " - ".$owner;?></h2> 

     <form id='feedback' action='http://www.example.co.uk/add-feedback-response/?user=<?php echo $owner; ?>' method='POST' accept-charset='UTF-8'> 
     <fieldset > 

     <b>Your Username:</b> <?php echo $current_user->user_login; ?><br/><br/> 

     <b>Rating: </b> 
     <input type="radio" name="rating" value="positive" /> Positive 
     <input type="radio" name="rating" value="neutral" /> Neutral 
     <input type="radio" name="rating" value="negative" /> Negative<br/><br/> 

     <label for='item' ><b>Item bought:</b></label> 
     <input type="text" name='item' id='item' maxlength="500"/><br/><br/> 

     <label for='comment' ><b>Comment:</b></label> 
     <textarea name='comment' id='comment' maxlength="2500"></textarea><br/><br/> 

     <input type="submit" id="submit-button" value="Submit Feedback" /> 

     </fieldset> 
     </form> 

は、私が欠けているものはありますか?助けをありがとう

+0

あなたがフォームを処理したら、リダイレクトするためにheader( "location:...")を使用してください。ダブルエントリーはありません – Ibu

+0

あなたは '$ _GET'から入力してページに直接注入しますか?ハローXSS攻撃 – Quentin

+0

データをPOSTしたページを再表示すると、これらのPOSTデータが再送信されます。 –

答えて

1

これはおそらく、フォームを再送信しようとしているためです。ブラウザから再度データを送信していることを警告していますか?

一度提出した後にフォームを更新すると、フォームが再び提出される予定で、フォーム

+0

ハイ・ジェネシスは、ブラウザはデータが再送信されることを私に警告しない - 私はPCを再起動し、Firefoxのフォーム履歴などもクリアしたが、もの。 Chromeでページを開くと正しく動作します。私はヘッダーを追加しました( "Loca ....コードとそれは何も変更されていません。ありがとう、ダニエル –

0

をproccessingに

header("Location: ".$_SERVER['HTTP_REFERER']); 

を使用し、これを制限します。 (ブラウザはあなたに「あなたは本当にあなたはページを再度提出しますか?」と警告したでしょうか?)リフレッシュは実際には「最後のリクエストを繰り返す」ことです。

ウェブアプリケーションでこのようなシナリオが考えられる場合は、重複した要求を処理する必要があります。

関連する問題