За последние 24 часа нас посетили 21394 программиста и 1022 робота. Сейчас ищут 678 программистов ...

Не работает сессия при логине,не могу понять почему ?*

Тема в разделе "PHP для новичков", создана пользователем FireSoul, 12 июн 2017.

Метки:
  1. FireSoul

    FireSoul Активный пользователь

    С нами с:
    12 июн 2017
    Сообщения:
    7
    Симпатии:
    1
    Создал класс сессию
    PHP:
    1. <?php
    2. namespace Modules;
    3. class Session
    4. {
    5.     private $logged_in = false;
    6.     public $user_id;
    7.  
    8.     //Session start and check logged in
    9.     public function __construct()
    10.     {
    11.         session_start();
    12.         $this->checkLogin();
    13.         if ($this->logged_in) {
    14.             // actions to take right away if user is logged in
    15.         } else {
    16.             // actions to take right away if user is not logged in
    17.         }
    18.     }
    19.  
    20.     //session destroy
    21.     public function __destruct()
    22.     {
    23.         session_destroy();
    24.     }
    25.  
    26.     // Check if User log in
    27.     public function isLoggedIn()
    28.     {
    29.         return $this->logged_in;
    30.     }//true
    31.  
    32.     //check if some one log in from page
    33.     public function login($user)//true
    34.     {
    35.         // database should find user based on username/password
    36.         if ($user) {
    37.             $this->user_id = $_SESSION['user_id']=$user->id ;
    38.             $this->logged_in = true;
    39.         }
    40.     }
    41.  
    42.     //unset out user_id
    43.     public function logout()//true
    44.     {
    45.         unset($_SESSION['user_id']);
    46.         unset($this->user_id);
    47.         $this->logged_in = false;
    48.     }
    49.     // check for user_id accept
    50.     private function checkLogin()
    51.     {
    52.         if (isset($_SESSION['user_id'])) {
    53.             $this->user_id = $_SESSION['user_id'];
    54.             $this->logged_in = true;
    55.         } else {
    56.             unset($this->user_id);
    57.             $this->logged_in = false;
    58.         }
    59.     }//true
    60. }
    Страница логина
    PHP:
    1. <?php
    2. require_once ('../../vendor/autoload.php');
    3. require_once ('../../includes/functions.php');
    4. $session= new \Modules\Session();
    5. $database= new \Modules\MySqlDatabase();
    6. $object= new \Modules\User();
    7. if($session->isLoggedIn()) {
    8.     redirect_to("index.php");
    9. }
    10.  
    11. // Remember to give your form's submit tag a name="submit" attribute!
    12. if (isset($_POST['submit'])) { // Form has been submitted.
    13.  
    14.     $username = cleanStr($_POST['username']);
    15.     $password = cleanStr($_POST['password']);
    16.  
    17.     // Check database to see if username/password exist.
    18.     $found_user = $object->authenticate($username, $password);
    19.  
    20.     if ($found_user) {
    21.         $session->login($found_user);
    22.         redirect_to("index.php");
    23.     } else {
    24.         // username/password combo was not found in the database
    25.         $message = "Username password are incorrect.";
    26.     }
    27.  
    28. } else { // Form has not been submitted.
    29.     $username = "";
    30.     $password = "";
    31. }
    Собственно , с бд все нормально проходит. Перехожу на страницу но выводит NULL:
    PHP:
    1.         var_dump($session->login($found_user));
    И если я не закоментирую обратный редирект с закрытой страницы, меня вечно редиректит назад на логин
    Стр. куда иду после ввода логина и после чего реконектит назад:
    Код (Text):
    1. require_once ("../../vendor/autoload.php");
    2. require_once ("../../includes/functions.php");
    3. $session = new \Modules\Session();
    4. var_dump($session->isLoggedIn());
    5. if (!$session->isLoggedIn()) { redirect_to("login.php"); }
    6. ?>
     
  2. FireSoul

    FireSoul Активный пользователь

    С нами с:
    12 июн 2017
    Сообщения:
    7
    Симпатии:
    1
    Проблему решил, тему можно закрыть (не нашел где самому ТТ)