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'] = "";它放在页面的末尾,仍然,这个 SESSION 得到了价值""?!这怎么可能?

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

分配""给变量与它根本不存在不同。您是否尝试取消设置会话变量?

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

您将要使用unset($_SESSION['bla'])删除此特定变量,或使用if( empty($_SESSION['bla']) ) { }检查变量。

于 2012-10-31T15:09:45.640 回答
1

所以在你的 URL 中设置一个 get 变量,比如

www.url.com?message=hello

在另一页上使用这个

if(isset($_GET['message']) && $_GET['message'] != '') {
   echo $_GET['message'];
}
于 2012-10-31T15:05:20.217 回答
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 回答