Php 无法获取此命中计数器的结果

Php 无法获取此命中计数器的结果,php,hitcounter,Php,Hitcounter,我正在制作一个点击计数器,但我被卡住了。我无法理解为什么这无法正常处理。结果将始终显示“未找到”。您的Ip地址是(Ip地址,我没有在这里输入),即使ipaddress在“ipaddress.txt”中。ip地址在我访问页面后输入到文件中,但后面的部分不会发生。对不起,我犯了一个愚蠢的错误。我是个业余爱好者 <?PHP function hit_count(){ $ipaddress=$_SERVER['REMOTE_ADDR']; $ipfile='ipaddress.txt'; $

我正在制作一个点击计数器,但我被卡住了。我无法理解为什么这无法正常处理。结果将始终显示“未找到”。您的Ip地址是(Ip地址,我没有在这里输入),即使ipaddress在“ipaddress.txt”中。ip地址在我访问页面后输入到文件中,但后面的部分不会发生。对不起,我犯了一个愚蠢的错误。我是个业余爱好者

<?PHP

function hit_count(){

$ipaddress=$_SERVER['REMOTE_ADDR'];

$ipfile='ipaddress.txt';
$ipnames=fopen($ipfile,'a');
fwrite($ipnames,$ipaddress.',');
fclose($ipnames);

$ipfileread=file('ipaddress.txt');
foreach($ipfileread as $iplist){
    $iplisttrim=trim($iplist);
    if($ipaddress == $iplisttrim){
        echo"Found";
    }else{
        echo"Not Found. Your Ip-address is ".$ipaddress;
    }
}
}

?>

这是另一个php文件:

<?PHP

include"mainphp15.php";

hit_count();


?>

您的循环正在将文件中的每个IP与当前IP进行比较。大多数IP地址都不匹配,因此它会为这些IP地址打印
notfound
。试试这个:

$ipfileread = file('ipaddress.txt', FILE_IGNORE_NEW_LINES);
if (in_array($ipaddress, $ipfileread)) {
    echo "Found";
} else {
    echo "Not found";
}
出于某种原因,这是一个极为常见的错误。我想这是我今天第二次或第三次看到你做类似的事情。我不确定是什么样的复杂逻辑导致人们认为一个不匹配等同于在文件中的任何地方都找不到东西

另一个问题是,您没有在单独的行中将IP写入文件,而是用逗号分隔。使用:

fwrite($ipaddress, $ipfile . PHP_EOL);

此外,您可能应该在检查IP是否已存在后写入该文件,并且仅在IP不存在时添加该文件。否则,每次点击都会在文件中添加一行,并且增长非常快。

您需要从文件中的新字符串写入IP,请尝试

fwrite($ipnames, $ipaddress . "\r\n");

如果
未找到
总是得到输出,那肯定是因为您的条件
($ipaddress==$iplisttrim)
没有得到满足
var_dump()
这两个值,并查看是否包含您认为它的功能。我使用了您给我的确切代码。它仍然不起作用。我检查了我的ip地址。当我点击php页面时,它一直是相同的。我正在关注“phpacademy”中“alex”的视频。他为“thenewboston.com”制作了视频。即使是他也遇到了同样的问题,但经过一些尝试后,它还是起了作用,而我的却不起作用。他的密码和我的一样。指向我的页面的链接是()。如果可以,请提供帮助。我还尝试了if“(in_数组($ipaddress,$ipfileread,true))”来代替“if(in_数组($ipaddress,$ipfileread))”。仍然不起作用。添加
strict
永远不会使失败的搜索成功。它使比较更加严格,而不是更少。