print_r($_POST) не работает должным образом

Я пытаюсь создать файл журнала, содержащий некоторую информацию, мой код:

    $info = date("Y-m-d  H:i:s")."    ".$_SERVER['REMOTE_ADDR']."               ".$_SERVER['REQUEST_METHOD']."         ".$_SERVER['REQUEST_URI']."          ".$_SERVER['HTTP_REFERER']."\n".$_POST."\n";


$req_dump = print_r($info, TRUE);
$fp = fopen('request.log', 'a');
fwrite($fp, $req_dump);
fclose($fp);

код регистрирует такую ​​информацию,

15.01.2013 17:10:15 192.168.0.50 POST /index.php http://www.domain.com/article/12 Массив

значение $_POST является массивом, и никакие значения не выгружаются. Как это исправить и зарегистрировать значения $_POST?

заранее спасибо


person Johan Larsson    schedule 15.01.2013    source источник
comment
Также нужно использовать print_r в переменной $_POST.   -  person jeremyharris    schedule 15.01.2013


Ответы (6)


Вы просто добавляете $_POST к своей строке. Это преобразует его в слово "Array", потому что именно так работают преобразования Array -> String.

Вы хотите print_r массив $_POST, а не объединенную строку.

$info = date("Y-m-d  H:i:s")."    ".
    $_SERVER['REMOTE_ADDR']."               ".
    $_SERVER['REQUEST_METHOD']."         ".
    $_SERVER['REQUEST_URI']."          ".
    $_SERVER['HTTP_REFERER']."\n".
    print_r($_POST, true)."\n";

$fp = fopen('request.log', 'a');
fwrite($fp, $info);
fclose($fp);
person Rocket Hazmat    schedule 15.01.2013
comment
Это сделало работу, как я хотел. Спасибо всем за ваш вклад. - person Johan Larsson; 15.01.2013

Используйте 1_:

  $postString = var_export( $_POST, true);  
  $info = date("Y-m-d  H:i:s")."" .$_SERVER['REMOTE_ADDR']." ".
                                   $_SERVER['REQUEST_METHOD']." ".
                                   $_SERVER['REQUEST_URI']."".
                                    $_SERVER['HTTP_REFERER']."\n".  
                                    $postString."\n";
person Ray    schedule 15.01.2013
comment
Измените $var_export на var_export, и я удалю свой ответ, потому что ваш будет лучше. - person Bogdan Burym; 15.01.2013
comment
@БогданБурим Дох! Хороший улов! - person Ray; 15.01.2013

Попробуй это:

$info = date("Y-m-d  H:i:s")."    ".
        $_SERVER['REMOTE_ADDR']."               ".
        $_SERVER['REQUEST_METHOD']."         ".
        $_SERVER['REQUEST_URI']."          ".
        $_SERVER['HTTP_REFERER']."\n".
        print_r($_POST, TRUE)."\n";


//$req_dump = print_r($info, TRUE);
$fp = fopen('request.log', 'a');
fwrite($fp, $info);
fclose($fp);

Вам нужно сделать print_r на $_POST, а не на $info.

person Eric Petroelje    schedule 15.01.2013

Вы помещаете массив из $_POST в строковую переменную и поэтому получаете массив. Попробуйте что-нибудь вроде этого.

$info = date("Y-m-d  H:i:s")."    ".$_SERVER['REMOTE_ADDR']."    ".$_SERVER['REQUEST_METHOD']."         ".$_SERVER['REQUEST_URI']."          ".$_SERVER['HTTP_REFERER']."\n";
$info .= var_export($_POST) . "\n";
person Vitrix    schedule 15.01.2013

Вы пытались использовать

var_dump($_POST);

?

person makkus    schedule 15.01.2013

Попробуйте функцию file_put_contents. fwrite ожидает только строку в качестве параметра, а вы передаете массив

person 3rgo    schedule 15.01.2013
comment
Он передает строку. Строка содержит массив $_POST, следовательно, Array в строке. - person jeremyharris; 15.01.2013