【问题标题】:Filter integer with JInput使用 JInput 过滤整数
【发布时间】:2013-01-27 18:57:10
【问题描述】:

我正在从 JInput 中检索一个必须是整数的值。

$input = new JInput();
$post = $input->getArray($_POST);
$value= $input->$post['value'];

现在显然我不能使用 is_int() 因为$_POST 使值成为字符串 - 通常使用 filter_input() 解决。这给我留下了一个小问题——因为我想拒绝任何不是整数的东西——不要将它转换为整数。使用类似于

的东西
$value=JFactory::getApplication()->input->get('value', '0', 'INT');

强制字符串为整数。 (例如,输入 1.2 将给出 $value 1 等)。所以我被困在如何实现这个过滤器上。理想情况下,我想做一些类似的事情

if(is_int($delete)) {
    //Carry on processing data
} else {
    //Stop function and display a JError
JLog::add("Value is not a integer", JLog::WARNING, 'jerror');
}

【问题讨论】:

    标签: php joomla joomla2.5 joomla3.0


    【解决方案1】:

    为什么不使用:

    $input = new JInput;
    $value = $input->getInt('value');
    

    【讨论】:

    • 这仍然会向下舍入值 - 例如输入 1.2/1.4 将给出 $value=1。正如我在问题中所说,我已经可以做到这一点。我只想检查输入的值是否为 int - 不要尝试将值向下舍入
    【解决方案2】:

    终于在check for integer or float values下的SO上找到了。

    使用的最终代码是:

    $input = new JInput();
    $post = $input->getArray($_POST);
    $value= $input->$post['value'];
    //checks value is numeric and if it is a int
    if(is_numeric($value) && (int) $value == $value) {
        //process data
    } else {
        JLog::add("Value is not a integer", JLog::WARNING, 'jerror');
    }
    

    【讨论】:

      【解决方案3】:
      $input = new JInput;
      $email = $input->get('email', '', 'post');
      $time = $input->get('time', '', 'post');
      $move = $input->get('move', '', 'post');
      $idcat = $input->get('idcat', '', 'post');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 2019-01-28
        • 1970-01-01
        • 1970-01-01
        • 2013-09-15
        相关资源
        最近更新 更多