【发布时间】:2011-08-25 11:21:50
【问题描述】:
我正在尝试编写一个 if 语句,该语句基本上检查用户的引荐来源网址是否在允许的引荐来源网址列表中,如果没有则失败。
我有两个变量控制$this->allowAllReferer 和$this->allowEmptyReferer,它们根据它们的名称分别决定是否应允许每个引荐来源网址访问以及是否允许空引荐来源网址。以及$this->allowedReferers,它是一个允许的引荐来源数组。
我有这个功能,我很确定它不能正常工作,但我一直盯着并调整了半个小时,我已经到了无法判断它是否工作的地步.
//If the referee is empty and allow empty referrer is false
//or
//If it is not in the allowed list and allow all referer is false
if(!(empty($_SERVER['HTTP_REFERER']) && $this->allowEmptyReferer)
&&
!(!$this->allowAllReferer && in_array(
strtolower(empty($_SERVER['HTTP_REFERER']) ? null : $_SERVER['HTTP_REFERER']), //Silly php access null variable
$this->allowedReferers)
)) {
throw new sfException("Internal server error. Please contact system administrator. File download disabled.");
}
你知道正确或更好的方法吗/你能确认上述工作吗?
案例,希望这更清楚
empty_referrer | allowEmpty | in_array | allReferer | result
----------------------------------------------------------------
true | true | false | false | false - no error - empty allowed
false | true | false | false | true - error - not in array
false | true | false | true | false - no error - not in array but allowed
false | false | false | false | true - error - empty and now allowed
【问题讨论】:
-
你的真值表不完整 ;) 它需要 16 (2^4) 行 ^^
-
哈!是的,我知道,只是在四点后失去了兴趣,并认为到那时我会明白这个想法的 xD
标签: php if-statement symfony1 logic