如何缩短这个资产价值检查?

How to shorten this isset value check?

这是我的第一个 post。我希望我做对了。我写了这段代码,它检查一些请求参数。有谁知道如何以更短且性能更好的方式编写此代码?

$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

提前致谢!

在客户端只需在隐藏字段中创建一个新变量并发送此参数进行检查。

一种方法可能是这样,它也会让将来添加更多检查和/或重用它变得更容易。

$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' ;