PHP China | 中国开源之路 's Archiver

cnqn 发表于 2008-11-19 21:25

经常看到这个,是什么意思?

[color=#007700]if(![/color][color=#0000bb]defined[/color][color=#007700]([/color][color=#dd0000]'IN_SITE'[/color][color=#007700])) {
  [/color][color=#ff8000]//exit('Access Denied');
经常在一些代码的前面看到这个,是什么意思?[/color]

syb328 发表于 2008-11-19 21:31

检查上下文中的常量'IN_SITE'是否定义
你可以查看php手册中关于常量和变量定义那一节

yafeikf 发表于 2008-11-19 21:49

防止浏览器直接调用输出

1nject10n 发表于 2008-11-20 00:39

这个其实是为了防止别人从本地构造表单请求到这个文件所写的。下面那行其实不应该注释掉。

他会在一个文件中定义一个常量IN_SITE,然后这个文件包含那个文件,在这里判断IN_SITE如果存在的话,就说明你是通过正常顺序来访问的这个文件,否则你就是从非法途径过来的,就给你显示个access denied,非法访问,这个很有用。

cnqn 发表于 2008-11-20 10:16

我假如在数据库连接页面里使用了这个,在其他调用数据库连接页面中,我该怎么写?
defined('IN_SITE','111');
这样去写,发现还是不行,还是出现'Access Denied'

wsleocn 发表于 2008-11-20 10:18

[color=red]define[/color]('IN_SITE',TRUE);

d9tx 发表于 2008-11-20 10:18

[quote]原帖由 [i]cnqn[/i] 于 2008-11-20 10:16 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=734515&ptid=92056][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
我假如在数据库连接页面里使用了这个,在其他调用数据库连接页面中,我该怎么写?
defined('IN_SITE','111');
这样去写,发现还是不行,还是出现'Access Denied' [/quote]
你写的什么defined -.-
你应该写 define('IN_SITE','111');

wodoe 发表于 2008-11-20 10:27

楼上is very 强,

少个d多个d不一样的:biggrin:

wsleocn 发表于 2008-11-20 10:39

回复 8# wodoe 的帖子

一个是定义常量
一个是检查是否已经定义了此常量

cnqn 发表于 2008-11-20 10:48

define('IN_SITE',false);
发现这样写也是能通过的,唯一要注意的地方就是这个一定要写在include_once数据库文件上面
下面就会报错

d9tx 发表于 2008-11-20 18:31

[quote]原帖由 [i]cnqn[/i] 于 2008-11-20 10:48 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=734600&ptid=92056][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
define('IN_SITE',false);
发现这样写也是能通过的,唯一要注意的地方就是这个一定要写在include_once数据库文件上面
下面就会报错 [/quote]
你不是在判断 if(IN_SITE)
而且是在判断IN_SITE这个常量是否被定义,
不论他被定义成false和true...

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.