2015-11-19 51 views
1

這是我的第一篇文章。我希望我做對了。我寫了一小段代碼,它檢查了一些請求參數。有沒有人有線索如何以更短,也許更好的性能方式寫這個?如何縮短這個isset值檢查?

$request = $_REQUEST; 
if (isset($request['customerId']) && 
    ! $request['customerId'] == '' && 
    isset($request['subscriptionId']) && 
    ! $request['subscriptionId'] == '' && 
    isset($request['customer_ext_uid']) && 
    ! $request['customer_ext_uid'] == '' && 
    isset($request['referrer']) && 
    ! $request['referrer'] == '' && 
    $request['referrer'] == 'fastbill' || 
    $request['referrer'] == 'paypal' && 
    $request['do'] == 'success' && 
    $request['do'] == 'success') : 
    echo "good"; 
else : 
    echo "bad"; 
endif; 

最終成功URL應該是這樣的:

https://DOMAIN/?customerId=12347&customer_ext_uid=12347&subscriptionId=12347&referrer=paypal&do=success

提前感謝!

+1

你可以改變所有的'isset的(X)&&! x =='''到'!空(x)' – billyonecan

回答

2

做到這一點的一種方式可能就是這樣,它還會使未來添加更多檢查變得更加容易,並且/或者可以重新使用它。

$required = array('customerID','subscriptionId'); //Fill in the fields you want checked 
$request = $_REQUEST; 

function allOk($required,$request){ 
    foreach($required as $key){ 
     if(empty($request[$key])){ 
      return FALSE; 
      die(); 
     } 
    } 

    if($request['do'] != 'success' || ($request['referrer'] != 'fastbill' && $request['referrer'] != 'paypal')){ 
     return FALSE; 
     die(); 
    } 

    return TRUE; 
} 

然後,您可以使用if語句或三元運算符,具體取決於根據結果需要多少操作。

if(allOk($required,$request)){ 
    echo "good!"; 
}else{ 
    echo "BAD!"; 
} 

三元操作符:

echo (allOk($required,$request)) ? 'good' : 'bad' ; 
+0

這看起來很有前途。在此先感謝,我會嘗試一下! –

+0

@PatrickDahm讓我知道它是如何變成了 – Epodax

+0

它仍然說不好!當我使用這個參數:https:// DOMAIN /?customerId = 1&customer_ext_uid = 1&subscriptionId = 1&referrer = paypal&do = success - 但是閱讀代碼告訴我它應該是正確的。哪裏可能是錯誤? –

2

在客戶端,只需在hiddenField中創建一個新變量併發送該參數來檢查。

+0

可能是一個解決方案,但不是在我的環境中。但感謝您的建議! –