문제

나는 누군가의 코드를 작업하고 있으며 다음을 사용하는 생성자가 있습니다.

class qwerty {
public function __construct(){
// some other code
    $this->get = $_GET;
}
}

내 질문은 이것입니다 : 생성자 내에서 데이터를 소독 할 수 있습니까? strip_tags ()와 같은 간단한 기능을 사용하더라도?

사용의 예 :

$qwerty = new qwerty;
qwerty->get['id'];
도움이 되었습니까?

해결책

나는 그것을 접근하는 두 가지 방법을 본다. 하나는 대조점에서 Foreach 루프를 사용하여 $ _get 매개 변수를 통해 루프를 사용하는 것입니다.

foreach($_GET AS $key => $val)
{
  $_GET[$key] = sanitize($val);
}

또는 GET 기능을 통해 데이터를 검색하고 여기에 소독하십시오.

function getParams($key)
{
  return sanitize($_GET[$key]);
}

다른 팁

생성자에서 원하는 모든 것을 할 수 있습니다. 그렇게 말했다고해서 그렇게해야한다는 의미는 아닙니다. 많은 사람들은 의미있는 또는 예외를 던질 수있는 것이 생성자에 있어서는 안된다고 주장 할 것입니다. 어쨌든,이 수업을 사용하려면 다음과 같은 일을 할 수 있습니다.

class qwerty
{
    private $get;

    public function __construct($params)
    {
       $this->get = $this->sanitize($params);
    }

    public function sanitize($params)
    {
        $sanitized = $params;

        foreach ($sanitized as $key => $value) {
            $sanitized[$key] = strip_tags($value);
        }

        return $sanitized;
    }

    public function getField($field)
    {
        if (array_key_exists($field,$this->get)) {
            return $this->get[$field];
        } else {
            return null;
        }
    }
}

$q = new qwerty($_GET);
$q->getField('id');
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top