session_start()结转,但isLogged函数仍然重定向

时间:2017-06-21 19:23:27

标签: php

我有一个带有以下功能的functions.php文件;

function isLoggedIn(){
    session_start();
    if (!$_SESSION['Username']){
        header("Location: login");
        echo '<meta http-equiv="refresh" content="0; url=login" />';
        exit;
    }
}

会话应用于以下功能;

function checkLogin($mysqli,$Username,$Pass){
        $Password  = sha1($Pass);
        $Prep1 = "SELECT * FROM infWebAccounts WHERE Username='$Username' AND Password='$Password'";
        $Prep2 = "SELECT * FROM infWebAccounts WHERE Username='$Username'";
        $DataArray = $mysqli->query($Prep1);
        $UserArray = $mysqli->query($Prep2);
        $Maintenance = getWebSettings($mysqli,'Maintenance');
        if (mysqli_num_rows($DataArray) > 0){
            $DataTable = mysqli_fetch_array($DataArray);
            if ($Maintenance == 'Y' && $DataTable['Tier'] != 9 || $DataTable['Tier'] != 10){
                return '5';
            }
            if ($DataTable['Tier'] == 0) {
                return '4';
            }
            session_start();
            $_SESSION['Usernamee']   = $DataTable['Username'];
            $_SESSION['Tier']      = $DataTable['Tier'];
            return '3';
        } elseif (mysqli_num_rows($UserArray) > 0) {
            return '1';
        } else{
            return '2';
        }
    }

在每个页面上,我都包含这个文件并像这样运行isLoggedIn();

<?php
session_start();
include 'API/infMain.php';
IsLoggedIn();
?>

即使登录后,我仍然会被重定向回到登录页面。我回复了会话用户名,它以我的用户名的形式返回,但我仍然被重定向....

4 个答案:

答案 0 :(得分:0)

也许你想要

function isLoggedIn(){
session_start();
if (!isset($_SESSION['Username'])){
    header("Location: login");
    echo '<meta http-equiv="refresh" content="0; url=login" />';
    exit;
}
}

当前代码检查它是否已定义但未设置。

答案 1 :(得分:0)

如果用户已登录,则您正在重定向,不应该

if (!$_SESSION['Username']){

另外,包括session_start();在调用函数之前,函数内部可能会引发警告。

答案 2 :(得分:0)

您设置了拼写错误

$_SESSION['Usernamee']   = $DataTable['Username'];

所以这个检查永远不会检查出来:))

    if (!$_SESSION['Username']){

答案 3 :(得分:0)

发现问题,我将会话设置为&#39;用户名&#39;并检查&#39;用户名&#39;