INCLUDE_CHECK在php中做了什么?

时间:2010-11-29 12:57:17

标签: php phpmyadmin

嗨,我是php的新手,当我遇到define('INCLUDE_CHECK',true)时;我无法理解它的用途是什么?

PLS。解释

谢谢! Sagar的

3 个答案:

答案 0 :(得分:4)

这是该应用程序稍后使用的常量。 Define()用于创建这些常量。通常,这用于配置数据。要在以后使用此常量,只需在代码中使用字符串INCLUDE_CHECK,就像它是没有$的变量一样。

所以

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

答案 1 :(得分: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,因此会发生错误,导致用户无法运行脚本。

以下示例应该更清楚

foo.php

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

的config.php

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

如果用户直接访问config.php,则未定义INCLUDE_CHECK,因此脚本将因消息无效访问而死亡。如果用户访问foo.php,它将定义INCLUDE_CHECK 然后包含config.php,然后它将回显Hello World。

这是保护配置文件的一种相当方式,btw;请参阅my post here以获得更简单可靠的方法。

答案 2 :(得分:0)

只是对DampeS8N答案的补充,这是正确的。

我读了php.net的链接http://in2.php.net/manual/en/function.define.php 以下示例清楚地表明,任何值都可以在define函数中用于将变量定义为常量,而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请。如果错误评论!

感谢大家的回答!