ECshop中defined('IN_ECS')的實現原理

在PHP中經常看到如下代碼
if (!defined('IN_ECS'))
{
    die('Hacking attempt');
}

實現的原因以及原理如下:

    ecshop裏的有些.php頁是不需要用戶通過url直接訪問的,用來被其它頁調用的,例如/includes/init.php,就不需要直接訪問,通過url訪問你的網址/includes/init.php是無意義的,所以我們在可以直接方問的php里加上define('IN_ECS', true);

例如在index.php中有如下代碼,一開頭就設置IN_ECS的值爲true然後纔去加載init.php這樣init.php文件中IN_ECS的值就爲true,這時候引入cls_mysql.php也可以引入,因爲此時IN_ECS的值也是爲true

define('IN_ECS', true);

require(dirname(__FILE__) . '/includes/init.php');

在頁面直接訪問

出現這樣的結果


在不能直接訪問的php里加上
if (!defined('IN_ECS'))
{
    die('Hacking attempt');
}
這樣當直接訪問init.php裏就會顯不
Hacking attempt
從頁起到禁止訪問的目的,而其它頁面在調用init.php時是正常的

這樣做更安全

這也是一種設計思想,防止其它文件不正常調用或者防止前臺直接訪問文件。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章