2013-03-26 2 views
4

После этого guide для дезинфекции моих входов, мне интересно, покрыта ли пустая строка этим?Проверка Joomla на пустую строку с JInput

$jinput = JFactory::getApplication()->input; 
$this->name = $jinput->get('name', '', 'STRING'); 

Как правило, без Joomla я также проверял бы пустую строку. Что-то вроде:

if (!empty($_POST['name'])) 

Глядя на JInput получить метод, который я вижу, что он проверяет, является ли это isset:

public function get($name, $default = null, $filter = 'cmd') 
{ 
    if (isset($this->data[$name])) 
    { 
     return $this->filter->clean($this->data[$name], $filter); 
    } 

    return $default; 
} 

не то же самое, как и isset будет проверять только нуль. Однако это значение по умолчанию для использования метода get. Итак, если я укажу пустую строку для второго параметра, который я здесь рассмотрел?

$this->name = $jinput->get('name', '', 'STRING'); 

ответ

5

Это не до Joomla, чтобы решить, действительна ли ваша пустая строка. Они должны использовать isset(), потому что, если они будут использовать empty(), и вы вернете '0', которые вы ожидаете, как обычно, Joomla вернет значение по умолчанию вместо '0'.

Так что совершенно нормально, что они просто используют isset(), чтобы проверить, установлена ​​ли переменная, и решать вам, какие значения вы принимаете.

Если значение не установлено, и вы устанавливаете в качестве второго параметра пустую строку '', вы получите пустую строку, возвращаемую.

В вашем примере будет возвращена пустая строка, ожидаемая поведением.