如何通过PHP程序把访者的IP都记录下来?
有人对我的网站恶意刷站,导致我的网站程序占用大量的CPU.我想将他的IP段屏蔽掉,但是我网站程序没有记录IP这一项功能,有什么好的方法可以把来访的的IP记录下来吗,最好能...
有人对我的网站恶意刷站,导致我的网站程序占用大量的CPU.我想将他的IP段屏蔽掉,但是
我网站程序没有记录IP这一项功能,有什么好的方法可以把来访的的IP记录下来吗,最好能保存成txt文件,或者保存在mysql里也行,
然后我就可以找出那些大量重复的IP了,他IP段,看他还怎么牛!
如果可以的话,请求提供完整的代码,因为我对PHP还不是太懂。
“hailuo722”的方法可以直接使用,但是只能保存一个记录,我想要保存所有的来访记录,因为这样才能进行比较,我不太懂PHP所以不知道要如何修改才能实现。 展开
我网站程序没有记录IP这一项功能,有什么好的方法可以把来访的的IP记录下来吗,最好能保存成txt文件,或者保存在mysql里也行,
然后我就可以找出那些大量重复的IP了,他IP段,看他还怎么牛!
如果可以的话,请求提供完整的代码,因为我对PHP还不是太懂。
“hailuo722”的方法可以直接使用,但是只能保存一个记录,我想要保存所有的来访记录,因为这样才能进行比较,我不太懂PHP所以不知道要如何修改才能实现。 展开
3个回答
展开全部
<?php
function ip()
{
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
{
$ip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
{
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
{
$ip = getenv('REMOTE_ADDR');
}
elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown';
}
$ip=ip();
//这样就能得到访问者的IP地址了,至于存文件,你可以这样写
$time=date("Y-m-d H:i:s");
$str=$ip." ".$time;
$l=fopen("aa.txt","w");
fwrite($l,$str);
fclose($l);
?>
还不明白的话,通知我
function ip()
{
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
{
$ip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
{
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
{
$ip = getenv('REMOTE_ADDR');
}
elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : 'unknown';
}
$ip=ip();
//这样就能得到访问者的IP地址了,至于存文件,你可以这样写
$time=date("Y-m-d H:i:s");
$str=$ip." ".$time;
$l=fopen("aa.txt","w");
fwrite($l,$str);
fclose($l);
?>
还不明白的话,通知我
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
展开全部
我这有个函数,直接可用,你可以拿去试试
/**
*@desc 取客户端IP
*/
function get_client_ip()
{
$remote_addr = '';
if (getenv('HTTP_CLIENT_IP')) {
$remote_addr = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$remote_addr = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('REMOTE_ADDR')) {
$remote_addr = getenv('REMOTE_ADDR');
} else {
$remote_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
}
return $remote_addr;
}
/**
*@desc 取客户端IP
*/
function get_client_ip()
{
$remote_addr = '';
if (getenv('HTTP_CLIENT_IP')) {
$remote_addr = getenv('HTTP_CLIENT_IP');
} else if (getenv('HTTP_X_FORWARDED_FOR')) {
$remote_addr = getenv('HTTP_X_FORWARDED_FOR');
} else if (getenv('REMOTE_ADDR')) {
$remote_addr = getenv('REMOTE_ADDR');
} else {
$remote_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
}
return $remote_addr;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$l=fopen("aa.txt","w");
改为
$l=fopen("aa.txt","a");
就行了
改为
$l=fopen("aa.txt","a");
就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询