2016-06-28 60 views
0

我在PHP中有一個問題,我正在嘗試2個小時來解決這個問題。PHP常量包括

我有一個應用程序,我希望所有用戶都從index.php文件開始。該文件包含登錄文件和內容文件。

現在,通常用戶可以直接訪問content.php文件。

因爲這個原因,我定義了一個常數,當用戶在index.php開始時設置。

這個文件看起來像

define('NAME','X'); 
include("Login.php"); 
include("content.php"); 

現在我定義常量,我想在我的包含文件,以檢查是否該常數設置爲顯示我的數據。在登錄文件中,這沒有問題。 然後,我有第二個,如果我只是把它寫這樣它的工作原理:

if(defined('NAME')) 
    { 
     showContent(); 
    } 

但我也有$ _ POST檢查並與它不工作!

if(defined('NAME')) 
{ 
if (isset ($_POST ["Login"])) 
{ 
    if ($_POST ["Login"] == "True") {  
     echo showContent(); 
    } 
} 
} 

沒有if(定義('NAME'))周圍它工作正常!我從JavaScript文件中獲取帖子變量。

你能解釋一下爲什麼它只與第二個定義的而不是第二個定義一致?

很顯然,常數是正確定義的。

感謝。

+0

你知道,一個常數不會持續在整個頁面?更好地使用'$ _SESSION ['hasseenindex']''。 – Jeff

+0

如果您的condintion if(defined('NAME'))返回false,那麼您的發佈請求可能不會調用index.php腳本。你能告訴我們你的HTML表單嗎? – zajonc

+0

Javascript文件將值發送到什麼PHP文件? –

回答

0

該常量不像會話值,它不會持續存在多個頁面。

當您對頁面執行POST請求時,常量不再被定義,因此您的代碼不會被執行。

它使用常量作爲安全措施來防止未經授權的訪問,您可以考慮做與您現在正在做的事情「相反」的事情,而不是檢查常量是否已設置,檢查它是否不正確,然後做一個403.

if(!defined('NAME')) { 
    die('403'); 
}