Search code examples
phpsession-storage

PHP Session Login Controller


I am trying to create a login controller for my website ... in terms of keeping people logged in I've decided to use sessions.

I am currently attempting to create a class that can be referenced when I include the controller file of the sessions. This will allow me to create, authenticate (delete) and update sessions.

<?php

class Session {

    static function start($name, $value) {
        session_start();
        $_SESSION[$name] = $value;
        $_SESSION['EXPIRE'] = time() + 10;
    }

    // checking for expire
    static function auth() {
        if (isset($_SESSION['EXPIRE']) && $_SESSION['EXPIRE'] < time()) {
            $_SESSION = array();
            session_destroy();
        }
    }

    static function update($time = 20) {
        if (isset($_SESSION['EXPIRE'])) {
            $_SESSION['EXPIRE'] = time() + $time;
            session_regenerate_id(false);
        }
    }
}

Currently it does not set sessions properly. When I try to call the sessions on pages once I set them it does not fetch properly.

The session isn't expiring before I call it because I never call the function that expires it inside the class on the document.


Solution

  • You can't call your Session class as you need to include session_start() and you are only having this in the start method.

    Option 1: You would have to call session_start() in each page where you want to deal with sessions

    Option 2: Add a function to your class and call it after your class is created and add in there session_start() so wherever you include the Session Class session_start would already been initialized

    Example:

    Sessions.php

    class Session {
    
        static function init(){
             session_start();
        }
        //rest of your methods...
    }
    
    //initialize it
    Session::init();
    
    

    page-that-uses-session.php

    include('Sessions.php');
    Session::update();