簡體   English   中英

登錄特定的用戶角色后,如何打印文本?

[英]How can I print a text, when a specific user role is logged in?

我的mySQL數據庫中有一個簡單的成員表,其中包含以下字段: memberID,用戶名,密碼,角色

登錄特定角色后 ,我想打印文本。我嘗試使用用戶名進行嘗試,並且在這里工作得很好:

  <?php if ($_SESSION['username'] == 'Barbara') : ?>
            <span>Hello Admin!</span>
       <?php endif; ?>

但是,當我嘗試對角色執行相同的操作時,它沒有打印任何內容。

<?php if ($_SESSION['role'] == 'admin') : ?>
            <span>Hello Admin!</span>
       <?php endif; ?>

可能是什么原因?

這是我的登錄腳本:

<?php

require_once('includes/config.php');


if( $user->is_logged_in() ){ header('Location: memberpage.php'); } 


if(isset($_POST['submit'])){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if($user->login($username,$password)){ 
        $_SESSION['username'] = $username;
        header('Location: memberpage.php');
        exit;

    } else {
        $error[] = 'Wrong username or password or your account has not been activated.';
    }

}


$title = 'Login';


require('layout/header.php'); 
?>

您嘗試下面的代碼

<?php session_start();
$_SESSION['name']='urname';
$_SESSION['role']='admin';
if($_SESSION['role']=='admin')
{?>
<span>your logged as a admin</span>

使用新方法更新了User.php類,以基於用戶名獲取userData。 您只需要使用一次用戶名即可。 執行(除非您想加載其他用戶數據)

然后更新會話設置器以獲取角色數據,並進行設置。

最佳喬納斯


嘗試使用以下方法更新您的User.php文件:

<?php
include('password.php');
class User extends Password{
    private $_db;
    private $_userData;

    function __construct($db){
        parent::__construct();

        $this->_userData = null;

        $this->_db = $db;
    }



    private function get_user_hash($username){  
        try {
            $stmt = $this->_db->prepare('SELECT password FROM members WHERE username = :username AND active="Yes" ');
            $stmt->execute(array('username' => $username));

            $row = $stmt->fetch();
            return $row['password'];
        } catch(PDOException $e) {
            echo '<p class="bg-danger">'.$e->getMessage().'</p>';
        }
    }
    public function login($username,$password){
        $hashed = $this->get_user_hash($username);

        if($this->password_verify($password,$hashed) == 1){

            $_SESSION['loggedin'] = true;
            return true;
        }   
    }

    public function getUserData($username = null)
    {
        if( is_null( $this->_userData ) && is_null( $username ) )
        {
          return null;
        }

        if( !is_null( $this->_userData ) && is_null( $username ) )
        {
            return $this->_userData;
        }

        if( !is_null($username) )
        {
            try {
                $stmt = $this->_db->prepare('SELECT username,role FROM members WHERE username = :username AND active="Yes" ');
                $stmt->execute(array('username' => $username));

                $this->_userData = $stmt->fetch(PDO::FETCH_OBJ);
                return $this->_userData;
            } catch(PDOException $e) {
                echo '<p class="bg-danger">'.$e->getMessage().'</p>';
            }
        }

    }

    public function logout(){
        session_destroy();
    }
    public function is_logged_in(){
        if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
            return true;
        }       
    }

}
?>

然后,執行以下操作:

<?php

    require_once('includes/config.php');


    if( $user->is_logged_in() ){ header('Location: memberpage.php'); } 


    if(isset($_POST['submit'])){

        $username = $_POST['username'];
        $password = $_POST['password'];

        if($user->login($username,$password)){ 
            $userData = $user->getUserData( $username );
            // This is where you set your username session
            $_SESSION['username'] = $username;
            // Set your role session here aswell

            $_SESSION['role'] = $userData->role; 

            header('Location: memberpage.php');
            exit;

        } else {
            $error[] = 'Wrong username or password or your account has not been activated.';
        }

    }


    $title = 'Login';


    require('layout/header.php'); 
    ?>

您的會話僅存儲用戶名而不是角色,您需要從數據庫中加載角色,即

<?php
  $rUserInfo=mysql_query("select * from members where username='".addslashes($_SESSION['username'])."'");
  if($aUserInfo=mysql_fetch_array($rUserInfo))
  {
    if($aUserInfo['role']=='admin')
    { 
?>
        <span>Hello Admin!</span>
<?php  
    }
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM