2010-11-29 73 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。如果错误的评论!

感谢大家的回答!