显示某些级别PHP的内容

时间:2014-10-13 18:08:51

标签: php sql

我正在创建一个简单的人员面板,它只包含大约10个页面并使用单个sql表。 我的sql表由user_id,user_name,user_email,密码和rank

组成

我正在尝试根据用户在数据库中的排名来显示特定内容,尽管我是PHP的初学者所以我甚至不确定我是否正确地从数据库中提取它。 / p>

                $sql = "SELECT user_name, user_email, user_password_hash, user_id, rank
                    FROM users
                    WHERE user_name = '" . $user_name . "' OR user_email = '" . $user_name . "';";
            $result_of_login_check = $this->db_connection->query($sql);

            // if this user exists
            if ($result_of_login_check->num_rows == 1) {

                // get result row (as an object)
                $result_row = $result_of_login_check->fetch_object();

                // using PHP 5.5's password_verify() function to check if the provided password fits
                // the hash of that user's password
                if (password_verify($_POST['user_password'], $result_row->user_password_hash)) {

                    // write user data into PHP SESSION (a file on your server)
                    $_SESSION['user_name'] = $result_row->user_name;
                    $_SESSION['rank'] = $result_row->rank;
                    $_SESSION['user_email'] = $result_row->user_email;
                    $_SESSION['user_login_status'] = 1;

这是我的login.php文件 这是我用来尝试显示某个特定级别的代码。

我已经设法做到这一点,它会显示一些取决于用户名称的东西,这让我相信我没有正确调用排名。

<?php
if (isset($_SESSION['rank']) && $_SESSION['rank'] == admin) {
echo '<a href="/admin/" class="btn btn-danger">Admin</a>';
} else {
echo " ";
}
?>

1 个答案:

答案 0 :(得分:1)

如果您发布的代码与您的文件中的代码完全相同,那么我认为以下代码行是您的问题:

if (isset($_SESSION['rank']) && $_SESSION['rank'] == admin) {

除非通过define函数定义 admin ,否则我认为它是一个字符串,因此您的代码应为:

if (isset($_SESSION['rank']) && $_SESSION['rank'] == 'admin') {

或者:

if (isset($_SESSION['rank']) && $_SESSION['rank'] == "admin") {

单引号或双引号都可以。我没有看到代码失败的任何其他原因。

我希望这会有所帮助。

跟进:

根据您的评论,您可以使用下一段代码来使用不同的排名:

if (isset($_SESSION['rank'])) {
  if ($_SESSION['rank'] == 'admin') {
    // do admin
  } elseif ($_SESSION['rank'] == 'mod') {
    // do mod
  } elseif ($_SESSION['rank'] == 'member') {
    // do member
  }
}

您还可以使用开关/案例子句:

if (isset($_SESSION['rank'])) {
  switch ($_SESSION['rank']) {
    case: 'admin':
      // do admin
      break; // do not forget the breaks!

    case: 'mod':
      // do mod
      break;

    case: 'member':
      // do member
      break;
  }
}

希望这能帮到你更多。