Как я могу получить полное значение $ _POST без какой-либо операции очистки в codeigniter? - PullRequest
0 голосов
/ 06 января 2012

У меня есть контроллер, похожий на этот в codeigniter:

class ABC extends MX_Controller {
  ...
  ...
  ...
   .
   .
   .
  ...
  ...

  public function getTestPostData(){
    print_r($_POST);
  }
}

В getTestPostData, когда я печатаю $_POST, мне нужны полные $_POST данные без какой-либо очистки.Я не могу установить $config['global_xss_filtering'] = FALSE; в config.php

Как мне этого добиться?

Редактировать:

В почтовых данных я отправляюнекоторое HTML-содержимое с некоторыми тегами <script> (script), но когда я печатаю данные в моем контроллере с использованием $this->input->post("content"), теги <script> (script) заменяются тегами [удалено].Это происходит, когда global_xss_filtering равен TRUE.Я не могу изменить это значение на ЛОЖЬ.

Надеюсь, теперь вопрос ясен.

Ответы [ 3 ]

2 голосов
/ 06 января 2012

Попробуйте, в моих тестах это работало даже после полного сброса $_POST.

public function getTestPostData()
{
    $post_data = explode( "&", file_get_contents('php://input') );
    $result = array();

    foreach( $post_data as $post_datum ) {
        $pair = explode("=", $post_datum );

        $result[urldecode($pair[0])] = urldecode($pair[1]);
    }

    print_r( $result );
}
0 голосов
/ 06 января 2012

Если у вас CI v. 2+, попробуйте следующее:

Создайте новый файл Core, расширяющий CI_Security, и перезапишите функцию xss_clean следующим образом:

class MY_Security extends CI_Security {

    public function xss_clean($str, $is_image = FALSE)
    {
      return $str;
    }
}

РЕДАКТИРОВАТЬ: Я только что проверил, и это работает.FYI.

0 голосов
/ 06 января 2012

вы не можете установить $ config ['global_xss_filtering'] = FALSE; в config.php?

тогда, если вы не можете получить доступ к классу core / input.php и удалите _POST из него

function _sanitize_globals()
{
    // It would be "wrong" to unset any of these GLOBALS.
    $protected = array('_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', 
                        '_SESSION', '_ENV', 'GLOBALS', 

или измените переменную $ xss_clean на false, как это

    function get_post($index = '', $xss_clean = FALSE)
{
    if ( ! isset($_POST[$index]) )
    {
        return $this->get($index, false); //here
    }

, тогда вы не можете просмотреть данные поста без фильтрации от

 print_r($_POST);
print_r( $this->input->post() )

это все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...