Как перенаправить echo в txt в php?

#php #ip

Вопрос:

Привет, я пытаюсь записать Ip-адреса, посещающие мой веб-сайт, в файл журнала. Вот мой код:

 function getRealIpAddr(){
 if ( !empty($_SERVER['HTTP_CLIENT_IP']) ) {
  // Check IP from internet.
  $ip = $_SERVER['HTTP_CLIENT_IP'];
 } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
  // Check IP is passed from proxy.
  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
 } else {
  // Get IP address from remote address.
  $ip = $_SERVER['REMOTE_ADDR'];
 }
 return $ip;
}

echo getRealIpAddr();
 

Я хотел бы получить «echo getRealIpAddr();» на «iplogs.txt» что я создал

Ответ №1:

использовать file_put_contents($filename, $data, FILE_APPEND) . FILE_APPEND не будет перезаписывать предыдущие данные.

Читать file_put_contents

Так что в вашем случае коды

 $ip = getRealIpAddr();
$filename = '/full/path/to/iplogs.txt';
file_put_contents($filename, $ip, FILE_APPEND)
 

Вы можете добавлять разрывы строк с rn помощью или PHP_EOL подобным образом

 file_put_contents($filename, $ip . PHP_EOL, FILE_APPEND)
 

Комментарии:

1. Спасибо, это работает, я добавил PHP_EOL в $ip, и это дает последний IP в первой строке.

2. FILE_APPEND должен добавить содержимое в конец файла. Проверьте пример № 2 в документах

3. Извините, моя ошибка, я перепроверил, и это в конце. Тем не менее, это хорошее начало.

Ответ №2:

Используйте функцию php file_put_contents

https://www.php.net/manual/en/function.file-put-contents.php

 <?php
$file = 'iplogs.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new output to the file
$current .= getRealIpAddr();
// Write the contents back to the file
file_put_contents($file, $current);
?>
 

Комментарии:

1. В зависимости от размера файла; чтение всего файла перед записью в него было бы плохой ресурсоемкой идеей.