帝国cms会员空间模板显示最近来访访客信息

news/2024/12/4 19:52:26/文章来源:https://www.cnblogs.com/hwrex/p/18447887

为了实现用户登录状态下的信息记录以及未登录状态下的IP地区记录功能,你可以按照以下步骤操作:

第一步:创建数据表

在帝国CMS后台执行以下SQL语句创建数据表:

CREATE TABLE `{$dbtbpre}_userkjf` (`id` int(11) NOT NULL AUTO_INCREMENT,`lfuserid` varchar(20) CHARACTER SET gbk DEFAULT NULL,`bfuserid` varchar(100) CHARACTER SET gbk NOT NULL,`ip` char(50) CHARACTER SET gbk DEFAULT NULL,`ipdl` char(50) CHARACTER SET gbk DEFAULT NULL,`lftime` char(20) CHARACTER SET gbk NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=latin1 AUTO_INCREMENT=65;

第二步:复制代码到 header.temp.php

将以下代码复制到 e/space/template/default/header.temp.php 文件中:

<?php
// 取得登陆者信息
$userid = getcvar('mluserid');    // 会员ID
$uid = $_GET['userid']; // 当前空间的主人IDif ($uid != $userid) {// 如果访客已登陆,则记录访客信息if ($userid) {$lfUname = $_COOKIE["lfUname"]; // 获取访客信息$fkdd = $empire->fetch1("SELECT * FROM {$dbtbpre}userkjf WHERE bfuserid='{$uid}' AND lfuserid='{$userid}'");if (!$fkdd) {$empire->query("INSERT INTO {$dbtbpre}userkjf (lfuserid, bfuserid, lftime) VALUES ('{$userid}', '{$uid}', '".date('Y-m-d H:i:s')."')");}} else { // 如果访客未登陆,则记录IP和地区信息// 取得IP 和地区$gifo = new get_gust_info();$ip = $gifo->Getip();$ipadds = $gifo->Getaddress();$ipdl = '';foreach ($ipadds[0] as $value) {$ipdl .= iconv("utf-8", "gbk", $value);}// 获取访客信息$lfUname = $_COOKIE["lfUname"];if ($lfUname == '') {$empire->query("INSERT INTO {$dbtbpre}userkjf (bfuserid, ip, ipdl, lftime) VALUES ('{$uid}', '{$ip}', '{$ipdl}', '".date('Y-m-d H:i:s')."')");setcookie("lfUname", "游客", time() + 1200); // 创建来访客信息,20分钟过期}}
}
?><?php
// 作用取得客户端的ip、地理信息、浏览器、本地真实IP
class get_gust_info {// 获得访客真实ipfunction Getip() {if (!empty($_SERVER["HTTP_CLIENT_IP"])) {$ip = $_SERVER["HTTP_CLIENT_IP"];}if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { // 获取代理ip$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);}if ($ip) {array_unshift($ips, $ip);}$count = count($ips);for ($i = 0; $i < $count; $i++) {if (!preg_match("/^(10|172.16|192.168)./i", $ips[$i])) { // 排除局域网ip$ip = $ips[$i];break;}}$tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR'];if ($tip == "127.0.0.1") { // 获得本地真实IPreturn $this->get_onlineip();} else {return $tip;}}// 获得本地真实IPfunction get_onlineip() {$mip = file_get_contents("http://city.ip138.com/city0.asp");if ($mip) {preg_match("/[.*]/", $mip, $sip);$p = array("/[/", "/]/");return preg_replace($p, "", $sip[0]);} else {return "获取本地IP失败!";}}// 根据ip获得访客所在地地名function Getaddress($ip = '') {if (empty($ip)) {$ip = $this->Getip();}$ipadd = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" . $ip); // 根据新浪api接口获取if ($ipadd) {$charset = iconv("gbk", "utf-8", $ipadd);preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $charset, $ipadds);return $ipadds; // 返回一个二维数组} else {return "地址未知";}}
}
?><?php
// 会员空间访客显示开始
$fkSQL = "SELECT * FROM {$dbtbpre}userkjf WHERE bfuserid='{$uid}' ORDER BY id DESC LIMIT 5";
$fkSQL = $empire->query($fkSQL);while ($rs = $empire->fetch($fkSQL)) {if ($rs['lfuserid']) {$fkxxrs = $empire->fetch1("SELECT userid, truename, userpic FROM {$dbtbpre}enewsmemberadd WHERE userid='{$rs['lfuserid']}' LIMIT 1");?><li><a href="/e/space/index.php?userid=<?=$fkxxrs['userid']?>"><img src="<?=$fkxxrs['userpic'] ? $fkxxrs['userpic'] : '/templets/member/common/images/dfboy.png'?>" alt="<?=$fkxxrs['truename']?>" /></a><a href="/e/space/index.php?userid=<?=$fkxxrs['userid']?>"><?=$fkxxrs['truename']?></a></li><?php} else {?><li><a href="#"><img src="../data/images/nouserpic.gif" /></a><span><div><?= $rs['ipdl'] ? "来自: " . $rs['ipdl'] : "未知地区" ?></div><br><div><?= $rs['lftime'] ?></div></span></li><?php}
}
// 会员空间访客显示结束
?>

