会话变量是空的

时间:2011-12-27 01:07:27

标签: php forms session

我在这个网站上搜索并尝试了类似问题的十几条建议,但距离分辨率只有一点点。

我开始使用HTML& PHP所以这是一个非常简单的脚本。

我正在设置一个包含数学问题的数组(以测试我9岁的儿子)。 第一个脚本“mathtest.php”设置数组并在$ _session全局变量中设置几个变量,然后表单将问题的答案提交给“mathtest1.php”。

当我到“mathtest1.php”时,我的$ _session变量会丢失。

请帮忙。我知道我可以用饼干做点什么,但我真的想提高对会话的理解。

这是2个脚本:

“mathtest.php”:

<?php
session_start();
?>
<html>
<title>Math Test</title>
<head>Math Test</head>
<body>
<?php
$arrayindex = 0;

for ($L = 1; $L <= 12; $L++) {
    for ($R = 12; $R >= 1; $R--) {
        $setupquestions[$arrayindex] = $L.'*'.$R;
        $arrayindex++;
    }
}

$_session["questions"] = $setupquestions;
$_session["randomkey"] = array_rand($_session["questions"],1);

?>

<form action="mathtest1.php" method="post">
    What is <?php echo $_session["questions"][$_session["randomkey"]]." ?" ?>  
    <input type="text" name="answer">
    <input type="submit" name = "submit">
</form>

</body>
</html>

上面的脚本按预期工作,但下面的脚本为我试图访问和使用的会话变量设置了空值。

“mathtest1.php”:

<?php
session_start();
?>
<html>
<body>

<?php

if(isset($_POST['submit']))
{
    $answer = $_POST['answer'];
    $result = eval("return $_session[questions]$_session[randomkey];");
    echo "result = ".$result."<br />";
    if ($answer == $result) {
        echo "Correct!!";
    }
    else {
        echo "WRONG!!";
    }
}

$_session["randomkey"] = array_rand($_session["questions"],1);

?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   What is <?php echo $_session["questions"][$_session["randomkey"]]." ?" ?>  
    <input type="text" name="answer">
    <input type="submit" name = "submit">
</form>


</body>

</html>

其他细节: OS X,Chrome浏览器,最新版本的PHP XAMPP安装&amp;脚本与XAMPP在同一台笔记本电脑上,而不在外部服务器上。 会话cookie已开启 ... Trans_ID为ON 我读过&amp;写访问会话保存路径。

3 个答案:

答案 0 :(得分:4)

$_SESSION应为大写。

答案 1 :(得分:2)

答案 2 :(得分:0)

function names ...

不同
function bar(){
}

function Bar(){
}

...

Fatal error: Cannot redeclare Bar() (previously declared in C:\tmp\test.php:3) in C:\tmp\test.php on line 7

... variable names在PHP中区分大小写:

$foo = 1;
$Foo = 2;
$FOO = 3;
var_dump($foo, $Foo, $FOO);

...

int(1)
int(2)
int(3)

这同样适用于predefined variables,包括$_SESSION