Codeigniter从post变量中删除制表符

时间:2017-10-28 18:47:47

标签: php codeigniter

$mgmac = $this->input->post("mgmac");

数据获得标签空间。但是codeigniter会删除它。如何允许标签字符。

我弄错了

$config['global_xss_filtering'] = FALSE;

试过这个

$mgmac = $this->input->post("mgmac",FALSE); 

我做了

$str = str_replace("\t", ' ', $str);   

进入system\core\Security.php的评论行。

但请继续删除数据中的制表符。

1 个答案:

答案 0 :(得分:0)

CodeIgniter中没有任何内容可以删除水平制表符。它必须是别的东西。以下面的代码为例。这是我放入Test控制器的一种方法,你可以简单地复制并粘贴它,看看一旦发布,mgmac的值仍然有选项卡。

我还提供了一张图片,在点击提交按钮后显示结果。

您可以通过打开system / core / Input.php文件来实际跟踪$ _POST数据的内容。 Input类的构造函数调用_sanitize_globals(),在您发布的值上调用_clean_input_data()。调用remove_invisible_characters来删除大多数不可见的字符,但水平制表符不是其中之一。稍后,当您致电post()时,_fetch_from_array()方法会检索您要求的发布数据。如果xss_clean的第二个参数设置为TRUE,则post()将运行,但在您的情况下,应该不更改地返回mgmac的值。

/**
 * This method is in my Test.php controller. I am using mod_rewrite to 
 * remove the index.php from the URL.
 */
public function tab_in_post()
{
    $val = "1\t2\t3\t4";

    echo '<form method="post" action="/test/tab_in_post">
        <input type="text" value="' . $val . '" name="mgmac" />
        <button type="submit">Submit</button>
    </form>';

    echo '<pre>';
    var_dump( $this->input->post('mgmac', FALSE) );
    echo '</pre>';
}

// -----------------------------------------------------------------------

enter image description here