我正在尝试Post-Redirect-Get模式。
以下是我的自定义功能
<?php
function ReadCookieMessage()
{
if (($_COOKIE["c"]) && ($_COOKIE["t"]))
{
$message = $_COOKIE["t"];
$message = htmlspecialchars($message);
if ($_COOKIE["c"] == "r")
{
$cssclass = 'error_msg';
}
else if ($_COOKIE["c"] == "g")
{
$cssclass = 'success_msg';
}
setcookie("c", "", time()-3600);
setcookie("t", "", time()-3600);
return '<div class="' . $cssclass . '">' . $message .'</div>';
}
}
?>
<?php
function SetCookieMessage($c,$t)
{
setcookie("c",$c, time()+3600);
setcookie("t",$t, time()+3600);
}
?>
我在更改密码页面上SetCookieMessage("g","Your password has been changed, you may now login again");
。
然后我做
echo ReadCookieMessage();
在我的登录页面上。我不确定是什么setcookie工作时我设置r cookie,如果他们检查时记得他们登录。我也累了
setcookie("c","g", time()+3600);
setcookie("t","Your password has been changed, you may now login again", time()+3600);
取代SetCookieMessage
功能。
不确定是否
if ($SqlChangePass)
{
session_unset();
session_destroy();
setcookie("r", "", time()-3600);
SetCookieMessage("g","Your password has been changed, you may now login again");
header("Location: /login");
}
对您有所帮助。它在changepassword脚本中。
Php没有给我任何错误。这些函数的目标是设置消息颜色(r表示红色,g表示绿色)和文本。然后将它们带到另一页并阅读该消息。它所访问的页面没有显示任何类型的消息。
答案 0 :(得分:0)
所以,如果我做得对,你执行如下:
<?php
SetCookieMessage("something","here");
ReadCookieMessage();
?>
如果是这种情况,那将是正常行为。 Cookie与页眉中的结果页一起发送。 因此,您只能在下次请求时阅读Cookie。
e.g。第一次请求:
第二个请求可能是:
您可以在维基百科上阅读有关Cookie的更多信息:Wikipedia page about HTTP Cookies 我引用:
将cookie作为HTTP响应标题中的字段由Web服务器发送到Web浏览器,然后每次访问该服务器时由浏览器保持不变地发送。
我希望我能正确理解你的问题。我的回答很有帮助。
答案 1 :(得分:0)
“我把SetCookieMessage(”g“,”您的密码已更改,您现在可以再次登录“);在测试页面上回显ReadCookieMessage();”
正如巴特所说,你不能设置一个cookie并在同一页面上检查它。
“如果我加载页面,我什么也看不见。如果我再次刷新页面,我会看到一条消息。如果我再次刷新,我看不到消息”
关于你的情况,这就是发生的事情:
检查Bart提供的链接! :)