2

登録ページを作成しようとしていますが、データの保存時に問題が発生しています。
登録に成功すると、データベースに保存されます。
しかし、もう一度リロードすると、入力した同じ古いデータがデータベースに自動的に保存されます。
この問題を解決するには?

私の単純なphpコードは次のようになります

if (empty($fname)) {
    echo '';
} else {
    $success = ("
        INSERT INTO customer
            (FName, LName, Email, Password, MobileNum, PostalCode)
        VALUES
            ('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')
    ");
    mysql_query($success);
    echo 'success';
}
?>
4

3 に答える 3

4

データを「保存」するときに HTTP POST リクエストを使用していると仮定すると、ページの再読み込みによって同じデータの再 POST が行われないようにする最も簡単な方法は、ページの最後でリダイレクトを行うことです。あなたのスクリプト。

echo 'success'する代わりにHeader("Location: ?")

そうすれば、ブラウザーは POST の直後に GET を実行します。ユーザーが結果のページを更新すると、GET を再リクエストするだけです。(または、キャッシングが行われている場合は何もしません)。

于 2013-09-02T04:44:44.457 に答える
0

挿入する前にデータベースをチェックインできます...

if(empty($fname)){
    echo '';
}else{
    $sql = "SELECT * FROM customer WHERE FName='$fname'";
    $result = mysql_query($sql);
    $numRows = mysql_num_rows($result);
    if($numRows==0) {
        $success=("INSERT INTO customer (FName, LName, Email, Password, MobileNum, PostalCode) VALUES ('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')");
        mysql_query($success);
        echo 'success';
    } else {
        echo "Already exists";  
    }
}
于 2013-09-02T04:54:33.683 に答える
0

成功したら、$_POST の設定を解除できます。echo または html を含む出力がある場合は、ヘッダーを使用して別のページにリダイレクトできます。

if (empty($fname)) {
    //   echo '';
} else {
    $success = ("INSERT INTO customer (FName, LName, Email, Password, MobileNum, PostalCode) VALUES ('$fname','$lname', '$email', '$password', '$mobilenumber','$postalcode')");
    mysql_query($success);
    unset($_POST);
    header('Location: http://www.example.com/successPage.php')
    /** if you don't able to use header, you may echo a javascrript redirect
      echo '<script>window.location.href = "http://www.example.com/successPage.php"';</script>";
     */
    // echo 'success';
}
于 2013-09-02T05:00:46.227 に答える