PHP如果用户登录不首先刷新

时间:2014-03-29 12:51:26

标签: php redirect login

我有一个非常简单的功能,它检查会话中是否存在[' 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;
    }
}

2 个答案:

答案 0 :(得分:0)

你不认为它应该像这样吗

session_start();
session_regenerate_id();

在您的函数中,首先生成id,然后启动会话,因此不会将值分配给会话。

答案 1 :(得分:0)

刚从login()返回/ setid后添加重定向,而不是依赖于检查页面加载时是否存在id并且在页面加载时运行重定向 - 用户无论如何都不能重新进入页面。不知道为什么前者不起作用。