仅允许某些用户帐户进入页面

时间:2020-06-22 15:52:28

标签: php mysql

我正在寻找一种方法来查找帐户,检查该帐户是否包含某个变量,然后允许其访问页面(基本上类似于仅管理员页面)。 这个项目就像一个学校的CMS系统,所以我想让它成为只有教师才能实际访问该页面,以便他们可以添加更多的学生,等等。

这是我已经尝试过的:

if( $_SESSION['teacher']=='1'){
(then show any other users another page:)
    header("Location: demo.com/home.php");
   }

(想象demo.com是真实域名)

此代码段实际上使每个用户(而不只是老师)都可以进入页面,因此它对我不起作用。

从这个片段中,我试图仅让数据库中教师节上带有“ 1”的人进入页面。 我正在为老师使用1个,为学生使用0个。

数据库图片:

Database Image

基本上,我只希望教师用户查看此页面。

我很高兴在该主题上进行更多的扩展并在数据库结构和登录系统上共享更多图像-但我的主要问题是“如何限制对页面的访问?”

启动会话的代码:

<?php
session_start();
require_once 'dbconnect.php';

if (isset($_SESSION['userSession'])!="") {
    header("Location: home.php");
    exit;
}

if (isset($_POST['btn-login'])) {
    
    $email = strip_tags($_POST['email']);
    $password = strip_tags($_POST['password']);
    
    $email = $DBcon->real_escape_string($email);
    $password = $DBcon->real_escape_string($password);
    
    $query = $DBcon->query("SELECT user_id, email, password FROM tbl_users WHERE email='$email'");
    $row=$query->fetch_array();
    
    $count = $query->num_rows; // if email/password are correct returns must be 1 row
    
    if (password_verify($password, $row['password']) && $count==1) {
        $_SESSION['userSession'] = $row['user_id'];
        header("Location: home.php");
    } else {
        $msg = "<div class='alert alert-danger'>
                    <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Invalid Username or Password !
                </div>";
    }
    $DBcon->close();
}
?>

检查会话是否打开/存在代码:

<?php
session_start();
include_once 'dbconnect.php';

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

$query = $DBcon->query("SELECT * FROM tbl_users WHERE user_id=".$_SESSION['userSession']);
$userRow=$query->fetch_array();
$DBcon->close();

?>

1 个答案:

答案 0 :(得分:0)

首先,请确保$ _SESSION ['teacher']中存储了什么值。 只需回显值

echo $ _SESSION ['teacher'];

从“教师”列获取值

$ query = $ DBcon-> query(“ SELECT user_id,电子邮件,密码,教师FROM tbl_users WHERE email ='$ email'“);

然后创建一个会话

$ _ SESSION ['teacher'] = $ row ['teacher'];

完整代码

<?php
session_start();
require_once 'dbconnect.php';

if (isset($_SESSION['userSession'])!="") {
    header("Location: home.php");
    exit;
}

if (isset($_POST['btn-login'])) {
    
    $email = strip_tags($_POST['email']);
    $password = strip_tags($_POST['password']);
    
    $email = $DBcon->real_escape_string($email);
    $password = $DBcon->real_escape_string($password);
    
    $query = $DBcon->query("SELECT user_id, email, password, teacher FROM tbl_users WHERE email='$email'");
    $row=$query->fetch_array();
    
    $count = $query->num_rows; // if email/password are correct returns must be 1 row
    
    if (password_verify($password, $row['password']) && $count==1) {
        $_SESSION['userSession'] = array('user_id'=>$row['user_id'],'teacher'=>$row['teacher']);
        header("Location: home.php");
    } else {
        $msg = "<div class='alert alert-danger'>
                    <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Invalid Username or Password !
                </div>";
    }
    $DBcon->close();
}
?>

检查会话是否打开/存在代码:

<?php
session_start();
include_once 'dbconnect.php';

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

$query = $DBcon->query("SELECT * FROM tbl_users WHERE user_id=".$_SESSION['userSession']['user_id']);
$userRow=$query->fetch_array();
$DBcon->close();

?>