PHP获取访客来访域名及访客ip教程
枂下
说明本站数据丢失后,只保留了10月26号的数据,导致站长写的访客来访域名获取函数以及访客ip获取函数丢失,今天又调试了一个小时,才总算把这个函数搞出来。大体上,都来源于网络。比如网上的教程大多是来访页
谷歌已收录,更新于2018年12月27日; 如遇到问题,请留言及时通知站长; 欢迎加入 三生三世,讨论各种问题!
说明
本站数据丢失后,只保留了10月26号
的数据,导致站长写的访客来访域名获取函数以及访客ip
获取函数丢失,今天又调试了一个小时,才总算把这个函数搞出来。大体上,都来源于网络。比如网上的教程大多是来访页面查找,有很多不足的地方。站长今天把这部分代码发出来,理论上支持所有php
程序,也就是可以用于typecho
获取访客来访域名,也可以获取访客ip
;此外,也支持wordpress
等其他程序。
function.php
编辑你的function.php
,将下面代码添加到你第二行或者结尾:第一个<?php后面一行,不同主题可能略有区别,不懂再评论询问吧。
//访客ip
function get_ip(){
//判断服务器是否允许$_SERVER
if(isset($_SERVER)){
if(isset($_SERVER[HTTP_X_FORWARDED_FOR])){
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];
}elseif(isset($_SERVER[HTTP_CLIENT_IP])) {
$realip = $_SERVER[HTTP_CLIENT_IP];
}else{
$realip = $_SERVER[REMOTE_ADDR];
}
}else{
//不允许就使用getenv获取
if(getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv( "HTTP_X_FORWARDED_FOR");
}elseif(getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
}else{
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
//来访域名
function domain(){
$url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL
$str = str_replace("https://","",$url); //去掉https://
$str = str_replace("http://","",$str); //去掉http://
$str = str_replace("www.","",$str); //去掉www.
$strdomain = explode("/",$str); // 以“/”分开成数组
$domain = $strdomain[0];//取第一个“/”以前的字符
if (empty($domain)){
return "欢迎您直接访问本站的网友,大佬记住域名了么";
}
else if($domain == 'black1ce.com'){
return "欢迎您访问本站其他页面,多谢您的支持";
}
else {
return "欢迎来自 $domain 的网友,大量教程向您袭来";
}
}
调用方式如下,将如下代码放置到你想显示的位置即可
<?php echo get_ip(); ?>
<?php echo domain(); ?>
后续
关于来访域名方面,去除了https
、http
、www
,获取了第一个/前的字符,这样显示结果就是baidu.com
之类。此外,增加了来访页面为空以及二次点击的判断。
注:本站只提供基本用法,具体想怎么显示,自己写吧。
大佬,这个通知 notie 会在每个页面都弹出来一次咋么解决?
这个我这里没啥办法解决