Мой веб-сайт php протекает следующим образом:
Моя проблема заключается в том, что пользователю может потребоваться щелкнуть кнопку «Назад» на странице 4.php, чтобы вернуться на страницу 3.php и изменить какой-либо ввод. AS im sure your all know when they come back to Page3.php форма будет пустой, так как вся страница будет повторно отображена в состоянии по умолчанию.
Чтобы обойти это и повторно отобразить предыдущий ввод пользователя, выполните следующие действия:
<input value="<?php echo $_POST["guest1Ticket"];?> " type="text" name="guest1Ticket" id="guest1Ticket" onblur="isTicketNumber(this)" size ="22"/>
Это важная часть – <?php echo $_POST["guest1Ticket"];?>
Это работает, но создает для меня еще одну проблему. Если пользователь возвращается к Page1.php (до разбора их браузера) и запускает процесс снова, когда они добираются до Page3.php данные с их последнего прогона будут загружены в форму.
То, что я считаю нужным, – это очистить все переменные sdession, когда пользователь видит Page1.php. Я пытался это сделать так:
<?php session_start(); session_unset(); session_destroy(); ?>
(Вышеуказанное находится в самом верху моего файла без пробелов перед первым символом.)
Никакие предупреждения не генерируются при загрузке Page1.php, но переменные сеанса не теряются. Когда я добираюсь до Page3.php, данные из последнего прогона все еще вводятся в форму.
Как я могу правильно очистить данные сеанса?
BTW Мне нужно только это, чтобы работать в Chrome, и там, где я тестирую.
Используйте только session_unset () для старого устаревшего кода, который не использует $ _SESSION.
см. руководство session_destroy
Например, вы можете попробовать и посмотреть, как это работает
session.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(); ?>
destroyed.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, ie 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 ( )