在页面刷新时删除查询字符串值

Sub*_*nha 4 php

我说,我正在使用Querystring重定向到另一个页面

header('location:abc.php?var=1');
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码在querystring值的帮助下在重定向页面上显示消息,比如说

if (isset ($_GET['var']))
{

    if ($_GET['var']==1) 
    {
        echo 'Done';
    }
}
Run Code Online (Sandbox Code Playgroud)

但我的问题是,即使刷新页面,该消息仍会继续显示.因此,我希望在页面刷新时删除该消息,即刷新时url中不应存在值或查询字符串.

提前致谢.

dec*_*eze 6

您不能"在刷新时删除查询参数"."刷新"表示浏览器再次请求相同的URL,没有在刷新时触发的特定事件,可以让您将其与常规页面请求区分开来.

因此,摆脱查询参数的唯一选择是在显示消息后重定向到不同的URL.比方说,使用Javascript,您在10秒左右后重定向到不同的页面.这显着改变了用户体验,并没有真正解决问题.

选项二是将消息保存在服务器端会话中并显示一次.例如,像:

if (isset($_SESSION['message'])) {
    echo $_SESSION['message'];
    unset($_SESSION['message']);
}
Run Code Online (Sandbox Code Playgroud)

可能会引起并行请求的混淆,但几乎可以忽略不计.

选项三可以是两者的组合:使用某些唯一令牌在会话中保存消息,然后在URL中传递该令牌,然后显示消息一次.例如:

if (isset($_GET['message'], $_SESSION['messages'][$_GET['message']])) {
    echo $_SESSION['messages'][$_GET['message']];
    unset($_SESSION['messages'][$_GET['message']]);
}
Run Code Online (Sandbox Code Playgroud)