注意事项

  1. 表前缀:确保在创建数据表时使用正确的表前缀({$dbtbpre})。
  2. 字符集转换:确保在处理中文数据时使用正确的字符集转换。
  3. API接口:确保使用的IP地址解析API接口有效且能正常访问。
  4. 安全性和隐私:确保在记录用户信息时遵守相关法律法规,并保护用户隐私。

通过以上步骤,你应该能够实现用户登录状态下的信息记录以及未登录状态下的IP地区记录功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808500.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VMware VCF】使用 PowerVCF 连接和管理 VMware Cloud Foundation 环境。

VMware 有一个非常强大的命令行工具叫 PowerCLI,该工具是基于 PowerShell 开发的模块,主要用于在 Windows 环境中连接和管理传统虚拟化解决方案,比如 vSphere、vSAN 以及 NSX 等。之所以 PowerCLI 非常强大,是因为它几乎可以实现这些解决方案 WEB UI 中的所有管理操作,甚至…

帝国cms搜索页模板关键字结果标题加红的方法

要在帝国CMS的搜索结果页面上实现关键词高亮显示的功能,可以按照以下步骤操作:备份原有模板文件: 在修改任何模板文件之前,请确保备份原有的模板文件,以防修改出错时能够恢复。定位到模板编辑器:登录帝国CMS后台。 导航至“模板”->“模板列表”。 找到需要修改的搜索…

Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集

Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集 Arduino IDE 安装如下库文件 DHT sensor library by AdafruitDHT11 温湿度传感器 Data 引脚与 Arduino Nano 开发板的 D2 引脚连接 代码 #include <DHT.h>#define Temperat…

猜你想搜:博客园消息点不开怎么解决?

打不开博客园的消息怎么办?跟着我的步骤! 还记得在衡实的时候我们没办法从首页直接打开头像是怎么办的吗?是的,“过去启发当下”! 第一步:在首页将鼠标放在“赞助商”旁边的箭头处,点开“怀旧”;第二步:再从怀旧界面点下图位置的专区;第三步:再次尝试点击消息,你会…

2024-2025 20242307

我的作业 1,以上内容没有掌握没有我掌握的🤦,这些内容我均未掌握 Markdown 简介与语法 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档。它的设计目标是实现“易读易写”,让人们专注于内容创作,而…

WMS、WCS、WES:它们是什么以及有何不同

WMS、WCS和WES是仓库管理系统中的三个重要组成部分。 WMS关注库存流和存储,优化劳动力管理和资源利用; WCS负责执行WMS创建的计划和活动序列,提供设备和系统的实时监控; WES则充当WMS和WCS之间的桥梁,提高运营效率、灵活性和可扩展性。 这三个系统相互协作,共同提升仓库绩…

高级语言程序设计第二次个人作业.

这个作业属于哪个课程: https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/1328 学号:102400107 姓名:陶玉兰这次作业过程中有以下几个问题: 1.在例3.7输出时以惯用的cpp格式直接输出了,没有注意到要求…

统计术语

基期、现期 作为对比参照的时期称为基期,而相对于基期的称为现期。 例,今年比去年公司营收增加100万。 去年:基期 今年:现期增长量 增长量是指基期量与现期量增长(或减少)的绝对量。 表述特征: ……比……增长(下降)某个具体值。 增长量=现期量-基期量;增长率 是指增长量与…

MAC 安装 Homebrew (使用国内镜像源)

Homebrew 官方地址 https://brew.sh/zh-cn/ 官方地址使用github的源,国内访问速度很慢,所以我们需要使用国内的源。 自动安装 Homebrew 首先可以尝试自动安装方法,直接一行命令就行: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homeb…

GraphQL、sequelize-typescript 、Apollo Server 4 实例

新建项目文件夹$ mkdir demo $ cd demo初始化TypeScript配置$ npx tsc --init安装 Sequelize Sequelize-cli$ npm install --save-dev @types/node @types/validator $ npm install sequelize reflect-metadata sequelize-typescript $ npm install --save-dev ts-node @types/…