You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP将网站访问者IP及访问日期保存到logs.txt日志文件?

IP记录功能实现方案

原有代码存在emptyempty的笔误,同时未处理多层代理下HTTP_X_FORWARDED_FOR返回多个IP的场景,修正后追加写日志的完整代码如下:

<?php
function getIPAddress() {
    // 优先取共享网络下的客户端IP
    if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    // 处理代理转发场景,取第一个真实IP
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
    }
    // 兜底取直连IP
    else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    // 过滤非法IP格式,避免恶意内容写入日志
    return filter_var($ip, FILTER_VALIDATE_IP) ? $ip : 'invalid_ip';
}

// 获取访问IP和当前时间
$visitor_ip = getIPAddress();
$visit_date = date('Y-m-d H:i:s');

// 拼接日志条目,每条单独占一行
$log_entry = $visit_date . " | " . $visitor_ip . PHP_EOL;

// 以追加模式打开日志文件,文件不存在会自动创建
$log_file = fopen('log.txt', 'a');
if ($log_file) {
    fwrite($log_file, $log_entry);
    fclose($log_file);
}

// 原有输出逻辑可按需保留
echo 'User Real IP Address - '.$visitor_ip;
?>

注意事项:部署时需要确保log.txt所在目录对Web服务运行用户开放写入权限,否则会出现写入失败的问题。Linux环境下可临时给日志文件设置chmod 666 log.txt做功能测试。

靠谱PHP学习书籍推荐
  • 《PHP 8 编程基础与实战》:针对最新PHP 8版本编写,内容覆盖基础语法、常用扩展、实战开发全流程,知识点严谨无错误,适合零基础入门
  • 《Modern PHP(中文版)》:重点讲解PHP现代化开发规范、最佳实践、Composer使用、PSR标准等行业通用规则,适合入门后提升开发规范性
  • 《PHP 权威编程》:包含大量性能优化、安全开发、工程化实践的一线经验,适合有一定基础想进阶中高级开发者的学习者

内容的提问来源于stack exchange,提问作者Piggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:57:04