php - 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);
}
}
}
目前它没有正确设置会话。当我设置它们后尝试调用页面上的会话时,它无法正确获取。
会话在我调用它之前不会过期,因为我从未在文档的类中调用使它过期的函数。
解决方案
你不能调用你的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();
推荐阅读
- python - 实时从管道获取基于行的输出
- ios - 应用程序终止状态下的区域监控
- azure - Get-AzureRmLogicAppRunHistory 时间跨度问题
- laravel - 未定义索引:当 JWT 使用手机号码作为凭据进行身份验证时,EloquentUserProvider.php 第 126 行中的密码
- c# - 无法从 HoloLens 连接到本地服务器 (XAMPP)
- c++ - 在 .h 文件中定义模板,与在 .h 文件中声明并在 .cpp 文件中定义
- firebase - Firebase Cloud Functions:无法传递从实时数据库检索到的令牌
- php - 为什么我不能得到 yearly_revenue 的错误值
- wpf - OxyPlot XAML 未知系列计数
- angular - Angular 7:延迟加载 WebWorkers 导致 ng serve 在第一次重新加载时崩溃