我學會了如何通過在stackoverflow上的另一個答案中的引用來訪問,但無法再次找到它。無論如何,以下方法是不安全的還是完全不可靠的?通過引用訪問GET和POST
protected function checkVar($requestType, $varname, $checkIfNumber = false)
{
switch($requestType)
{
case 'GET':
$sg = &$_GET;
break;
case 'POST':
$sg = &$_POST;
break;
default:
throw new Exception('Variable `$requestType` is not `GET` or `POST` in AController::checkVar().');
}
if(!isset($sg[$varname])) {
throw new Exception("$requestType variable [$varname] is not set in AController::checkVar().");
} else if(empty($sg[$varname])) {
throw new Exception("$requestType variable [$varname] is empty in AController::checkVar().");
} else if($checkIfNumber) {
if(!ctype_digit($sg[$varname])) {
throw new Exception("$requestType variable [$varname] is not a number in AController::checkVar().");
}
}
return $sg[$varname];
}
我不明白這個功能的重點,但我沒有看到很多的問題,除了在同一個功能混合POST和GET。你會想要小心的是,用戶不能只在你不知道的情況下拋出一些= extra&data =到&your =函數。 :-) – Chris 2010-08-04 01:43:29
@Chris - 感謝您的回覆。我創建此函數的原因是在檢查通過GET和POST發送的變量時限制重複執行的代碼量。您對額外數據的警告很好,我會再次考慮這個功能。 – 2010-08-04 01:46:18