Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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_If Statement_Session Variables_Rbac - Fatal编程技术网

Php 基于角色的简单访问

Php 基于角色的简单访问,php,if-statement,session-variables,rbac,Php,If Statement,Session Variables,Rbac,在登录时,我执行session_start(),然后设置以下会话变量: $_SESSION['id'] = $row['id']; $_SESSION['role'] = $row['role']; $_SESSION['customer_id'] = $row['customer_id']; 稍后,在另一个php中,我检查这些$\u会话变量的值,以确定将使用哪个SELECT语句访问数据库,如下所示: $sess_cid = $_SESSION['customer_id']; if ($_S

在登录时,我执行session_start(),然后设置以下会话变量:

$_SESSION['id'] = $row['id'];
$_SESSION['role'] = $row['role'];
$_SESSION['customer_id'] = $row['customer_id'];
稍后,在另一个php中,我检查这些$\u会话变量的值,以确定将使用哪个SELECT语句访问数据库,如下所示:

$sess_cid = $_SESSION['customer_id'];

if ($_SESSION['role'] = 1) {
    $sql = 'SELECT  * FROM  my_table';

} elseif ($_SESSION['role'] = 2) {
    $sql = 'SELECT  * FROM  my_table WHERE  id = "$sess_cid"';

} else {
    echo "not authorized to access app";
}
是否未正确设置if()的格式?数据库中的所有内容都应设置为INT值。

尝试以下操作:

$sess_cid = $_SESSION['customer_id'];

if ($_SESSION['role'] == 1) {
    $sql = 'SELECT  * FROM  my_table';

} else if ($_SESSION['role'] == 2) {
    $sql = 'SELECT  * FROM  my_table WHERE  id = "$sess_cid"';

} else {
    echo "not authorized to access app";
}
必须使用“=”运算符比较会话值

我甚至建议您在多个if-else上使用Switch语句

$sess_cid = $_SESSION['customer_id'];

switch($_SESSION['role']) {
   case 1:
    $sql = 'SELECT  * FROM  my_table';
    // do whatever you want to do here..
    break;

   case 2:
    $sql = 'SELECT  * FROM  my_table WHERE  id = "$sess_cid"';
    // do whatever you want to do here..
    break;

   default:
    echo "not authorized to access app";
    break;
}

萨尼-谢谢你。我想知道==的用法,但我在网上看到了许多==的例子。这么简单。感谢you@Bricked伟大的你介意选择正确的答案吗?;)现在唯一的小问题是我的选择是不拉任何记录。我有id=8和$sess_cid=8的记录,但它们没有拉取。我想知道是否需要将$sess_cid转换为intval?请尝试“从我的_表中选择*,其中id=$sess_cid”,这将按原样接受输入参数。如果这不起作用,那么在查询后发布用于检索结果的代码。如果($_SESSION['role']==1){$sql='SELECT*FROM my_table';}elseif($_SESSION['role']==2){$sql='SELECT*FROM my_table,其中id=“$cust_id”;}否则{echo“无权访问应用”;}foreach($pdo->query($sql)作为$row){。。。