我有以下构造函数:
public function __construct(){
foreach($_GET as $key=>$value){
$_GET[$key] = addslashes($value);
}
$this->get = $_GET;
}
它的用法如下:
$app->get['id']
其中'id'是通过URL传递的参数。
是否有通过构造函数清理所有数据的好方法?
答案 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