2010-11-29 78 views

回答

4

這是一個稍後被該應用程序使用的常量。 Define()用於創建這些常量。通常用於配置數據。要稍後使用此常量,只需在代碼中使用字符串INCLUDE_CHECK就像它是一個沒有$的變量。

所以

if(INCLUDE_CHECK) 
{ 
// Do code that only should happen if you want it to. 
} 
+0

嗨,感謝您的快速回復。那麼它是否像布爾變量? – Sagar 2010-11-29 13:02:59

+0

他們可以。他們可以容納任何非複雜的數據結構。String,float,int,bool。他們不能容納對象或數組。如果你真的對PHP非常陌生,那麼我只會閱讀關於Define()的php.net條目,如果這太難理解,請稍後再回來。這是PHP的中等先進方面。 – DampeS8N 2010-11-29 13:07:35

0

INCLUDE_CHECK不是PHP本身的特點,只有一些代碼,有人用PHP編寫的。第一次點擊on google向我們展示了一個配置文件,用戶試圖通過檢查變量是否被定義來保護它。

在我的谷歌發現狙擊採取的方法是這樣

  • 可直接(例如http://example.com/foo.php)引用將定義INCLUDE_CHECK然後包括檢查INCLUDE_CHECK一個文件的文件,例如config.php文件;因爲foo.php已經定義了它,如果用戶直接訪問config.php(如http://example.com/config.php),那麼INCLUDE_CHECK將不會被定義,所以這將會正常工作
  • 因此會發生錯誤,從而阻止用戶運行腳本。如果用戶直接訪問的config.php

以下實施例應說明清楚

foo.php

<?php 
defined('INCLUDE_CHECK', true); 
require_once 'config.php'; 
?> 

的config.php

<?php 
if (!defined('INCLUDE_CHECK')) { die ('invalid access'); } 
echo 'Hello World!'; 
?> 

,然後INCLUDE_CHECK是不定義,所以腳本將隨着消息的無效訪問而死亡。如果用戶訪問foo.php,它將定義INCLUDE_CHECK ,然後包含config.php,然後它將回顯Hello World。

這是一種保護配置文件的好方法,順便說一句;請參閱my post here以獲得更簡單可靠的方法。

0

只是除了DampeS8N答案,這是正確的。

我讀php.net的鏈路http://in2.php.net/manual/en/function.define.php 和下面的例子清楚地表明,任何值可以用於內部用於限定變量恆定限定函數和INCLUDE_CHECK只是其中我認爲是某種PHP特徵的變量)

<?php 
define("CONSTANT", "Hello world."); 
echo CONSTANT; // outputs "Hello world." 
echo Constant; // outputs "Constant" and issues a notice. 

define("GREETING", "Hello you.", true); 
echo GREETING; // outputs "Hello you." 
echo Greeting; // outputs "Hello you." 

?> 

@ DampeS8N pls。如果錯誤的評論!

感謝大家的回答!