2017-01-03 38 views
1

我有一个示例程序,将输入的字段输入传递给$ _SESSION,然后回显到第3页。但似乎在第一页(index.php)中输入的输入不会回显,而在第二页中却是这样。我如何解决这个问题?PHP会话变量不通过,不能通过第3页读取

我也想要一个代码,输入与封闭销毁,这就是为什么我有我的代码中的每bodyonunload="<?php session_destroy(); ?>"

的index.php代码:

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <form class="" method="post" action="page1indexHandler.php" onunload="<?php session_destroy(); ?>"> 
      Check-in: <input type="text" name="check_in" placeholder="Check-in"> 
      Check-out: <input type="text" name="check_out" placeholder="Check-out"> 
      <br> 
      <input type="submit" name="Proceed" value="Proceed"> 
     </form> 
    </body> 
</html> 

page1indexHandler.php代码:

<?php 
session_start(); 
$_SESSION['check_in'] = $_POST['check_in']; 
$_SESSION['check_out'] = $_POST['check_out']; 
header("Location: register.php"); 
?> 

register.php(第二页)代码:只是为了

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <form class="" method="post" action="page2registerHandler.php" onunload="<?php session_destroy(); ?>"> 
      first name: <input type="text" name="firstname"> 
      last name : <input type="text" name="lastname"> 
      <br> 
      <input type="submit" name="proceed" value="proceed"> 
     </form> 
    </body> 
</html> 

output.php(回声/检查目的)代码:

<?php 
    session_start(); 
    echo $_SESSION['check_in'] . "<br>"; 
    echo $_SESSION['check_out'] . "<br>"; 
    echo $_SESSION['firstname'] . "<br>"; 
    echo $_SESSION['lastname'] . "<br>"; 
?> 

下面是示例程序的输出:

Notice: Undefined index: check_in in C:\xampp\htdocs\series\kenny\output.php on line 3 


Notice: Undefined index: check_out in C:\xampp\htdocs\series\kenny\output.php on line 4 

John // I inputted this in the register.php code, it echoes 
Doe // also this one 
+2

'onunload'在客户端工作。所以'session_destroy'总是在页面加载时运行。 –

+2

[客户端和服务器端编程有什么区别?](http://stackoverflow.com/questions/13840429/what-is-the-difference-between-client-side-and-server - 侧编程) –

+0

我看到..我试图删除它们,它的工作。谢谢! =)但是我想做一些事情,例如,当用户在输入这些表单的过程中关闭浏览器时,完成的表单就会被销毁。我怎么做? – Kenny

回答

2

我这里假设你的代码确实从你的index.php流经的处理程序,并直接到登记表。

问题是,当您的表单页面加载时会破坏会话。 表单的“onunload”事件中的PHP代码在页面发送给用户之前执行。所有的PHP代码都是。

PHP是一种服务器端语言,它都不是由客户端执行的。在第二页上它的作用是因为它没有加载立即销毁会话的页面。