帝国cms会员空间模板显示最近来访访客信息
为了实现用户登录状态下的信息记录以及未登录状态下的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']; // 当前空间的主人ID
if ($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 {
// 获得访客真实ip
function 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") { // 获得本地真实IP
return $this->get_onlineip();
} else {
return $tip;
}
}
// 获得本地真实IP
function 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
}
}
// 会员空间访客显示结束
?>
注意事项
- 表前缀:确保在创建数据表时使用正确的表前缀(
{$dbtbpre}
)。 - 字符集转换:确保在处理中文数据时使用正确的字符集转换。
- API接口:确保使用的IP地址解析API接口有效且能正常访问。
- 安全性和隐私:确保在记录用户信息时遵守相关法律法规,并保护用户隐私。
通过以上步骤,你应该能够实现用户登录状态下的信息记录以及未登录状态下的IP地区记录功能。
扫码添加技术【解决问题】
专注中小企业网站建设、网站安全12年。
熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。
承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18447887
标签:
DedeCMS Error Track:DedeCMS错误警告:连接数据库失败
, Dedecms数据库表和字段详细介绍
, 宝塔反向代理配置
, 宝塔如何301重定向配置
, 宝塔如何切换PHP版本
, 宝塔如何添加SSL证书
, 宝塔如何添加伪静态
, 查找和管理数据库的具体步骤
, 帝国cms后台恢复数据库出现的错误
, 帝国cms搜索页模板关键字结果标题加红的方法
, 轻松找到并查看织梦CMS的数据库配置文件,从而获取数据库连接信息
, 找到织梦CMS的数据库配置文件,以便了解数据库的具体连接信息
, 织梦CMS(dedecms)的数据库连接文件_织梦连接数据库文件
, 织梦CMS导入数据库,修改数据库配置文件方法
, 织梦cms连接数据库失败怎么办
, 织梦CMS数据库配置文件在哪里
, 织梦如何数据库备份,织梦cms网站数据怎么备份与还原
, 织梦修改数据库前缀
, 织梦需要什么数据库织梦数据库在哪
, 帝国cms会员空间模板显示最近来访访客信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix