我正在尝试编写一个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)行^^ – knittl
ha!是的,我知道,只是失去了兴趣后,四,并认为我会有这个想法在那时xD –