2

単純なコーディングの問題があります。テキストボックスと共有ボタンを使用してページを作成しようとしています。

ユーザーが共有ボタンをクリックすると、テキストボックス内のテキストが文字列として「posts」という名前のデータベーステーブルに挿入されます。

次のコードを使用します。

<?php
    if(isset($_POST['share']))
    {
            $status = $_POST['status'];
            $res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
            if($res)
                echo "<script type='text/javascript'>alert('Posted successfully')</script>";
            else
                echo "<script type='text/javascript'>alert('some error')</script>";
    }
    else
    {
        ?>
            <form action="<?php $_SERVER['PHP_SELF']?>" method="post">
            Status : <input type = "text" name ="status">
            <input type = "submit" name ="share">
            </form>
        <?php
    }

この解決策は正常に機能しますが、ユーザーがページを更新すると問題が発生します。ブラウザに情報の再送信を求めるメッセージウィンドウが表示され、投稿がテーブルに再度送信されます。次に、同じエントリがテーブルに2回あります。

送信後もユーザーが同じページに留まるようにしたい。ただし、ページを更新しても、メッセージウィンドウが表示されたり、情報が再送信されたりすることはありません。

前もって感謝します!

4

4 に答える 4

10

共有後にユーザーをリダイレクトし、リダイレクトを使用します

header('Location: whatever.php');
exit;

これを使って :

<?php
if(isset($_POST['share'])) {
      $status = $_POST['status'];
      $res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
      if($res) {
      ?>
          <script type='text/javascript'>alert('Posted successfully')</script>
      <?php              
          header('Location: whatever.php');
          exit;
        } else {
         ?>
          <script type='text/javascript'>alert('some error')</script>
       <?php
          header('Location: whatever.php');
          exit;
         }
    }
 ?>

そしてところで、javascriptを使用してユーザーに警告しない方が良いです

それ以外の場合は、中かっこを使用してください

PS:JavaScriptを使用してユーザーをリダイレクトすることもできますwindow.location

ヘッダーリファレンス

于 2012-10-02T08:57:59.320 に答える
0

これは「投稿後のリダイレクト」と呼ばれます。投稿リクエストを受け取り、それを使って何か便利なことをした後、ユーザーを(通常は)自分の投稿などにリダイレクトします。

于 2012-10-02T08:57:00.000 に答える
0

投稿の保存が完了した直後に、リダイレクトを試すことができます。

            header("location: $my_page");
            exit();

コードを含むページの名前で変数$your_pageを設定します$my_page='yourpage.php';

これは機能するはずです:

$my_page = 'your_page.php'
if(isset($_POST['share']))
{
        $status = $_POST['status'];
        $res = mysql_query("insert into `posts`(postid,username,post,pointscollected) values('','$username','$status','')");
        if($res)
        {
            echo "<script type='text/javascript'>alert('Posted successfully')</script>";
            header("location: $my_page");
            exit();
        }
        else
        {
            echo "<script type='text/javascript'>alert('some error')</script>";
            header("location: $my_page");
            exit();
        }
}
于 2012-10-02T09:08:23.103 に答える
0

クエリとすべての挿入が完了したら、次を使用して別のページに変更します。

<?php
header('Location: /path/to/yourotherpage.php');
exit();
?>

これは、別のページへのリダイレクトであり、ページのブラウザの「メモリ」からすべてのPOSTデータを削除します。

そのページで、あなたは「あなたのものは提出され、記録されました」のようなものを、あなたが望むものは何でも、あなたの選択で書きます。

ユーザーがそのページを更新すると、何も挿入されません。

それはうまくいくはずです。

于 2012-10-02T09:14:23.683 に答える