Не может содержать значения сеанса - PullRequest
0 голосов
/ 20 декабря 2010

Я написал код для страницы входа и страницы пользователя.Когда пользователь вводит правильное имя пользователя и пароль, мой код создает переменную сеанса rid и затем перенаправляет пользователя на страницу пользователя.

Но я сталкиваюсь со странной проблемой, переменная сеанса остается на странице входа, но когдакод перенаправляет на страницу пользователя говорит Notice: Undefined variable: _SESSION in /var/www/Avatar/test1.php on line 6.

Просто чтобы проверить, работает ли сессия правильно, я пытаюсь вывести $_SESSION['rid'] на обеих страницах, он отображает рид на странице входа в систему, но на странице пользователя я получаю вышеуказанную ошибку.

Итак, я создал две страницы с примерами test.php и test1.php.Я создаю переменную сеанса в test.php, а затем пытаюсь отобразить в test1.php.

test.php:

<?php
     $result=session_start();
     $_SESSION["Searock"]="Searock";
     echo $result;
     echo $_SESSION["Searock"];
?>
<html>
     <body>
          <a href="test1.php">next</a>
     </body>
</html>

Выходные данные:

1 Searock next

test1.php:

<?php
    echo $_SESSION["Searock"];
?>

Вывод:

Примечание: неопределенная переменная: _SESSION в /var/www/Avatar/test1.php в строке 2

Я не знаю, в чем проблемамой код или это в переменных среды PHP.

Вот снимок экрана phpinfo.alt text

Может кто-нибудь направить меня в правильном направлении?

Спасибо.

Ответы [ 3 ]

1 голос
/ 20 декабря 2010

Вам нужно вызывать session_start () на каждой странице.Это либо начнет новый сеанс, либо возобновит ранее сохраненный сеанс.Сделайте это, прежде чем пытаться получить доступ к любым переменным $ _SESSION, и вы должны быть готовы.

Обновление

Похоже, я был побит!

1 голос
/ 20 декабря 2010

Если session.auto_start не включено, вам нужно явно вызывать session_start на каждой странице, где вы хотите, чтобы сеанс был доступен.

Так что позвоните session_start в test1.php и проверьте, существует ли $_SESSION["Searock"], прежде чем получить к нему доступ:

<?php
    session_start();
    if (isset($_SESSION["Searock"])) {
        echo $_SESSION["Searock"];
    }
?>
1 голос
/ 20 декабря 2010

В вашем файле test1.php вам не хватает session_start():

<?php
    session_start();
    echo $_SESSION["Searock"];
?>

Вам нужно будет иметь session_start() сверху для любого файла, который вы используете функции, связанные с сеансом.

...