我正在制作一个图像,记录访问它的每个人的IP (为了安全)。以下是代码:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
header("Content-Type: image/png");
$im = @imagecreate(1, 1);
$background_color = imagecolorallocate($im, 0, 0, 0);
$farmerbase = "farmers/" . basename(__FILE__, '.php') . ".txt";
file_put_contents($farmerbase, $ip . "\n", FILE_APPEND);
imagepng($im);
imagedestroy($im);
?>我如何使它不记录相同的IP 3次,并确保它将它们放在不同的行?
发布于 2015-08-18 06:54:02
1.缺少的行打断了
正如在对您的问题的注释中提到的,在不同的操作系统中编码纽林有不同的方法。为了避免这些问题,您通常会使用内置常量PHP_EOL,这是运行PHP的平台的正确换行符。在您的示例中,服务器可能运行在与本地计算机不同的平台上。因此,如果您想要windows,您需要使用"\r\n"来实现Mac,这就是"\r"。
2.每页点击两行
显然,脚本每次调用时只写一行。因此,我怀疑它是运行两次,每次你点击的网址,它是你正在使用的。为了证明您可以修改脚本,在每一行中添加一个随机数:
file_put_contents($farmerbase, $ip . ':' . rand() . "\n", FILE_APPEND);现在,如果这两行是相同的,那么file_put_contents()意外地写了两次。如果行不同,您知道脚本被执行了两次(要么两次输入URL,要么是服务器设置中的某个问题,或者是因为您实际加载了两次页面)。
https://stackoverflow.com/questions/32063908
复制相似问题