重定向PHP解析角色

时间:2016-01-18 17:18:16

标签: php

美好的一天, 我正在建立一个网站,我有一个小问题。当我登录用户时,如果他是一个简单的用户或管理员,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未定义,我必须再次登录。问题是什么?

1 个答案:

答案 0 :(得分:1)

错误很明显未定义变量

您没有在代码中定义此变量:

$_SESSION['userrole']

您的会话工作正常,您只需定义已定义 $ _ SESSION [&#39;用户&#39;]的角色。