2017-04-25 50 views
2

我正在使用這個會話邏輯如果用戶不是管理員,所以他不必訪問管理頁面功能是好的會話邏輯?方法或者我應該用另外一個請指導我further.LOOK這個索引頁我有一些環節需要訪問其他成員則管理,各個環節的管理,請告訴我什麼是鏈接URL中的組件使用的是訪問管理頁面鏈接沒有給出版商

<?php 
    include "config.php"; 
    session_start(); 
    if((!isset($_SESSION['username'])) && (!isset($_SESSION['type']))){ 
    header('location:login.php'); 
} 
if($_SESSION['type'] != 'Administrator') 
{ 
    header('location:index.php'); 
} 
?> 

    index.php 
<?php 
include "config.php"; 
session_start(); 
if(!isset($_SESSION['username'])) 
{ 
header('location:login.php'); 
} 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
</head> 
<body> 
<div class="container"> 
<div class="row"> 
    <div class="col-md-3"> 
    <div class="list-group"> 
     <a href="#" class="list-group-item">Article</a> 
     <a href="#" class="list-group-item">Categories</a> 
     <?php 
      if($_SESSION['type']=='Administrator'){ 
      ?> 
     <a href="#" class="list-group-item">Media</a> 
     <a href="#" class="list-group-item">tempelate</a> 
     <a href="test.php" class="list-group-item">Setting</a> 
      <?php 
      }else{ 
      ?> 
     <a href="#" class="list-group-item">Profile</a> 
      <?php 
      } 
      ?> 
     <a href="logout.php" class="list-group-item">Logout</a> 
    </div> 
    </div> 
</body> 
</html> 

回答

0

由於您希望用戶無法訪問管理頁面,因此稍微更強大的檢查可能首先確定當前頁面是否確實是admin.php。如果是,則可以驗證type,以便知道在授予訪問之前它是否確實設置爲Administrator

如果未設置或設置爲其他內容,則用戶可能會被帶回到index.php頁面。

<?php 
    include "config.php"; 
    session_start(); 


    $url_components = explode('/', $_SERVER['SCRIPT_NAME']); 
    $current_url = $url_components[count($url_components) - 1]; 

    if(!isset($_SESSION['username'])){ 
     header('location:login.php'); 
    } 

    if(!($current_url == 'admin.php' 
      && isset($_SESSION['type']) 
      && $_SESSION['type'] == 'Administrator')){ 
     header('location:index.php'); 
    } 
?> 
+0

我已經添加了index.php代碼,請檢查我感到困惑爆炸什麼scrpt名稱和current_url?我使用的是什麼東西 –

+0

['__SERVER ['SCRIPT_NAME']'](http://php.net/manual/en/reserved.variables.server.php)爲您提供了腳本所在URL的完整路徑逃離。例如:'http:// localhost/project/file.php'。我們使用['explode'](http://php.net/manual/en/function.explode.php)基於'/'來分割'$ current_url'變量中的'file.php'。現在,如果'$ current_url'是'admin.php',剩下的檢查就可以知道是否必須授予訪問權限。如果您仍然感到困惑,請對每個變量嘗試'print_r'或'echo',您可以看到它們是如何被使用的。 –

+0

感謝您的幫助 –