php - 检查数据库的权限,如果找不到则重定向

标签 php mysql session redirect permissions

我有一个包含用户类型和页面的表格,例如

页面用户类型
索引.php 1
索引.php 2
测试.php 1

这样只有特定的用户类型才能看到页面。我想将其放入 header.php 文件中,以便浏览器检查该用户是否有权查看该页面,如果没有,则将其带回登录屏幕。

当用户登录时,用户类型存储在 session 变量中。

我将以下内容放入 header.php 中,以便它可以通过包含进入每个页面,但它总是允许他们查看页面,无论他们的权限如何。未登录和超时部分有效,但权限部分无效。

        <?php
session_start();
include'connect_db.php';
# Redirect if not logged in.
if ( !isset( $_SESSION[ 'userid' ] ) ) { require ( 'login_tools.php' ) ; load() ; }

if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) { 
    //redirect to login.php
    header('Location:login.php'); 
} else{ //if we haven't expired:
    $_SESSION['last_activity'] = time();

}

# check for permissions
$q = "SELECT usertypeid, page FROM permissions WHERE usertypeid='$_SESSION[ 'usertypeid' ]' AND page=basename( $_SERVER['PHP_SELF'] )" ;
    $r = mysqli_query ( $dbc, $q ) ; 
if( @mysqli_num_rows( $r ) == 1 ) {//permission in table 
    $_SESSION['last_page'] = $_SESSION['current_page']; 
} else{ //permission not in table 
    header('Location:login.php');
}

最佳答案

您的 mysql 查询有语法错误。

$q = "SELECT usertypeid, page FROM permissions WHERE usertypeid='$_SESSION[ 'usertypeid' ]' AND page=basename( $_SERVER['PHP_SELF'] )" ;

应该是

$q = "SELECT usertypeid, page FROM permissions WHERE usertypeid='".$_SESSION[ 'usertypeid' ]."' AND page='".basename( $_SERVER['PHP_SELF'] )."';";

关于php - 检查数据库的权限,如果找不到则重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660951/

相关文章:

java - Java Spring 在无效的 HttpSession 上返回错误

php - 文件类型输入不在循环中

php - 通知: Undefined variable: on insert

php - 从隐藏的表单值中获取来自 silenium php-webdriver 的文本

php - 选择返回空数组的sql变量

java - 使用 persistence.xml 连接到 MySQL 数据库。为什么 EntityManager 查询返回 null?

mysql - 缓慢的 MySQL 更新/插入/删除

javascript - Express.js session 在不同网络上的不同机器上的用户之间持续存在?

node.js - Passport 登录和持久 session

php - 在不实际访问页面的情况下获取网页源代码