PHP如果与Array相关时进行比较

时间:2017-06-22 23:03:57

标签: php

我有一个IF声明,即使它没有成为现实,我似乎也无法做到。这是代码:

        file_put_contents('php.txt', $_POST['columns'][$i], FILE_APPEND);
        if ( $_POST['columns'][$i] != 'TimeOccurred' ) {
            if ( $sWhere == "" ) {
                $sWhere = "WHERE ";
            }
            else {
                $sWhere .= " AND ";
            }
            $sWhere .= $aColumns[$i]." LIKE '%".addslashes($_POST['columns'][$i]['search']['value'])."%' ";
        }

我的file_put_contents的输出如下:

TimeOccurred.date.truetrueArray

我需要找到一种方法来查看这是否是“TimeOccurred”列,以及是否以不同的方式过滤结果。我试过在这些时期玩implode / explode来把它分成三个字符串。我已经尝试将$ _POST ['columns'] [$ i]转换为字符串,然后将其分解。有人能指出我正确的方向吗?

******** ********* EDIT

我这样做是否正确?我根本得不到任何输出:

在for声明之外尝试了这个:

var_dump($_POST['columns']);

在for语句中尝试了这个:

var_dump($_POST['columns'][$i]);

我没有得到其中任何一个的输出。出于某种原因,只是在页面加载时执行var_dump导致json错误,不知道为什么php文件中间的随机var_dump会对json数据产生任何影响,因为如果我理解它实际上没有任何改变它正确。我在完全不同的变量上测试var_dump,这个变量不是一个数组,它仍然只是导致json错误而且永远不会返回一个值。

******编辑2 ******

如果我提到有问题的php文件是通过AJAX调用并返回json编码数据,那么可能会有所帮助。它是否尝试对var_dump进行编码并将其发送出去?

*****编辑3 *******

我能够让var_export正常工作。结果如下。

  array (
  0 => 
  array (
    'data' => 'Action',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     1 => 
  array (
    'data' => 'TimeOccurred.date.',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     2 => 
  array (
    'data' => 'PerformedByUserName',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     3 => 
  array (
    'data' => 'IPv4From',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     4 => 
  array (
    'data' => 'ObjectAffected',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     5 => 
  array (
    'data' => 'ObjectClass',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     6 => 
  array (
    'data' => 'AttributeAffected',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     7 => 
  array (
    'data' => 'AttributeValueAdded',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     8 => 
  array (
    'data' => 'AttributeValueRemoved',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),

     9 => 
  array (
    'data' => 'AdditionalDetailRegardingSelectedAttributes',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),
     10 => 
  array (
   'data' => 'FromServer',
    'name' => '',
    'searchable' => 'true',
    'orderable' => 'true',
    'search' => 
    array (
      'value' => '',
      'regex' => 'false',
    ),
  ),
)

所以我想我真的需要做一些事情:

if ( $_POST['columns'][$i][data] != 'TimeOccurred.date' )

看起来我走在正确的道路上吗?我也会做一些自己的测试。

1 个答案:

答案 0 :(得分:0)

一旦对我的初始问题的评论帮助我弄清楚如何正确导出我的数组的值,我就能理解如何使我的IF语句按预期工作:

{{1}}

要清楚我知道这里有一些SQL注入问题。目前这只是一个内部的概念证明,我将关注关闭SQL注入漏洞,它与这个问题无关。如果我需要帮助,我会创建一个单独的帖子。