2017-03-19 42 views
1

我已經用Google搜索了這個,並且在Stackoverflow上也搜索了一個答案。但是關於如何清理複選框值沒有任何明確的答案。如何清理複選框?

我明白,如果我輸入的是:

<input type="checkbox" value="submit_doors"> 

有人能自己開發工具內更換價值 - 這些信息將被髮送到服務器。

那麼我應該如何去清理複選框/收音機輸入?我應該用(int)檢查值,我應該像對其他輸入/選擇字段一樣對值進行消毒處理嗎?

爲了記錄在案,我正在開發使用WordPress我的網站,並進行消毒,例如我在做這個文本輸入:

$turbo = trim(sanitize_text_field(wp_kses($_POST['submit_induction_turbo'], $allowed_html))); 

我應該結束了複選框運行的所有這些檢查嗎?或者這是矯枉過正?

回答

0

首先,您需要爲您的輸入字段命名,以便您可以從$ _POST變量中訪問它。

假設您有以下輸入字段,並且您想對其進行消毒。

<input type="checkbox" name="door" value="submit_doors"> 

您可以使用該函數清理任何複選框。

/** 
* Sanitize checkbox 
* @param int | string $input the input value to be sanitized 
* @param int | string $expected_value The expected value 
* @return int | string it returns the sanitize value of the checkbox. 
*/ 
function prefix_sanitize_checkbox($input, $expected_value=1) { 
    if ($expected_value == $input) { 
     return $expected_value; 
    } else { 
     return ''; 
    } 
} 

例如:如果您要檢查,如果你的用戶從複選框提交值「submit_doors」,那麼你可以使用這樣的功能。

$sanitized_value = !empty($_POST['door']) ? prefix_sanitize_checkbox($_POST['door'], 'submit_doors') : ''; // this will return the value only if the checkbox contains the value "submit_doors", otherwise, it will return empty string. 

這樣,功能很靈活。它可以淨化真正的假值,1和其他字符串值,如果傳遞給第二個參數。