如何检查用户是否已登录

时间:2017-01-10 14:37:10

标签: php cookies login

我为内部网站构建了一个登录php表单,我正在为我们的Intranet构建。我将在一个登录系统下将几个不同的网站组合在一起。我想知道如果用户直接访问其中一个网址,我是如何检查用户是否已登录的,如果他们未登录,则将其重定向到登录页面,然后成功登录重定向到初始页面。

我已将用户名和密码记录到Cookie中。我知道这不安全,但这又是公司内部网上的内部网站。所以我不需要太多安全保障。登录系统只是跟踪每个用户正在做的事情。

这是我的登录代码,但现在我需要弄清楚如何检查用户是否在不同的网页上登录。

//get info from login form
if(isset($_POST['login'])) {

$username = $_POST['username'];
$password = $_POST['password'];
$rememberme = $_POST['rememberme'];

$username = mysqli_real_escape_string($connection, $username);
$password = mysqli_real_escape_string($connection, $password);
//query users table
$query = "SELECT * FROM users WHERE username = '{$username}' ";
$select_user_query = mysqli_query($connection, $query);

if(!$select_user_query) {

    die("Query failed" . mysqli_error($connection));

}
//loop through user info and assigning to variables
while($row = mysqli_fetch_array($select_user_query)) {

    $db_id = $row['user_id'];
    $db_username = $row['username'];
    $db_password = $row['user_password'];
    $db_firstname = $row['user_firstname'];
    $db_lastname = $row['user_lastname'];
    $db_role = $row['user_role'];

}

//validate username and password
if($username === $db_username && $password === $db_password) {
    //create cookie to remember user
    if(isset($rememberme)) {
        //set cookie to last one year
        setcookie('username', $_POST['username'], time()+60*60*24*365, '/', 'localhost');
        setcookie('password', md5($_POST['user_password']), time()+60*60*24*365, '/', 'localhost');
    } else {
        //cookie expires when browser closes
        setcookie('username', $_POST['username'], false, '/', 'localhost');
        setcookie('password', md5($_POST['user_password']), false, '/', 'localhost');   
    }

    //if user exists send to dashboard
    $_SESSION['username'] = $db_username;
    $_SESSION['user_firstname'] = $db_firstname;
    $_SESSION['user_lastname'] = $db_lastname;
    $_SESSION['user_role'] = $db_role;

    header("Location: ../dashboard.php ");

} else {

    header("Location: ../index.php");

}

}

2 个答案:

答案 0 :(得分:2)

创建一个文件,您应该将其包含在系统的每个文件的顶部,并添加以下代码

session_start();
if(!(isset($_SESSION['username'])))
{
    header("Location:login.php")
}

答案 1 :(得分:2)

以下是检查用户是否已登录,然后将其重定向到首次访问的页面的方法。

首先检查用户是否已登录:

<?php

session_start();
if(!(isset($_SESSION['username'])))
{
    header("Location: index.php");
}

?>

然后在您将使用的所有网页中包含该文件。另外,为URL创建会话。这将位于页面顶部:

<?php include "includes/login-check.php"; ?>
<?php $_SESSION['url'] = $_SERVER['REQUEST_URI']; ?>
<?php ob_start(); ?>

然后在HTML的正文中添加以下内容:

<input type="hidden" name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />

然后在您的登录文件中检查URL会话:

    //check to see what page user first visited
    if(isset($_SESSION['url'])) {
        $url = $_SESSION['url'];
    } else {
        $url = "../index.php";
    }
    //redirect user to page they initially visited
    header("Location: $url");

这应该完全回答你的问题。