簡體   English   中英

PHP - 限制對登錄用戶的管理頁面的訪問

[英]PHP - Restrict access to admin page for logged on user

我的數據庫中有一個用戶表,每個用戶都有一個auth_level(1-3)。 在我的網站上,我有一個用於添加/刪除新用戶帳戶的管理頁面,我想限制只有具有3級身份驗證級別的用戶訪問此頁面。我一直試圖讓這個用於會話,但我被卡住了。 希望有人可以幫助我。

這是我的限制訪問的代碼。 不知道我哪里出錯了。 check.php啟動會話。

<?php
require_once('check.php');

//This function returns True if auth level = '3'
//Otherwise it returns False
function CheckAccess()
{
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );

    if(!$result)
    {
        header('WWW-Authenticate: Basic realm=“Test restricted area”');
        header('HTTP/1.0 401 Unauthorized');
        return false;
    }
    else
    {
        header("location: admin.php");
    }
}
?>

如果我以身份驗證級別為1或3的用戶身份登錄,則會獲得相同的空白頁面。

我想你永遠不會打電話給CheckAccess() 調用它可能會修復您的錯誤。

執行以下操作完全有效,您的功能正在執行。

if (this=that) { /*do multiple*/ } else //do single;

但是,看來你沒有調用這個功能? 嘗試這個:

<?php
  require_once('check.php');
  CheckAccess();
?>

您缺少函數的結束}因此所有if語句都被PHP視為方法的一部分。

$result =之后添加一個}和之前的if

一個稍微替代的版本,應該達到你想要的

<?php

function CheckAccess() {
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );
    return $result;
}

if (CheckAccess()) {
    header("location: admin.php");
} else {
    header('WWW-Authenticate: Basic realm=“Test restricted area”');
    header('HTTP/1.0 401 Unauthorized');
}

問題是在發送標頭之前已經有輸出:這需要更改

<?php
require_once('check.php');
?>

<?php

//This function returns True if auth level = '3'


//Otherwise it returns False
function CheckAccess()
{
...

對此

<?php
require_once('check.php');

//This function returns True if auth level = '3'

//Otherwise it returns False
function CheckAccess()
{
...

因為標題需要先發送然后內容:)

暫無
暫無

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

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