2011-08-30 138 views
2

首頁abc.htmlPHP會話不存儲值

< form action="xyz.php" method="post" > 
< input type=text value="ABC" name="first" id="first" /> 
< /form> 

第二頁xyz.php

session_start(); 

$var1 = $_Request['first']; 
$_Session['myvar'] = $var1; 
session_write_close(); 

echo "<a href='lkj.php'>click here</a>" 

第三頁lkj.php

session_start(); 

echo $_Session['var1']; 

和輸出之炊,它完全空白,因爲會話變量中沒有任何內容。
你能幫我解決這個問題嗎?

+0

你試過使用'$ _SESSION'而不是'$ _Session'嗎? PHP變量區分大小寫 – NullUserException

回答

6

你的情況是不正確的,變量標識符情況下,PHP敏感:

// Incorrect: 
$var1 = $_Request['first']; 
$_Session['myvar'] = $var1; 
session_write_close(); 

// Should be: 
$var1 = $_REQUEST['first']; 
$_SESSION['myvar'] = $var1; 
session_write_close(); 


// On lkj.php: 
session_start(); 
echo $_SESSION['var1']; 

而且,而是採用$_REQUEST我強烈建議使用$_POST。您的表格指定method='post'

$var1 = $_POST['first']; 
$_SESSION['myvar'] = $var1; 
1

我看到您提供的代碼有幾個問題。

  1. 您正在引用您的變量不正確。在xyz.php你設置$_Session['myvar'] = $var1;,然後在ljk.php你試圖回聲$_Session['var1']哪些不會存在,因爲它尚未設置。您想要訪問的變量將是$_SESSION['myvar'],因爲這是在xyz.php中設置的變量。

  2. 你想利用$_SESSION而不是$_Session

  3. 您正在使用$_REQUEST這是一個超全球性的,可能會引起一些安全問題。雖然您的代碼可能不會因其當前目的而受到影響,但總是避免它的一個更好的主意。取而代之的是使用$_POST,因爲這隻會接收已發佈的數據。