• 4682阅读
  • 144回复

关于帖子阅读页显示的ip地址来源 [复制链接] [手机版]

上一主题 下一主题
离线zhangjingyu

只看该作者 59楼 发表于: 2025-12-07 09:55:13 星期日  点亮(0)
像这样的“来自:中国–山东–聊城 移动”这里面的短横线或者叫连接符,可以在写入数据表之前替换为空,这样就能美观些,这个再说吧。

除了排行榜页面,在最上面的论坛页头的用户名弹出菜单里也可以看到登录ip,如52楼所示位置,我们继续研究这个页面。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 60楼 发表于: 2025-12-07 10:04:59 星期日  点亮(0)
对应的文件是模板目录下的header_login.htm:
  1. <li style="width:90%">登录IP: <span class="f10">{$onlineip}</span></li>
我们继续查找这个“$onlineip”来自哪里?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 61楼 发表于: 2025-12-07 10:17:51 星期日  点亮(0)
在一个文件里面看到类似的代码:
  1. global $db_olsize,$windid,$onlineip;
这是在全局文件里面,可以直接调用吗?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 62楼 发表于: 2025-12-07 10:24:08 星期日  点亮(0)
果然,在全局文件global.php里面看到代码:
  1. $onlineip = pwGetIp();
通过pwGetIp函数直接获取,那引用的话就方便多了。

后面的关键问题就是如何通过这个ip地址获取到对应的地理位置,这是最难最头疼的。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 63楼 发表于: 2025-12-07 10:35:43 星期日  点亮(0)
  1. <?php
  2.     // 此处填写你在控制台-应用管理-创建应用后获取的AK
  3.     $ak = '您的AK';
  4.     
  5.     // 发起一个http get请求,并返回请求的结果
  6.     // $url字段为请求的地址
  7.     // $param字段为请求的参数
  8.     function request_get($url = '', $param = array()) {
  9.         if (empty($url) || empty($param)) {
  10.             return false;
  11.         }
  12.         
  13.         $getUrl = $url . "?" . http_build_query($param);
  14.         $curl = curl_init(); // 初始化curl
  15.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  
  16.         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
  17.         curl_setopt($curl, CURLOPT_URL, $getUrl); // 抓取指定网页
  18.         curl_setopt($curl, CURLOPT_TIMEOUT, 1000); // 设置超时时间1秒
  19.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // curl不直接输出到屏幕
  20.         curl_setopt($curl, CURLOPT_HEADER, 0); // 设置header
  21.         $data = curl_exec($curl); // 运行curl
  22.         if (!$data) {
  23.             print("an error occured in function request_get(): " . curl_error($curl) . "\n");
  24.         }
  25.         curl_close($curl);
  26.         
  27.         return $data;
  28.     }
  29.     // 请求地址
  30.     $url = 'https://api.map.baidu.com/location/ip';
  31.     
  32.     // 构造请求参数
  33.     $param['ip']   = '111.206.214.37';
  34.     $param['coor']   = 'bd09ll';
  35.     $param['ak']   = $ak;
  36.     $res = request_get($url, $param);
  37.     // 将原始返回的结果打印出来
  38.     print("请求的原始返回结果为:\n");
  39.     print($res . "\n");
  40. ?>
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 64楼 发表于: 2025-12-07 10:46:42 星期日  点亮(0)
使用PHP实现源IP地址检测与处理的方法与实践指南
php 2024-10-23 24°
引言
在网络编程和Web开发中,IP地址的检测与处理是一项常见且重要的任务。无论是为了安全防护、数据统计,还是用户行为分析,准确地获取和处理IP地址都是不可或缺的。PHP作为一种广泛使用的编程语言,提供了丰富的内置函数来处理IP地址。本文将详细介绍如何在PHP中实现源IP地址的检测与处理,并提供一些实用的代码示例。

一、获取客户端的真实IP地址
在PHP中,获取客户端的真实IP地址并不是一件简单的事情,因为客户端可能通过代理服务器访问,导致直接获取的IP地址并非真实IP。以下是一个示例函数,尝试从多个HTTP头部字段中获取真实IP地址:

function getRealIP() {
    $headers = [
        'HTTP_CLIENT_IP',
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_X_CLUSTER_CLIENT_IP',
        'HTTP_FORWARDED_FOR',
        'HTTP_FORWARDED',
        'REMOTE_ADDR'
    ];

    foreach ($headers as $header) {
        if (isset($_SERVER[$header]) && filter_var($_SERVER[$header], FILTER_VALIDATE_IP)) {
            return $_SERVER[$header];
        }
    }

    return $_SERVER['REMOTE_ADDR'];
}

