如何正确清除我的php会话数据?

Del*_*D0D 10 php session

我的php网站流程如下:

  • Page1.php有一个html表单,POST到Page2.php
  • Page2.php将所有POST数据存储到SESSION变量中,并有一个指向Page3.php的按钮
  • Page3.php有另一种形式,将其数据POST到Page4.php
  • 然后,Page4.php将其所有POST数据存储到SESSION变量中

我的问题是,用户单击Page4.php上的后退按钮返回Page3.php并更改一些输入可能是必要的.我们确定你们都知道当他们回到Page3.php时,表单将是空白的,因为整个页面将以其默认状态重新呈现.

为了解决这个问题并重新显示用户之前的输入我是这样做的:

<input value="<?php echo $_POST["guest1Ticket"];?> " type="text"  name="guest1Ticket" id="guest1Ticket" onblur="isTicketNumber(this)"  size ="22"/>
Run Code Online (Sandbox Code Playgroud)

这是重要的部分 - <?php echo $_POST["guest1Ticket"];?>

这可行,但给我带来了另一个问题.如果用户返回到Page1.php(在收集浏览器之前)并在他们到达Page3.php时重新开始该过程,则他们上次运行的数据将被加载到表单中.

我想我需要做的是在用户访问Page1.php时清除所有sdession变量.我试着这样:

<?php 
 session_start(); 
 session_unset(); 
 session_destroy(); 
?> 
Run Code Online (Sandbox Code Playgroud)

(上面是我文件的顶部,在第一个字符之前没有空格.)

Page1.php加载时不会生成警告,但会话变量未被取消设置.当我到达Page3.php时,上次运行的数据仍然被输入到表单中.

如何正确清除会话数据?

顺便说一下,我只需要这个就可以在Chrome中运行,那就是我测试的地方.

Grm*_*rmn 13

仅对不使用$ _SESSION的旧版弃用代码使用session_unset().

请参阅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();
?>
Run Code Online (Sandbox Code Playgroud)

destroyed.php

<?php
session_start(); // calling session start first on destroyed.php

print_r($_SESSION); // prints Array ( )  
?>
Run Code Online (Sandbox Code Playgroud)