首页 > 解决方案 > PHP 会话登录控制器

问题描述

我正在尝试为我的网站创建一个登录控制器......就让人们保持登录而言,我决定使用会话。

我目前正在尝试创建一个可以在包含会话的控制器文件时引用的类。这将允许我创建、验证(删除)和更新会话。

<?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);
        }
    }
}

目前它没有正确设置会话。当我设置它们后尝试调用页面上的会话时,它无法正确获取。

会话在我调用它之前不会过期,因为我从未在文档的类中调用使它过期的函数。

标签: phpsession-storage

解决方案


你不能调用你的Session类,因为你需要包含session_start(),你只在start方法中有这个。

选项 1:您必须session_start()在要处理会话的每个页面中调用

选项 2:向您的类添加一个函数并在class创建后调用它并在其中添加,session_start()这样无论您在何处包含 Session 类session_start都已经被初始化

例子:

会话.php

class Session {

    static function init(){
         session_start();
    }
    //rest of your methods...
}

//initialize it
Session::init();

使用 session.php 的页面

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

推荐阅读