我正在尝试创建一个管理页面,并且仅允许具有角色2的用户由于某种原因而没有向我提供我期望的信息.
<?php
session_start();
require_once('includes/mysql_config.php');
$id = isset($_SESSION['id']) ? $_SESSION['id'] : header('location: login.php');
$user = mysqli_query($con, "SELECT * FROM users WHERE id =".$_SESSION['id']) || false;
if($user['role'] == '2'){
echo "Hello $user['name']";
}
else {
header('location: index.php');
}
?>
Run Code Online (Sandbox Code Playgroud)
当我做vardump($user)它给我输出1.
当我回应$_SESSION['id']它时它给了我正确的id(会话ID与用户id相同).
现在你所做的是,你刚刚执行了查询并存储了结果集$user.您需要从结果集中获取结果.
$user = mysqli_fetch_array($user);
Run Code Online (Sandbox Code Playgroud)
现在它应该按预期工作.
更新:您还应该处理以下内容:
'值和`列名称.也mysqli_real_escape_string()用于逃避一些明显的东西.mysqli_num_rows($user) > 0或精确地在您的情况下, mysqli_num_rows($user) == 1.$user对结果集和行使用了相同的结果.最好有两个单独的变量,比如$userRes(对于结果集)和$userData(对于获取的数据).希望这应该回答你的问题.