距开课0天0时0分-10049957秒
益伦2017-10-12 19:14:40 0 1 686
[PHP讨论组]源自课程章节:PHP表达式与运算符之逻辑运算符举报回复话题 ↕
<?php
//如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exit
defined('AUTH') or exit('存在安全因素不准访问');
?>
为嘛输出结果:存在安全因素不准访问? 常量AUTH没有赋值,怎么直接当false而执行exit了??
1
0
分享
寻觅 beyond 2017-10-12 23:06:581楼
<?php if(!defined('AUTH')){ exit("不准访问....") } ?>
上面的代码和你的等价,
你写的注释是对的,但是你的问题好像和你的注释反了,你先搞清楚or是有个短路定理,有两个条件a or b,如果a为真,不会继续判断b是否为真,只有当a为假时,才判断b是否为真。defined()相当于a,而exit()相当于b,你已经说了AUTH没有赋值,则defined为假,判断exit(),而exit()始终为真,所以执行exit()
赞 +1添加回复
寻觅 beyond 2017-10-12 23:06:581楼
上面的代码和你的等价,
你写的注释是对的,但是你的问题好像和你的注释反了,你先搞清楚or是有个短路定理,有两个条件a or b,如果a为真,不会继续判断b是否为真,只有当a为假时,才判断b是否为真。defined()相当于a,而exit()相当于b,你已经说了AUTH没有赋值,则defined为假,判断exit(),而exit()始终为真,所以执行exit()
赞 +1添加回复