2009-10-28 2 views
1

Я работаю на чьей-коде, и они имеют конструктор, который использует:

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

Мой вопрос заключается в следующем: можно ли дезинфицировать данные внутри конструктора? Даже используя некоторые простые функции, такие как strip_tags()?

Пример использования:

$qwerty = new qwerty; 
qwerty->get['id']; 

ответ

1

Я вижу два пути подойти к нему. Одно было бы просто использовать цикл Еогеаспа в застройщик Переберите параметры

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

В качестве альтернативы в $ _GET, получить данные с помощью функции GET и дезинфицировать там.

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

Спасибо! что, похоже, сработало! – kylex

0

Вы можете делать практически все, что хотите, в конструкторе. Сказав это, это не значит, что вам следует. Многие утверждают, что что-либо значимое или может вызвать исключение не должно быть в конструкторе. Anyways, Если вы собираетесь использовать этот класс, вы можете сделать что-то вроде этого:

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'); 

 Смежные вопросы

  • Нет связанных вопросов^_^