检查数据库是否有权限,如果没有找到则重定向

时间:2014-09-04 08:41:02

标签: php mysql session redirect permissions

我有一个包含usertypes和页面的表,例如

页面usertype
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');
}

1 个答案:

答案 0 :(得分:0)

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