我为内部网站构建了一个登录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");
}
}
答案 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");
这应该完全回答你的问题。