0

F5がクエリを再実行するときの私のコード:

if (isset($_POST['addnewproject']) )
{
    include("query/pm_addnewproject.php");
    echo $emailnotificationmessage;
}

F5またはページのリロードを押した後のクエリの再実行を防ぐために、ヘッダーを変更して、.phpページの最初のルール(出力の前)に配置する必要があります。それで:

    if (isset($_POST['addnewproject']) ) 
    {
        include("query/pm_addnewproject.php");
        header("Location:pm_configureaccounting.php?edit=$_SESSION[accidsession]");

        echo $emailnotificationmessage; exit();

    }

ヘッダーが原因で、ページの中央のどこかにエコーアウトしたかった$emailnotificationmessageが失われました。

私がまだこれをエコーし​​たいとき、今やるべき最善のことは何ですか?

ここで、$emailnotificationmessagesを$_SESSION ['emailnotificationmessage']に変更し、必要な場所にエコーアウトします。

ただし、このセッションの設定も解除する必要があります。そうしないと、ユーザーに表示され続けます。

したがってecho $_SESSION['bla']、ページの中央に配置すると、そこに値があります。できます。ただし、後でクリアする必要があるため、ユーザーが再度アクセスしたときに、プロジェクトが再度追加されない限り、メッセージは表示されません。だから私$_SESSION['bla'] = "";はページの最後に置きます、そしてそれでも、このセッションは値を取得します""か?!これはどのように可能ですか?

4

6 に答える 6

2

ユーザーがF5リフレッシュページであるかどうかを知る簡単な方法はありません。

ただし、賢く、1〜2個の識別子を設定できます。たとえば(セッションを使用)。

$request= md5(json_encode($_REQUEST));

if(isset($_SESSION["last_request"]) && $_SESSION["last_request"] == $request){
   echo "Dont refresh page...";
} 
else{
    $_SESSION["last_request"] = $request;
}

このセッションは保存され、ユーザーが戻って同じ値でフォームを再度送信すると、同じ「ページを更新しない」メッセージが表示されることに注意してください。

if(isset($_SESSION["last_request"])){ 
    unset($_SESSION["last_request"]); 
} 

フォームページで。

于 2012-10-31T15:10:51.407 に答える
2

大丈夫。以下の方法でコードを記述しないのはなぜですか。

<?php 

if (isset($_POST['addnewproject']) ) 
{
    include("query/pm_addnewproject.php");
    $_SESSION['emailMsg'] = $emailnotificationmessage;
    header("Location:pm_configureaccounting.php?edit=$_SESSION[accidsession]");

    exit();

}else{
    echo $_SESSION['emailMsg']; 
}

?>
于 2012-10-31T15:11:00.367 に答える
1

したがって、URLにget変数を次のように設定します

www.url.com?message=hello

他のページでこれを使用してください

if(isset($_GET['message']) && $_GET['message'] != '') {
   echo $_GET['message'];
}
于 2012-10-31T15:05:20.217 に答える
1

変数""への割り当ては、まったく存在しないことと同じではありません。セッション変数の設定を解除しようとしていますか?

unset($_SESSION['emailnotificationmessage']);
于 2012-10-31T15:09:31.490 に答える
1

unset($_SESSION['bla'])この特定の変数を削除するために使用するif( empty($_SESSION['bla']) ) { }か、変数をチェックするためにを使用する必要があります。

于 2012-10-31T15:09:45.640 に答える
0

わかりました、私は今これを動かしています。速い反応をありがとう!

ページ上部の私のルール:

    if (isset($_POST['addnewproject']) ) 
    {
        include("query/pm_addnewproject.php");
        $_SESSION['emailnotificationmessage'] = $emailnotificationmessage;
        header("Location:pm_configureaccounting.php?edit=$_SESSION[accidsession]");
        exit();
    }

ページのどこか深いところ:

<?php
    echo $_SESSION['emailnotificationmessage'];
    $_SESSION['emailnotificationmessage'] = "";     
?>

今完璧に動作します。新しいプロジェクトを追加すると、メッセージが表示され、すぐにセッションが空になります。リロード後、新しいプロジェクトが追加されるまで、セッションは空のままになります。

ヘッダーの後に$_SESSIONを宣言したと思いますが、ばかげた間違いです。そのため、常に空でした。

于 2012-10-31T15:46:38.463 に答える