如何在PHP中使用外部变量(例如POST / GET),错误级别为E_NOTICE

时间:2009-10-13 15:27:21

标签: php error-reporting

我正在寻找如何在PHP中使用包含E_NOTICE错误级别的外部变量的最佳方法。

我有三种可能的方式,如果你能对每种方法给出一些提示或者提出你喜欢的不同方法,我会很高兴。

    1。
    class WebApp {
    
        public static function _GET($Index) {
            if (isset($_GET[$Index])) {
                return $_GET[$Index];
            } else {
                return NULL;
            }
        }
    }
    
    // E_NOTICE, does not throw a notice:
    echo WebApp::_GET('ID');
    
    // E_NOTICE, throws a notice:
    echo $_GET['ID'];
    

    2

    class RequestSanitizer {
        const V_INTEGER = 1;
        const V_STRING = 2;
        const V_REAL = 3;
    
        public static function Sanitize($arr) {
            foreach ($arr as $key => $val) {
                if (array_key_exists($key, $_GET)) {
                    switch ($val) {
                        case RequestSanitizer::V_INTEGER:
                            $_GET[$key] = $_GET[$key] + 0;
                            break;
                        case RequestSanitizer::V_STRING:
                            $_GET[$key] = $_GET[$key] + '';
                            break;
                        case RequestSanitizer::V_REAL:
                            $_GET[$key] = $_GET[$key] + 0;
                            break;
                    }
                } else {
                    $_GET[$key] = null;
                }
            }
        }
    }
    
    RequestSanitizer::Sanitize(array(
        'GraphID' => RequestSanitizer::V_INTEGER,  
        'UserName' => RequestSanitizer::V_STRING,  
        'Password' => RequestSanitizer::V_STRING,  
        'Price' => RequestSanitizer::V_REAL 
    ));
    
    echo $_GET['GraphID'];
    

    3

    if (isset($_GET['ID']) && ($_GET['ID']+0>0)) {
       echo $_GET['ID']
    }
    

2 个答案:

答案 0 :(得分:1)

我会用

if (isset($_GET['ID']) && ($_GET['ID']+0>0)) {
   echo (int)$_GET['ID']
}

使用转换为整数(int)。如果值必须是整数。

答案 1 :(得分:0)

我使用一个Request类来封装所有Php“superglobals”,并提供“param()”,“numParam()”,“arrayParam()”等方法。

$req = new Request();
$user_id = $req->numParam('id');
 // user_id is guaranteed to be a valid integer or 0