$ip = getRealIP();
echo $ip;
二、判断IP地址的有效性
在获取到IP地址后,我们需要验证其有效性。PHP 5.2.0及以后的版本提供了filter_var函数,可以方便地验证IP地址的有效性:

function isValidIP($ip) {
    return filter_var($ip, FILTER_VALIDATE_IP) !== false;
}

$ip = '192.168.1.1';
if (isValidIP($ip)) {
    echo "有效的IP地址";
} else {
    echo "无效的IP地址";
}
三、IP地址的转换
在处理IP地址时,有时需要将其在字符串格式和数字格式之间转换。PHP提供了ip2long和long2ip函数来实现这一功能:

$ip = '192.168.1.1';
$numericIp = ip2long($ip);
echo "数字格式IP: " . $numericIp . "\n";

$originalIp = long2ip($numericIp);
echo "原始IP地址: " . $originalIp;
四、检查或过滤IP地址
在某些场景下,我们需要根据特定的规则来检查或过滤IP地址。例如,禁止某些IP地址访问我们的服务。以下是一个示例函数,支持IP区间、CIDR及单个IP格式的检查:

function netMatch($network, $ip) {
    $ip = trim($ip);
    $network = trim($network);

    if ($network === $ip) {
        return true;
    }

    if (strpos($network, '/') !== false) {
        list($net, $mask) = explode('/', $network, 2);
        $mask = (int)$mask;
        $ipLong = ip2long($ip);
        $netLong = ip2long($net);
        $netMask = -1 << (32 - $mask);
        return ($ipLong & $netMask) === ($netLong & $netMask);
    }

    return false;
}

$ip = '192.168.1.10';
$network = '192.168.1.0/24';

if (netMatch($network, $ip)) {
    echo "IP地址在网段内";
} else {
    echo "IP地址不在网段内";
}
五、调用纯真IP数据库返回具体地址
在实际应用中,我们可能需要根据IP地址获取其对应的地理位置信息。纯真IP数据库是一个常用的IP地址库,以下是如何在PHP中调用纯真IP数据库的方法:

下载并安装纯真IP数据库。
使用以下代码获取IP地址的具体地址信息:
function getIpAddress($ip) {
    $dbPath = '/path/to/qqwry.dat'; // 纯真IP数据库路径
    $qqwry = new QQWry($dbPath);
    $result = $qqwry->query($ip);
    return $result['country'] . $result['area'];
}

$ip = '8.8.8.8';
$address = getIpAddress($ip);
echo "IP地址: " . $ip . " 对应的地理位置: " . $address;
六、总结
本文详细介绍了在PHP中实现源IP地址检测与处理的方法,包括获取真实IP地址、验证IP地址有效性、IP地址转换、检查或过滤IP地址以及调用IP数据库获取地理位置信息。通过这些方法和实践指南,开发者可以更加灵活和高效地处理IP地址相关的问题,提升应用的性能和安全性。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 65楼 发表于: 2025-12-07 10:49:03 星期日  点亮(0)
根据教程编写根据ip获取实际地址代码:

<?php
function curl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    //参数为1表示传输数据,为0表示直接输出显示。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //参数为0表示不带头文件,为1表示带头文件
    curl_setopt($ch, CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
$data_info=curl("http://api.map.baidu.com/location/ip?ip=218.94.147.138&ak=XXXXXXXXXX");
//$data_info=file_get_contents("http://api.map.baidu.com/location/ip?ip=218.94.147.138&ak=XXXXXXXXXX");
$data_info = json_decode($data_info,true); //数据转换
echo '<pre>';
print_r($data_info);
echo '</pre>';
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 66楼 发表于: 2025-12-07 10:55:58 星期日  点亮(0)
网上找到几个栗子,我们本地测试下吧。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 67楼 发表于: 2025-12-07 11:04:09 星期日  点亮(0)
  1. global $db_olsize,$windid,$onlineip;
  2. echo "$onlineip";
输出结果:
112.37.131.176
么有问题!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 68楼 发表于: 2025-12-07 11:31:53 星期日  点亮(0)
回复59楼 zhangjingyu 的帖子
zhangjingyu 像这样的“来自:中国–山东–聊城 移动”这里面的短横线或者叫连接符,可以在写入数据表之前替换为空,这样就能美观些,这个再说吧。

除了排行榜页面,在最上面的论坛页头的用户名弹出菜单里也可以看到登录ip,如52楼所示位置,我们继续研究这个页面。 (2025-12-07 09:55)
这个字段的名字是ipfrom,可直接查看和发帖有关的几个php文件竟然没看到相关的代码,只能搜索整个论坛目录了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!