我正在向傳統PHP添加一些代碼,以便使用filter_input_array()
驗證來自AJAX請求的URL的$_GET
參數。
對函數進行編碼後,我自然想要測試它。
我在工作,發佈了一些我在家寫的代碼,所以不得不重現memeory中的要點。然而,這段代碼確實反映了我在家中遇到的問題(以我家庭代碼的更清晰的方式)。
我''測試'很快&髒。一個PHP頁面反覆清除$_GET
(通過取消設置並重新聲明它),向其添加一些參數並調用filter_input_array()
。
我開始不知道這是否是有效的...
<?php
echo('$_GET, at start of script<br>');
var_dump($_GET);
echo('<hr>');
echo('unset($_GET), then dump it()obviously, we expect an error<br>');
unset($_GET);
var_dump($_GET);
echo('<hr>');
echo('Now, define $_GEt as an array, and add a few items, and validate it<br>');
$_GET = array();
$_GET['one'] = 1;
$_GET['two plus two'] = 5;
var_dump($_GET);
echo('<hr>');
echo('Now, attempt to validate the $_GET<br>');
$fileters = array('one' => FILTER_VALIDATE_INT,
'two plus two' => FILTER_VALIDATE_INT,
);
$validateGet = filter_input_array(INPUT_GET, $fileters, false);
echo('Validation result = ');
var_dump($validateGet);
?>
給
$ _GET,在腳本陣列(0){}
未設置($開始_GET),然後轉儲它()顯然,我們期望一個錯誤E_NOTICE:
類型8 - 未定義變量:_GET - 在第8行NULL現在,將$ _GEt定義爲一個數組,並添加一些項目並驗證它。
array(2){[「one」] => int(1)[「two plus two」] => int(5 )}現在,嘗試 驗證$ _GET
驗證結果= NULL
1)什麼是與filter_input_array()
回事?
2)爲什麼結果null
,當文檔說它會是false
失敗?我應該檢查哪個?我目前使用if $validateGet === false
它確實是一個不好的做法,使用超全局變量('$ _GET,$ _ POST,$ _REQUEST')這種方式。你應該使用它們作爲只讀變量。請參閱http://softwareengineering.stackexchange.com/a/76410/251694 –
文檔還說「如果變量未設置,則爲NULL」,因此您的'_ _GET'絕對不是'filter_input_array'所期望的。 –