#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. В зависимости от размера файла; чтение всего файла перед записью в него было бы плохой ресурсоемкой идеей.