如何使用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
相关产品推荐
相关产品推荐

