在 PHP 中更新密码后在登录页面中显示消息

我有一个运行良好的密码更新系统。但是,问题是我无法显示任何成功消息,例如“密码已更改!”。因为,在密码更新后,我的系统将用户重定向到注销页面,该页面又重定向到登录页面。我只想在密码更新后在登录页面中显示此消息。我无法尝试从 $_SESSION 变量中放置和捕获消息,因为当注销会话被破坏时。我将不胜感激有关此主题的任何好主意。提前致谢。


神不在的星期二
浏览 112回答 2
2回答

手掌心

一些想法:1)使用 Cookie 而不是 $_SESSION (在开始新会话后确实会被销毁)。如果设置了 cookie,则显示您显示的消息(并删除 cookie)2)不要立即重定向到登录页面,而只是说:“密码已更改!单击此处重新登录。”。但是您可以安全地销毁该页面上的会话。3)根本不破坏会话。更改密码的事实并不意味着您必须销毁会话。如果您的会话包含以下内容:$_SESSION['validUser'] = 'Y'那可能就足够了吗?

慕无忌1623718

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 或会话更好的原因,但这是一种非常直接的消息传递方法。
打开App,查看更多内容
随时随地看视频慕课网APP