2015-05-11 7 views
1

Сессия не создается и продолжает перенаправляться на login.php. На самом деле не понимаю, почему! Мне очень нужна помощь :(Сессия не работает PHP

Вот мой класс Session:

class Session { 

    private $logged_in=false; 
    public $user_id; 

    function __construct() { 
     session_start(); 
     $this->check_login(); 
    if($this->logged_in) { 
     // actions to take right away if user is logged in 
    } else { 
     // actions to take right away if user is not logged in 
    } 
    } 

    public function is_logged_in() { 
    return $this->logged_in; 
    } 

    public function login($user) { 
    if($user){ 
     $this->user_id = $_SESSION['user_id'] = $user->id; 
     $this->logged_in = true; 
    } 
    } 

    public function logout() { 
    unset($_SESSION['user_id']); 
    unset($this->user_id); 
    $this->logged_in = false; 
    } 

    private function check_login() { 
    if(isset($_SESSION['user_id'])) { 
     $this->user_id = $_SESSION['user_id']; 
     $this->logged_in = true; 
    } else { 
     unset($this->user_id); 
     $this->logged_in = false; 
    } 
    } 

} 

$session = new Session(); 

?> 

Вот часть моей странице входа:

if (isset($_POST['submit'])) { // Form has been submitted. 

    $user_name = trim($_POST['user_name']); 
    $password = trim($_POST['password']); 

    // Check database to see if username/password exist. 
    $found_user = User::authenticate($user_name, $password); 

    if ($found_user) { 
    $session->login($found_user); 
    redirect_to("index.php"); 
    } else { 
    // username/password combo was not found in the database 
    $message = "Username/password combination incorrect."; 
    } 

} else { // Form has not been submitted. 
    $user_name = ""; 
    $password = ""; 
} 

А вот часть index.php:

if (!$session->is_logged_in()) { redirect_to("login.php"); 

То, что я пробовал:

Я попытался поставить session_start(); на старте не повезло. Просмотрели ошибки во всем коде, используемом на этих страницах.

+0

Почему вам нужен класс сеанса? и почему у вас есть 'session_start();' inside '__constract()'? –

+0

Может быть, потому, что я использую локальный сервер WAMP? – user3157444

+0

Nope .. сессия не имеет ничего общего с сервером. Пробовали ли вы отображать значения вашей сессии? Или, по крайней мере, создать отдельный сеанс (без класса), затем вывести значения на другую страницу и посмотреть, действительно ли это не работает? –

ответ

0

Вызвать session_start(); перед оператором if на странице входа.

+0

. Это не решило проблему, но я понял, что это не сеанс, который не работал. После добавления этой функции я получил сообщение «session already started». – user3157444

0

потому, что вы пытаетесь использовать объект из сеанса, который не объявлен в странице входа

просто сделать это на странице входа и каждая вещь будет хорошо

включают «Sessionclass.php»; , если вы уже это сделали, вам нужно проверить вывод $ found_user = User :: authenticate ($ user_name, $ password);

0

Обнаружено, что это была проблема с моим сервером WAMP. Итак, теперь я получил Wamp 2.5 и больше не сталкиваюсь с этой проблемой.

Смежные вопросы