在 PHP 中将 IP 地址和时间戳保存到 JSON 文件的问题

Issue with Saving IP Address and Timestamp to JSON File in PHP

提问人:Luis Miguel Molina Betancourt 提问时间:11/13/2023 最后编辑:Luis Miguel Molina Betancourt 更新时间:11/14/2023 访问量:80

问:

我在 PHP 中将 IP 地址和时间戳保存到 JSON 文件中时遇到了问题。下面的代码片段正确地回显了 IP 地址,但似乎没有将其保存到“ips.json”文件中:

$archivo = file_get_contents('ips.json');
$data = json_decode($archivo, true);
if (empty($data)) {
    $data = array();
}
$ip = $_SERVER['REMOTE_ADDR'];
echo $ip;
$fecha = new DateTime();
array_push($data, array($ip, $fecha));
file_put_contents("ips.json", json_encode($data));

IP 地址已成功回显,但数据未写入 JSON 文件。我正在使用 file_put_contents 函数以 JSON 格式保存数据。

我已经检查了文件权限,它们似乎是合适的,并且日期保存正确。代码中是否存在可能导致此问题的潜在问题或改进?

文件已正确生成,这是生成的文件,但如果您看到它没有 IP。

[
    [
        "",
        {
            "date": "2023-11-12 22:02:01.435430",
            "timezone_type": 3,
            "timezone": "Europe\/Madrid"
        }
    ]
]

这是我的 Web 服务器的截图,可以看出它捕获了 IP,我连接了 hi 来测试是否保存了某些东西,并且准确地保存了 hi,但没有保存 IP。 我应该补充一点,我的网站托管在带有 Bitnami 的 AWS 服务器上。

enter image description here

我已经尽可能地简化了我的代码,直到我得到以下结果:

$data = file_get_contents('ips.json');
echo "<!-- DATA " . $data . " / " . $_SERVER['REMOTE_ADDR'] . " -->";
file_put_contents("ips.json", $_SERVER['REMOTE_ADDR'] . $data + 1);

它仍然没有保存 ip,它就像计数器一样工作,但 ip 不会保存它。

enter image description here

我感谢任何见解或建议来帮助我解决此问题。谢谢。

php json amazon-web-services ip-address bitnami

评论

0赞 Luis Miguel Molina Betancourt 11/13/2023
它写得正确,日期和 JSON,它返回 true,但是 IP 应该在的地方,它只显示“”我什至连接“hi”,它显示 hi 但不显示 IP。
1赞 Nick 11/13/2023
只要有价值,我就不能重现这个。$ip
2赞 deceze 11/13/2023
因为它不应该这样做。如果输出预期值,那么将其放入数组中也应该......echo $ip
2赞 Nick 11/13/2023
确定回声在服务器上有效吗?因为你服务器的PHP实现实际上可能并不支持$_SERVER['REMOTE_ADDR']
3赞 gview 11/13/2023
您提供的代码不是生成屏幕截图的代码。人们不知道你实际运行了什么代码来生成它。我建议你从图片中取出json编码/解码开始。只需有一个简单的文件并输出一个仅带有 ip 的字符串。不要先打开文件,只需写出值即可。我也不知道你为什么不使用FILE_APPEND。看看你是否得到了这个值。我希望这不是你的 IP 日志记录计划——读取文件并在每次有请求时重写它......

答: 暂无答案