2016-11-20 6 views
-1
$file = 'userdata.txt'; 
file_put_contents($file, print_r($_SERVER['HTTP_USER_AGENT']), 
FILE_APPEND); 

В userdata.txt у меня есть: 1 (не знаю почему)

Наконец, я хочу, чтобы сохранить .txt$_SERVER['HTTP_USER_AGENT'] и $_SERVER['REMOTE_ADDR']

+0

Добро пожаловать в SO. Пожалуйста, прочитайте [Какие темы я могу задать] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) И [идеальный вопрос] (https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) И [как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – mazedlx

ответ

2
$file = 'userdata.txt'; 
file_put_contents($file, print_r($_SERVER['HTTP_USER_AGENT']), FILE_APPEND); 

print_r function (в приведенном выше случае) печатает вывод до stdout и возвращает TRUE вызывающему абоненту. Так что у вас есть идентично:

$file = 'userdata.txt'; 
print_r($_SERVER['HTTP_USER_AGENT']); 
file_put_contents($file, TRUE, FILE_APPEND); 

TRUE становится 1 когда converted to string.

Самый простой способ сделать то, что вы хотите, чтобы просто пропустить print_r вызов:

$file = 'userdata.txt'; 
file_put_contents($file, $_SERVER['HTTP_USER_AGENT'], FILE_APPEND); 

Или, если вы хотите, определенное форматирование производится с помощью print_r, вы можете добавить второй параметр:

$file = 'userdata.txt'; 
file_put_contents($file, print_r($_SERVER['HTTP_USER_AGENT'], TRUE), FILE_APPEND); 

Это приведет к тому, что print_r вернет результат, а не распечатает его напрямую.