ste*_*ton 12 php forms session post login
是否可以使用会话变量,然后直接取消设置?
例:
//====
//Process Form
if ($_POST['Submit']) {
$update = $userSettings->update($_POST);
//If there are form errors
if (!$update) {
//Load the errors into an array
$errors = $update[1];
} else {
//Set the session
$_SESSION['showUpdated'] = true;
//Redirect to this page
header("Location: http://www.mysite.com/settings");
}
}
//==================
if ($_SESSION['showUpdated']) {
echo "Settings Updated";
unset($_SESSION['showUpdated'];
}
Run Code Online (Sandbox Code Playgroud)
因此,在提交表单后,如果没有错误:
目前的问题是,如果你直接取消设置会话变量; 就好像你在"if exists"部分之前取消了它.
有解决方案吗 这甚至是最好的方法吗?
非常感谢!
don*_*aur 23
我注意到原始示例中的一个小错误可能会导致其他问题.
unset($_SESSION['showUpdated'];
Run Code Online (Sandbox Code Playgroud)
需要是
unset($_SESSION['showUpdated']);
Run Code Online (Sandbox Code Playgroud)
不包括为此)
在unset
会导致错误.
看起来应该可以。确保在尝试使用会话之前调用 session_start(),并且始终在重定向标头之后调用 exit() 或 die()。
我完成你正在做的事情有点不同。我在会话中保留一个“消息”元素。我将粘贴“您的数据已保存”、错误消息等文本。然后,在每个页面上(实际上在页面模板类中),我检查是否已$_SESSION['message']
设置且不为空。如果那里有东西,我会显示消息并将值设置为空字符串或 null。