[英]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.