如果用户未登录,则页面不会重定向

时间:2015-12-17 20:55:34

标签: php session mysqli login

  

usercheck.php

// Start a session.
session_start();

// Check the database for the user.
$user_check = $_SESSION['user_username'];
$ses_sql    = mysqli_query($db,"SELECT user_username FROM users WHERE user_username='$user_check' ");
$row        = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_user = $row['user_username'];

// If the check fails, redirect to the login page.
if(!isset($user_check)) {
    header("Location: /index.php");
}

我在每个页面上都有一个文件,该文件应检查用户是否已登录。如果是,则显示该页面。如果没有,它会重定向回索引。

问题在于它重定向,我无法弄清楚原因。即使成功包含此文件,我也可以轻松键入我想要访问的页面的URL并完全绕过登录。

我做错了什么或过时了?

  

修改:包含该文件的网页示例。

<?php
    $pageTitle = 'Dashboard';
    $pageClass = 'dashboard';
    include_once('./assets/template/template.php');

    // Start the page content.
    function getPageContent() { 

        global $mysqli;

        // Connect to database.
        include_once('./assets/include/db-connect.php');

        // Check the database for the user.
        include_once('./assets/include/db-user-check.php');

        ?>

        ... some html ...

        <?

        // Close the database connection.
        $db->close();
    }
?>

1 个答案:

答案 0 :(得分:0)

尝试将if(!isset($user_check)) {更改为if(!isset($login_user)) {。可能$_SESSION['user_username']的值不正确。如果情况并非如此,请在if语句中尝试var_dump($_SESSION); exit();,然后从那里进行问题排查。