Is it possible to use a session variable, then unset it directly after?
Example:
//====
//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'];
}
So after the form is submitted, if there are no errors:
- Set a session to say the form submission was okay
- Reload the page (to prevent re-submitted POST data)
- If the ‘showUpdated’ session variable is set, display the “Updated” message
- Unset the session variable (so we don’t see the message on next reload)
Currently the problem is, if you unset the session variable straight after; It is as if you have un-set it before the “if exists” part.
Any solutions? Is this even the best way to do it?
Many thanks!
That looks like it should work. Make sure you call session_start() before trying to use the session, and always exit() or die() after a redirect header.
I accomplish what you’re doing a little differently. I keep a ‘message’ element in the session. I’ll stick text in like ‘Your data was saved’, error messages, etc. Then, on each page (actually in a page template class), I check to see if the
$_SESSION['message']is set and not empty. If there’s something there, I display the message and set the value to an empty string or null.