簡體   English   中英

Slim 框架請求驗證

[英]Slim Framework Request Validation

你好,所以我使用的是瘦框架,我有一個代碼來檢查所有輸入是否為空,這是代碼:

$request = \Slim\Slim::getInstance()->request()->post();
    if($request['txt_1'] != "" AND $request['txt_2'] != "" AND $request['txt_3'] != "" AND $request['txt_4'] != "" AND $request['txt_5'] != "" AND $request['txt_6'] != "" AND $request['txt_7'] != "" AND $request['txt_8'] != "" AND $request['txt_21'] != "" AND $request['txt_22'] != "" AND $request['txt_23'] != "" AND $request['txt_24'] != "" AND $request['txt_31'] != "" AND $request['txt_32'] != "" AND $request['txt_41'] != "") {
        $status = "0";
    } else {
        $status = "1";
    }

我想要做的不是對條件中的所有請求輸入進行編碼,我只想要一個變量來檢查所有請求輸入(如果不是空的)。 有辦法嗎? (!empty($allFields)) 先感謝您。

如果其中一個值不為空,您可以遍歷 $request 數組並設置 $status。

或者你可以在我猜的空字符串上內爆數組。

$status = implode ('', $request) !== '';

看看下面的函數。 它需要兩個參數。 $requestData 將包含您通過請求收到的所有參數。 $parameters 將是一個數組,您將在其中寫入要確保已在請求中收到的所有參數。

對函數的調用可以是這樣的:

checkParameters($requestData,array('txt_1','txt_2','txt_3','txt_4')) ;

如果您有很多參數,您也可以創建一個單獨的參數數組,然后將其作為參數傳遞。

 function checkParameters($requestData,$parameters) 
        {   

            $check=0;
            if ((count($requestData) >= count($parameters)) 
            {
                $check=0;
                foreach ($requestData as $key=>$value) 
                {
                    if (in_array($key,$parameters, TRUE)) 
                    {
                        $check=1;
                        unset($parameters[array_search($key,$parameters)]);
                    }
                    else
                    {
                            return 0;
                    }
                }
            }
            if($check)
            {   
                if (count($parameters) == 0) 
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
            else
            {
                return 0;
            }
        }

返回 1 代表正常運行,而 0 代表一些錯誤。

使用下面的函數來檢查所有參數以進行驗證,它適用於所有類型的請求方法(put/post/get/...)。 param 應該是字段數組,例如: $required_fields=array('field_1','field_2');

function verifyRequiredParams($required_fields) {
    $error = false;
    $error_fields = "";
    $request_params = array();
    $request_params = $_REQUEST;
    // Handling PUT request params
    if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
        $app = \Slim\Slim::getInstance();
        parse_str($app->request()->getBody(), $request_params);
    }
    foreach ($required_fields as $field) {
        if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {
            $error = true;
            $error_fields .= $field . ', ';
        }
    }

    if ($error) {
        // Required field(s) are missing or empty
        // echo error json and stop the app
        $response = array();
        $app = \Slim\Slim::getInstance();
        $response["error"] = true;
        $response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
        echoResponse(400, $response);
        $app->stop();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM