PHP会话不存储值

时间:2011-08-30 14:39:52

标签: php

第一页abc.html

< 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'];

并且输出什么都没有,它完全是空白的,因为会话变量中没有任何内容 你能帮帮我吗?

2 个答案:

答案 0 :(得分: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)

我在您提供的代码中看到了一些问题。

  1. 您正在错误地引用变量。在xyz.php上设置$_Session['myvar'] = $var1;,然后在ljk.php上设置您正在尝试回显$_Session['var1'],因为它尚未设置。您要访问的变量为$_SESSION['myvar'],因为这是xyz.php中设置的变量。

  2. 您想要使用$_SESSION,而不是$_Session

  3. 您使用的是$_REQUEST,这是一个超全局,可能会引起一些安全问题。虽然您的代码可能不会因其当前目的而受到影响,但最好还是避免使用它。而是使用$_POST,因为它只会获取已发布的数据。