【问题标题】:How do I display a success message after redirecting the user back to my home page?将用户重定向回我的主页后如何显示成功消息?
【发布时间】:2018-06-17 19:35:15
【问题描述】:
我有一个使用 AJAX 和 PHP 进行验证的注册表单,如果用户没有正确填写表单,我目前可以在注册页面上显示错误消息。当用户注册成功后,他或她将通过以下方式回到我网站的主页:
echo
"<script type=\"text/javascript\">
window.location.href='../index.php';
</script>";
exit();
我想知道一旦发生这种情况,如何在我的网站顶部显示一条成功消息,最好是一条消息,如果用户在显示该消息后刷新主页,该消息就会消失。
【问题讨论】:
-
这称为flash message。我用谷歌搜索发现this library。
标签:
javascript
php
jquery
ajax
【解决方案1】:
使用会话,这样刷新页面时它就不会再次显示。
服务器端:
$_SESSION['success'] = 'Registered!';
echo
"<script type=\"text/javascript\">
window.location.href='../index.php';
</script>";
exit();
主页:
if (isset($_SESSION['success']) && ! empty($_SESSION['success'])) {
echo htmlentities($_SESSION['success']);
unset($_SESSION['success']);
}
确保在尝试操作之前使用 session_start(); 初始化会话
【解决方案2】:
您可以通过多种方式来实现,但最简单的一种是将参数传递给 index.php 文件
index.php?status=1
然后在索引文件中,您将检查该参数是否存在以及它具有什么值(例如 0 - 错误,1 - 成功)
if(isset($_GET['status'])) {
if($_GET['status'] == 1) {
echo "User was registered successfully!";
}
}
或者您可以定义(在验证用户数据和登录的脚本上)带有成功消息的会话变量并将其显示在索引页面上
if(isset($_SESSION['success'])) {
echo $_SESSION['success'];
}
提醒:不要忘记在两个页面(索引页面和验证脚本中)调用session_start() 函数
【解决方案3】:
这是特定于您的应用程序的,但我会在成功登录后在 PHP 会话中设置一条消息,然后在 index.php 的页面加载时检查该会话