簡體   English   中英

重定向PHP解析角色

[英]redirecting PHP resolving the roles

美好的一天,我正在建立一個網站,但遇到了一個小問題。 當我登錄用戶時,如果他是簡單用戶或管理員,則php代碼將從數據庫獲取信息。

    <?php 
require("session.php");
if(!empty($_POST)){
    $user='';
    $log_control=false;
    $q="SELECT id,username,email,salt,password FROM users WHERE username=:username LIMIT 1";
    $q_par=array(':username'=>$_POST['user']);
    try{
        $statment=$dbh->prepare($q);
        $res=$statment->execute($q_par);
    }catch(PDOException $e)
    {
    die("Can't execute query:" . $e->getMessage());
    }       
      $row=$statment->fetch();
      if($row) 
        { 
            $pswd_check=hash('sha256',
            $_POST['password'] . $row['salt']); 
            for($i=0;$i<65536;$i++) 
            {  $pswd_check=hash('sha256', $pswd_check . $row['salt']);  } 

            if($pswd_check===$row['password']) 
            {  $log_control=true; } 
            if($log_control) 
            {   
            $q="SELECT userrole FROM users WHERE username=:username LIMIT 1";

            $q_par=array(':username'=>$_POST['user']);
    try{
        $statment=$dbh->prepare($q);
        $res=$statment->execute($q_par);
    }catch(PDOException $e)
    {
    die("Can't execute query:" . $e->getMessage());
    }   
    $role = $statment->fetchColumn();


                if($role=='U'){
                unset($row['salt']); 
                unset($row['password']);  
                $_SESSION['user'] = $row; 
                header("Location: user.php"); 
                die("Redirecting to: user.php");
                }
                if($role=='S'){
                unset($row['salt']); 
                unset($row['password']);  
                $_SESSION['user'] = $row; 
                header("Location: admin.php"); 
                die("Redirecting to: admin.php");
                }

            }else 
            {  
            echo '<div class="alert">Password or username is wrong!</div>';
                $user=htmlentities($_POST['user'],
                ENT_QUOTES, 'UTF-8'); 
            } 
        }
        }  ?>

因此,這是我嘗試登錄用戶的部分。 但是在同一頁面的另一部分代碼中,我試圖控制用戶是否已登錄。 同時,我正在嘗試獲取有關他是用戶還是管理員的信息。 有了這個 :

<?php

if(isset($_SESSION['user'])){ 
                if($_SESSION['userrole']=='U'){
                header("Location: user.php"); 
                }
                if($_SESSION['userrole']=='S'){         
        header("Location: admin.php"); 
        }}
?>

但是當我再次進入此頁面時(登錄后),它沒有重定向我,它說userrole未定義,我必須再次登錄。 有什么問題?

錯誤非常明顯未定義變量

您未在代碼中定義此變量:

$_SESSION['userrole']

您的會話工作正常,您只需要在定義$ _SESSION ['user']的位置定義角色

暫無
暫無

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

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