gpt4 book ai didi

php - 如何检查用户是否登录

转载 作者:行者123 更新时间:2023-12-02 04:01:47 28 4
gpt4 key购买 nike

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

我已将他们的用户名和密码记录到 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");

}

}

最佳答案

以下是如何检查用户是否已登录,然后将其重定向到他们第一次访问的页面。

首先检查用户是否登录:

<?php

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

?>

然后将该文件包含在您将使用的所有网页中。另外,为该 URL 创建一个 session 。这将出现在页面顶部:

<?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 session :

    //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");

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

关于php - 如何检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571386/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com