2012-08-24 38 views
0

作爲此php登錄和重定向軟件的一部分,我有一段代碼需要添加到要保護的每個頁面的開頭。 如果用戶擁有有效的用戶登錄信息,它可以讓用戶完美地工作,但是如果他們轉到另一個「受保護」頁面並嘗試重新訪問原始頁面(或者只是將其地址複製並粘貼到新標籤頁中),它會轉到被拒絕的訪問屏幕。用戶可以登錄到安全頁面,但不會重訪同一頁面

發生此錯誤是因爲會話緩存標題有問題,還是會出現一些更深層的問題?

目前,它看起來像這樣:

<?php 
session_start(); 
session_cache_limiter(); 
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: post-check=0, pre-check=0",false); 

require('config.php'); 

require('functions.php'); 

//this is group name or username of the group or person that you wish to allow access  to 
// - please be advise that the Administrators Groups has access to all pages. 
if (allow_access(Users) != "yes") 
{ 
include ('/home/folder/public_html/members/no_access.php'); 
exit; 
} 
?> 

我試着從別人的問題等改變的信息,但是它並沒有改變的問題。我也看了一下任何相關的鏈接,並確保他們不破等

的允許訪問的功能似乎是這樣的:

function allow_access($group) 
{ 
     if ($_SESSION[group1] == "$group" || $_SESSION[group2] == "$group" || $_SESSION[group3] == "$group" || 
       $_SESSION[group1] == "Administrators" || $_SESSION[group2] == "Administrators" || $_SESSION[group3] == "Administrators" || 
       $_SESSION[user_name] == "$group") 
       { 
         $allowed = "yes"; 
       }else{ 
         $allowed = "no"; 
       } 
     return $allowed; 
} 
+3

理智提示:使用布爾值「true」和「false」,而不是「yes」。 – deceze

+0

好的,謝謝你的提示,我很感激。 – user1470324

+0

您是否禁用了PHP中的所有警告/錯誤?我相信session_start()遇到錯誤,因爲標題已被髮送 – Najzero

回答

0

你並不需要:

session_cache_limiter(); 
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: post-check=0, pre-check=0",false); 

而且可能是導致問題的原因。

,你可以告訴我們什麼改善這樣的回答:

allow_access 

是。當然,使用布爾代替文本yesno

又是什麼Users?從我所看到的不是一個常量嗎?它不是我看到的對象,也不是一個變量......那麼,那是什麼?

+0

是的,我知道我仍然需要學習很多關於PHP,我仍然是一個初學者。我沒有寫這個頭文件代碼,它來自Im使用的一個軟件,它建議將它添加到任何需要安全的頁面中。我會在我的問題中粘貼允許訪問功能。 – user1470324

+0

@ user1470324請問這是什麼軟件? – Sammaye

+0

它的名字實際上是'php login and redirect' - www.mpdolan.com/downloads.php – user1470324

相關問題