Переменные сеанса равны нулю - PullRequest
0 голосов
/ 27 декабря 2011

Я искал и попробовал более десятка предложений по схожим проблемам на этом сайте, но только чуть ближе к решению.

Я начинаю с HTML и PHP, так что это очень упрощенная парасценарии.

Я настраиваю массив с математическими вопросами (для проверки моего 9-летнего сына).Первый скрипт «mathtest.php» устанавливает массив и устанавливает пару переменных в глобальной переменной $ _session, а затем форма отправляет ответ на вопрос «mathtest1.php».

My $ _sessionпеременные теряются, когда я добираюсь до "mathtest1.php".

Пожалуйста, помогите.Я знаю, что могу что-то сделать с cookie-файлами, но я действительно хочу продвинуться в понимании сессий.

Вот 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 и сценарии находятся на том же ноутбуке, что и XAMPP, а не на внешнем сервере. Сеансовые файлы cookie включены ... Trans_ID включен. У меня есть доступ на чтение и запись кпуть сохранения сеанса.

Ответы [ 3 ]

4 голосов
/ 27 декабря 2011

$_SESSION должно быть в верхнем регистре.

2 голосов
/ 27 декабря 2011

попробуйте заглавные буквы! http://php.net/manual/en/reserved.variables.session.php

$_SESSION
0 голосов
/ 27 декабря 2011

В отличие от имен функций ...

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

... имена переменных регистрчувствителен в PHP:

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

...

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

Это относится и к предопределенным переменным , включая $ _ SESSION .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...