当前位置:首页 > 技术 > 正文内容

PHP网页显示用户IP地址信息的代码记录

Lavfun3个月前 (01-02)技术72

Part 01

直接放入php文件中:

<?php
// 获取用户 IP
function getClientIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

// 调用 API 获取 IP 信息
function getIPInfo($ip) {
    $datatype = 'txt';
    $url = 'https://xxxxxxxxxxx.api.cn/ipdata/?ip=' . $ip . '&datatype=' . $datatype;//注意替换为自己的url链接;
    $header = array('token:xxxxxxxxxxxxx');//token替换为你自己的token;
    return getData($url, $header);
}

// 发起 HTTP 请求
function getData($url, $header) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    $handles = curl_exec($ch);
    curl_close($ch);
    return $handles;
}

// 获取用户 IP 和 IP 信息
$userIP = getClientIP();
$ipInfo = getIPInfo($userIP);

// 输出结果
// echo "您的 IP 地址是:" . $userIP . "<br>";
// var_dump($ipInfo);
// echo $ipInfo;
?>

放入html文本里引用的:

    <div class="showip1">当前IP地址:<?php echo $userIP;?></div>
    <div class="showip1">当前IP详情:<?php echo $ipInfo;?></div>



Part 02

对于有些程序的网站,无法直接运行php代码的,需要改为插件的方式注入才行:

#注册插件    

RegisterPlugin("default", "ActivePlugin_default");

function ActivePlugin_default()
{
    // 将自定义方法注册到模板系统
    Add_Filter_Plugin('Filter_Plugin_Template_Display', 'default_AddMethodsToTemplate');

}

然后:

// 将方法注入到模板中
function default_AddMethodsToTemplate(&$template)
{
    $user_ip = getClientIP();
    $ip_location = getIPInfo($user_ip);

    $template->SetTags('user_ip', $user_ip);
    $template->SetTags('ip_location', $ip_location);
}

// 获取用户 IP 地址
function getClientIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

// 调用 API 获取 IP 归属地信息
function getIPInfo($ip) {
    $datatype = 'json';//数据类型有:json、txt、xml等格式输出可选;
    $url = 'https://xxxxxxxxxx.api.cn/ipdata/?ip=' . $ip . '&datatype=' . $datatype;//注意替换为自己的url链接;
    $token='xxxxxxxxxxxxxx';//这个token要换成自己的;
    $header = array('token:'.$token);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    $handles = curl_exec($ch);
    curl_close($ch);
    return $handles;
}

最后再:

//插入html文档使用部分:
    <div class="showip1" style="text-align: center; font-size: 14px; color: #abb0bd; font-weight: 400;">当前IP地址:{$user_ip}</div>
    <div class="showip2" style="text-align: center; font-size: 14px; color: #abb0bd; font-weight: 400;">当前IP信息:{$ip_location}</div>

完美搞定!


更多详情见:https://user.ip138.com/ip/doc/

扫描二维码推送至手机访问。

版权声明:本文由 声光视趣 - blog.lavfun.com 发布,如需转载请注明出处。

本文链接:https://blog.lavfun.com/technical-forum/109.html

分享给朋友:

相关文章

解决百度ueditor支持iframe框架页面的视频播放问题

新下载的ueditor 增加了xss 安全过虑,把iframe过滤了,导致发表的文章包含的视频播放功能被限制了。说明:新版本ueditor要修改 xss过滤白名单 修改配置文件ueditor.config.js ...

本站原创:PHPCMS的NGINX伪静态和URL规则设置实践记录

本站原创:PHPCMS的NGINX伪静态和URL规则设置实践记录

首先说明一下,本人小白,不懂网页代码编程语言或技术,只是自己摸索了一点简单的修改页面的方法,大部分都是在网上找到的资料,再加上自己的理解、修改、测试琢磨出来的,写出来一方面是自己做个记录,另外一方面希望能帮助到有需要的人吧,水平有限还请鉴谅...

解决phpcms不支持iframe视频播放的问题

找到文件:phpcms\libs\functions\global.func.php,如下代码:/**  * 转义 javascript 代码标记  *  * @p...

给Discuz帖子标题增加最少字数提示与限制

给Discuz帖子标题增加最少字数提示与限制

我们知道DZ默认的帖子标题字数最多是80字节,可是却没有限制最少字节数,让站长们纠结的是很多论坛新手发帖的时候,标题只有两三个字,甚至有的只有一个字。很不利于SEO,也大大降低了帖子列表的阅读体验,因此就想限制一下新帖标题最少字数。通过一番...

Discuz怎么修改帖子发布时间实现自定义排序

Discuz怎么修改帖子发布时间实现自定义排序

登录自己空间的数据库管理phpmyadmin界面;找到数据表 pre_forum_post 和 pre_forum_thread;再搜索要修改时间帖子的tid并且编辑该条记录;然后修改这条记录的dateline字段,这个字段就是记录帖子的发...