我正在嘗試編寫一個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 –