我有一个非常简单的功能,它检查会话中是否存在[' id']并重定向,如果是这种情况,位于我的login.php的顶部 它可以工作,但只有在我提交两次登录表单后才能使用。
require_once' inc / header.inc';
包含在html之前:
<?php
require 'inc/init.php';
session_regenerate_id();
?>
init.php包含
<?php
session_start();
if(!isset($_SESSION) || empty($_SESION) ){
require 'inc/db.php';
require 'users.class.php';
require 'general.class.php';
require 'functions.php';
$users = new Users($db);
$general = new General($db);
$errors = array();
}
?>
这是我的login.php的顶部:
<?php
require_once 'inc/header.inc';
if ($general->is_logged_in()) {
header("Location: index.php");
exit;
}
然而,页面第一次继续加载。
如果您关心它的功能:
public function is_logged_in() {
if (isset($_SESSION['id'])) {
return true;
} else {
return false;
}
}
答案 0 :(得分:0)
session_start();
session_regenerate_id();
在您的函数中,首先生成id,然后启动会话,因此不会将值分配给会话。
答案 1 :(得分:0)
刚从login()返回/ setid后添加重定向,而不是依赖于检查页面加载时是否存在id并且在页面加载时运行重定向 - 用户无论如何都不能重新进入页面。不知道为什么前者不起作用。