按照这个 guide 来清理我的输入,我想知道是否有一个空字符串被这个覆盖?

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

通常没有 Joomla,我也会检查空字符串。就像是:
if (!empty($_POST['name']))

查看 JInput get 方法,我看到它检查它是否是 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 只会检查 null。但是,这是使用 get 方法的默认值。因此,如果我为第二个参数指定了一个空字符串,我会在这里介绍吗?
$this->name = $jinput->get('name', '', 'STRING');

最佳答案

Joomla 不能决定您的空字符串是否为有效值。他们必须使用 isset() ,因为如果他们使用 empty() 并且您返回正常情况下期望的 '0' ,Joomla 将返回默认值而不是 '0'

所以他们只是使用 isset() 来检查是否设置了变量是完全正常的,由你决定你接受什么值。

如果未设置该值,并且您将空字符串 '' 设置为第二个参数,则会返回一个空字符串。

在您的示例中,将返回一个空字符串,这是预期的行为。

关于php - Joomla 使用 JInput 检查空字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15647545/

10-13 02:44