Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数据库的权限,如果找不到,则重定向_Php_Mysql_Session_Redirect_Permissions - Fatal编程技术网

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

Php 检查数据库的权限,如果找不到,则重定向,php,mysql,session,redirect,permissions,Php,Mysql,Session,Redirect,Permissions,我有一个包含用户类型和页面的表,例如 页面用户类型 index.php 1 index.php 2 test.php 1 这样,只有特定的用户类型才能看到页面。我想把它放在header.php文件中,以便浏览器检查该用户是否具有查看页面的权限,如果没有权限,则将其带回登录屏幕 当用户登录时,usertype存储在会话变量中 我将以下内容放在header.php中,这样它就可以通过include在每个页面上显示,但它总是允许他们查看页面,不管他们有什么权限。“未登录”和“超时”部分正在工作,但“权

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

页面用户类型
index.php 1
index.php 2
test.php 1

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

当用户登录时,usertype存储在会话变量中

我将以下内容放在header.php中,这样它就可以通过include在每个页面上显示,但它总是允许他们查看页面,不管他们有什么权限。“未登录”和“超时”部分正在工作,但“权限”部分不工作

        <?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'] )."';";

使用phpmyadmin或mysql workbench在sql中运行查询并显示结果