PHP会话不存储值

问题描述:

首页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

你的情况是不正确的,变量标识符情况下,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. 您正在引用您的变量不正确。在xyz.php你设置$_Session['myvar'] = $var1;,然后在ljk.php你试图回声$_Session['var1']哪些不会存在,因为它尚未设置。您想要访问的变量将是$_SESSION['myvar'],因为这是在xyz.php中设置的变量。

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

  3. 您正在使用$_REQUEST这是一个超全球性的,可能会引起一些安全问题。虽然您的代码可能不会因其当前目的而受到影响,但总是避免它的一个更好的主意。取而代之的是使用$_POST,因为这只会接收已发布的数据。