2015-08-08 149 views
0

我一直在工作幾個小時,因此我無法找到解決方案,因此我希望這裏有人能幫助我。我現在的代碼工作正常,但我想只有當用戶以管理員身份獲得級別時纔會發出'回顯',如果登錄的用戶沒有此狀態,則鏈接將不會顯示。 下面你可以看到index.php。我想在那裏添加例如:管理面板,但只有當用戶是管理員時才能看到此鏈接。僅限角色管理員的受限頁面

<p>Welcome <?php echo $_SESSION['username']; ?>!</p> 
<p>This is secure area.</p> 
<p><a href="dashboard.php">Dashboard</a></p> 
<a href="logout.php">Logout</a> 

我的身份驗證文件

<?php 
    session_start(); 

    if(!isset($_SESSION["username"])){ 
     header("Location: login.php"); 
     exit(); 
    } 
?> 

我希望有一個人在這裏可以解釋我是如何做到這一點。

謝謝!

Loes。

+0

歡迎堆棧溢出。你'$ _SESSION'需要包含一些方法來顯示用戶的級別,然後你可以從中獲益。 – Twisty

+0

有點像if($ _ SESSION [「type」] =='admin') –

回答

0

爲用戶訪問級別添加一個額外的會話變量。然後,您可以通過將非管理員用戶重定向回索引/主頁來保護網頁。你也可以有一些簡單的代碼來顯示管理鏈接。

<?php 
    session_start(); 
    if($_SESSION['access'] == 'admin'){ 
     echo "<a href='adminpage.php'>admin panel</a>"; 
    } 
?> 

重定向非管理員用戶:

<?php 
    session_start(); 

    if($_SESSION["access"] != 'admin'){ 
     header("Location: home.php"); 
    } 
?> 
0

如果用戶是管理員

這個環節應該只看到這是不是最好的解決辦法,但最快:

home.php

<?php 
    if($_SESSION['username'] == 'admin'){ 
     ?> 
      <a href='administration.php'>Administration Panel</a> 
     <?php 
    } 
?> 

administration.php

<?php 
    if($_SESSION['username'] == 'admin'){ 
     ?> 
      <p>Welcome <?php echo $_SESSION['username']; ?>!</p> 
      <p>This is secure area.</p> 
      <p><a href="dashboard.php">Dashboard</a></p> 
      <a href="logout.php">Logout</a> 
     <?php 
    }else{ 
     ?> 
      <p>Restricted Area</p> 
     <?php 
    } 
?> 

如果你想真正的許可制度,這取決於其中的用戶名和密碼保存

+0

謝謝!我更喜歡我可以從mysql數據庫中檢索數據,我猜它更安全一些。 – Loes

0

當你檢查你的數據庫的用戶,數據庫認證可以包含代表用戶能力的數字。例如,管理員可以有一個9,其中一個只讀東西的普通用戶可能有1個。貢獻者可能有5個。

當用戶通過身份驗證併爲該用戶構建會話時,從該用戶收集此值數據庫並將其添加到您的會話。

驗證文件

<?php 
$user = isset($_POST[user])?$_POST['user']:""; 
$pass = isset($_POST['pass'])?$_POST['pass']:""; 

if(!empty($user) AND !empty($pass)){ 
     // Authenticate against DB 
     // Connect DB code & Injection safe query look code ... 
     // Result set: 
     $security = $row['security']; 
} else { 
     header("location: login.php?error=Bad Username or Password"); 
} 
if(isset($security)){ 
    session_start(); 
    $_SESSION['username'] = $user; 
    $_SESSION['security'] = $security; 
    header("location: index.php?login=successful"); 
} 
// if all fails, logout 
header("location: logout.php"); 
?> 

指數

<?php 
session_start(); 
?> 
<html> 
<body> 
<?php 
echo (($_SESSION['security'] > 6)?"<a href='dashboard.php'>Dashboard</a>":"") . "\r\n"; 
echo ((isset($_SESSION['username']))?"<a href='logout.php'>Logout</a>":"<a href='login.php'>Log In</a>") . "\r\n"; 
?> 

</body> 
</html> 
相關問題