2 fenglinstudio fenglinstudio 于 2018.01.09 18:01 提问

php检测服务器的ip并且写入txt,过滤同样的IP,并记录首次写入的时间

有多台服务器,希望能记录服务器端的ip(不是访客ip)并写入txt文本中,并在文本中记录这个ip首次写入txt的时间,如果IP重复,则只保留一个。用php如何实现呢?
完全不会,求完整代码

4个回答

hanbingxzy
hanbingxzy   2018.01.09 18:38
已采纳

提供一个思路:对象、字典、map等结构天生就是无重复的。可以使用redis等内存数据库或者叫作缓存,以IP为key,以访问时间为value。
如果获取key时为空则不存在 ,不为空则存在。存在则不写入,不存在则写入。

hanbingxzy
hanbingxzy 不过,建议使用redis,多个服务器都能同时访问
10 天之前 回复
hanbingxzy
hanbingxzy 然后如果你要以txt形式,可以以导入导出的形式实现
10 天之前 回复
caozhy
caozhy   Ds   Rxr 2018.01.09 18:36

参考:http://ask.csdn.net/questions/677377
如果要完整代码,请先采纳了之前的那个问题,然后写给你。

fenglinstudio
fenglinstudio 需要完整代码
10 天之前 回复
fenglinstudio
fenglinstudio 语言完整代码
10 天之前 回复
fenglinstudio
fenglinstudio 之前的已经采纳
10 天之前 回复
zhangzhongnan123
zhangzhongnan123   2018.01.10 02:08

我是不是理解错了?要记录的是访客ip吧?

error_reporting(0); //抑制所有错误信息
@header("content-Type: text/html; charset=utf-8"); //语言强制

//获取用户IP地址
$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
logResult($ip);

echo sprintf("你的IP地址是:%s",$ip);

function logResult($word='') {
$fp = fopen("log.txt","a");
flock($fp, LOCK_EX) ;
fwrite($fp,"记录时间:".strftime("%Y%m%d%H%M%S",time()).",IP:".$word."\n");
flock($fp, LOCK_UN);
fclose($fp);
}?>

fenglinstudio
fenglinstudio   2018.01.09 18:17

楼上所答非所问,我需要的是服务器端的ip和首次写入的时间,并不是记录访客ip和每次访问的时间,另外不能实现排除重复的ip。楼上回答的内容和百度知道内一个问题的回复完全一模一样,

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!