Проблемы с сессией PHP - PullRequest
       2

Проблемы с сессией PHP

1 голос
/ 14 июля 2011

У меня есть страница входа в систему и страница «Зона участника», код входа здесь:

login.php

if ($account->is_logged_in())
{
    $route->to(ACCOUNT_URL);
}

elseif (isset($_POST['username']))
{
    if ($account->authenticates())
    {
        if ($account->log_in()) $route->to(ACCOUNT_URL);
    }
    else
    {
        $flash->set('error', 'The credentials you provided are incorrect.');
    }
}

функции (в другом файле)

public function log_in ()
{
    session_unset();
    session_destroy();

    if(session_start())
    {
        $_SESSION['logged_in'] = true;
        $_SESSION['username'] = $_POST['username'];
    }
}

public function authenticates ()
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (ctype_alnum($username) && ctype_alnum($password))
    {
        $username = mysql_real_escape_string(filter_var($username, FILTER_SANITIZE_STRING));
        $password = $this->encrypt(mysql_real_escape_string(filter_var($password, FILTER_SANITIZE_STRING)));

        $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

        $result = mysql_query($sql);

        if (mysql_num_rows($result) == 1)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

Затем страница моей учетной записи:

if ($account->is_logged_in())
{
    echo 'logged in';
}
elseif (!$account->is_logged_in())
{
    echo 'not logged in';
    echo session_id();
    print_r($_SESSION['logged_in']);
}

login.php перенаправляет меня (это означает, что он аутентифицирует мою учетную запись), но когда я попадаю на members.php, он выводится «не вошел в систему»'и это все.

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

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

// Must initiate the session to test if logged in.
session_start();
if ($account->is_logged_in())
{
    echo 'logged in';
}
elseif (!$account->is_logged_in())
{
    echo 'not logged in';
    echo session_id();
    print_r($_SESSION['logged_in']);
}
1 голос
/ 14 июля 2011

Есть ли у вас session_start() в самом начале всех сценариев, которые используют сеансы?

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