Как правильно очистить данные сеанса php?
мой сайт php течет так:
- Страница 1.php имеет html-форму, которая публикуется на странице 2.в PHP
- Страница 2.php хранит все данные POST в переменных сеанса и имеет кнопку, ведущую к Page3.в PHP
- Page3.php имеет другую форму, которая публикует свои данные на Page4.в PHP
- Страница4.затем php сохраняет все свои данные POST в переменные сеанса
моя проблема в том, что для пользователя может быть нессикарно нажать кнопку "назад" на Page 4.php, чтобы вернуться к странице 3.php и изменить некоторые входные данные. Как я уверен, все ваши знают, когда они вернутся к Page3.php форма будет пустой, так как вся страница будет повторно отображена в состоянии по умолчанию.
чтобы обойти это и повторно отобразить предыдущий ввод пользователя im, делая это:
<input value="<?php echo $_POST["guest1Ticket"];?> " type="text" name="guest1Ticket" id="guest1Ticket" onblur="isTicketNumber(this)" size ="22"/>
Это важная часть - <?php echo $_POST["guest1Ticket"];?>
это работает, но создает еще одну проблему для меня. Если пользователь возвращается к Page1.php (перед colsing своего браузера) и запускается процесс повторяется снова, когда они попадают на Page3.php данные с их последнего прогона будут загружены в форму.
что мне нужно сделать, это очистить все переменные sdession, когда пользователь посещает Page1.РНР. Я попытался что-то вроде этого:
<?php
session_start();
session_unset();
session_destroy();
?>
(выше в верхней части моего файла без пробелов перед первым символом.)
предупреждения не генерируются при Page1.php загружает, но сеанс переменные не получают unset. Когда я доберусь до страницы 3.php данные с последнего запуска все еще вводятся в форму.
Как правильно очистить данные сеанса?
кстати мне нужно только это, чтобы работать в Chrome и вот где я тестирую.
3 ответов
используйте только session_unset () для старого устаревшего кода, который не использует $_SESSION.
посмотреть руководство session_destroy
пример вы можете попробовать и посмотреть, как он работает
сессии.в PHP
<?php
session_start();
$_SESSION = array('session1'=>1,'session2'=>2);
echo $_SESSION['session1']; //1
$_SESSION['session1'] = 3;
echo "<pre>";
print_r($_SESSION); //session one now updated to 3
echo "</pre>";
$_SESSION = array();
if ($_SESSION['session1']) {
echo $_SESSION['session1']; // IS NOW EMPTY
} else {
echo "woops... nothing found";
}
?>
<p>
<a href="destroyed.php">NOW GOING TO DESTROYED PHP<a/>
</p>
<?php
session_destroy();
?>
уничтожены.в PHP
<?php
session_start(); // calling session start first on destroyed.php
print_r($_SESSION); // prints Array ( )
?>
из документации:
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used,
use unset() to unregister a session variable, i.e. unset ($_SESSION['varname']);
и позаботьтесь о session_destroy:
session_destroy-разрушает все данные, связанные с текущим сеансом. Он не отменяет ни одну из глобальных переменных, связанных с сеансом
использовать session_unset(). Вот так:
<?php session_start(); ?><!DOCTYPE html>
<html>
<body>
<?php
$_SESSION["variabletounset"] = "I am going to be unset soon along with all of the other session variables.";
print '<pre>' . "\n";
print_r($_SESSION);
print ' </pre>' . "\n";
session_unset();
print ' <pre>' . "\n";
print_r($_SESSION);
print ' </pre>' . "\n";
?>
</body>
</html>
это будет выход:
Array
(
variabletounset => I am going to be unset soon along with all of the other session variables.
)
Array
(
)