2017-01-03 62 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是一種服務器端語言,它都不是由客戶端執行的。在第二頁上它的作用是因爲它沒有加載立即銷燬會話的頁面。