2 回答
TA贡献1942条经验 获得超3个赞
一些想法:
1)使用 Cookie 而不是 $_SESSION (在开始新会话后确实会被销毁)。如果设置了 cookie,则显示您显示的消息(并删除 cookie)
2)不要立即重定向到登录页面,而只是说:“密码已更改!单击此处重新登录。”。但是您可以安全地销毁该页面上的会话。
3)根本不破坏会话。更改密码的事实并不意味着您必须销毁会话。如果您的会话包含以下内容:$_SESSION['validUser'] = 'Y'
那可能就足够了吗?
TA贡献1744条经验 获得超4个赞
Erwin Moller 的建议都是很好的建议,而且都很容易实施。我认为这些是最好的方法,但是如果您不想使用这些方法中的任何一种,那么您可以将一个$_GET变量从一个重定向中继到另一个重定向,可以是纯消息或代表的值一个消息:
$red_url = 'http://www.example.com/?msg=Password+has+been+reset';
header("Location: {$red_url}");
exit;
确保htmlspecialchars()在输出消息时使用类似或等效的东西。这将处理恶意代码插入,但这种方法仍然允许最终用户最灵活地处理您的站点消息。
变量方法将类似:
$red_url = 'http://www.example.com/?msg=1234';
header("Location: {$red_url}");
exit;
在显示页面上使用某种方式来获取或翻译msg代码:
<?php if(!empty($_GET['msg']) && is_numeric($_GET['msg'])): ?>
<h3 class="site-message"><?php echo myCodeToMessageFunc($_GET['msg']) ?></h3>
<?php endif ?>
最可能发生的情况是用户可以手动传递不同的代码以显示不同的消息。
** 这两种方法可能会被用户弄乱(如果您正在清理或控制输出,则无害),这就是 cookie 或会话更好的原因,但这是一种非常直接的消息传递方法。
- 2 回答
- 0 关注
- 111 浏览
添加回答
举报