通过PHP构造函数清理GET数据

时间:2010-01-21 20:09:51

标签: php constructor

我有以下构造函数:

public function __construct(){
    foreach($_GET as $key=>$value){
        $_GET[$key] = addslashes($value);
    }
    $this->get = $_GET;
}

它的用法如下:

$app->get['id']

其中'id'是通过URL传递的参数。
是否有通过构造函数清理所有数据的好方法?

3 个答案:

答案 0 :(得分:1)

稍微简短的方法:

public function __construct(){
    $this->get = array_map('mysql_real_escape_string', $_GET);
}

答案 1 :(得分:0)

你为什么要这样做?为了防止SQL注入?

防止注入应该在查询构建级别完成,并且绝对应该使用更相关的函数来完成,例如mysql_real_escape_string,它将捕获所有奇怪的情况,而不仅仅是引号。你在这里所做的并不比从PHP中删除的臭名昭着的魔术引号功能更好。

答案 2 :(得分:0)

如果您知道您期望的变量类型,可以将其转换为所需的类型,例如

$this->id = (int)$app->get['id']; //forces type to be integer