没有获得预期的用户信息

mar*_*ijn 1 php

我正在尝试创建一个管理页面,并且仅允许具有角色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相同).

Pra*_*man 5

现在你所做的是,你刚刚执行了查询并存储了结果集$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(对于获取的数据).

希望这应该回答你的问题.