我有以下代码:
$ips = file_get_contents($_SERVER['DOCUMENT_ROOT']."/visitors.txt");
$arr = explode(",",$ips);
$today = strtotime(date('Y-m-d H:i:s'));
for ($n = 0, $max = count($arr); $n <= $max; $n++) {
$visArr = explode("#",$arr[$n]);
$visDate = strtotime($visArr[1]); //$visArr[1] = 2011-12-27 14:10:45
if($visDate < $today){
unset ($arr[$n]); //remove array item if its date not within 24 hours
}
}
数据存储如下:
xxx.xxx.xxx.xxx#2011-12-27 11:56:24,
xxx.xxx.xxx.xxx#2011-12-28 11:56:24,
我希望过去24小时内有访客。
我不想使用MySQL数据库,我只是想使用txt文件但是我被卡住了。
提前致谢。
答案 0 :(得分:1)
我可以看到2个问题: 1,您将存储的时间与当前时间进行比较,并表示如果日期不在24小时内,它将过滤数组项目。
我认为你应该使用$ today = strtotime(“ - 1天”); 并命名昨天而不是今天..
其次和错误的原因是你在文件中爆炸数据,这会给你“”,即数组中最后一个元素的null ...这就是为什么strtotime函数给出了该值的错误..
你应该做的是:
if($visArr[1])
{
$visDate = strtotime($visArr[1]); //$visArr[1] = 2011-12-27 14:10:45
if($visDate < $today){
unset ($arr[$n]); //remove array item if its date not within 24 hours
}
}