如何缩短这个设定值检查?

时间:2015-11-19 10:39:46

标签: php parameters

这是我的第一篇文章。我希望我做得对。我写了这段小代码,它检查了一些请求参数。有谁知道如何以更短,更好的表现方式写这个?

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

最后,成功网址应如下所示:

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

提前致谢!

2 个答案:

答案 0 :(得分:2)

在客户端,只需在hiddenField中创建一个新变量,然后发送此参数进行检查。

答案 1 :(得分: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' ;