帝国cms会员空间模板显示最近来访访客信息
更新日期:2024-10-10 18:46:07 来源:网络
为了实现用户登录状态下的信息记录以及未登录状态下的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地区记录功能。
- 请问如何处理升级为香港主机后网站无法访问的问题
- 防火墙设置与云服务器80端口访问限制
- 解决远程登录服务器失败及重启后仍无法连接的问题
- 远程访问故障排除 - 解决无法登录虚拟主机和数据库的问题
- 解析与绑定完成后网站仍无法正常访问的排查步骤及解决方案
- 请问如何在ASP页面中判断客户端浏览器是否为移动设备,并进行相应的跳转?
- 输入网站后台密码时显示不对,如何解决?
- 选择合适工具,掌握静态网站模板修改方法
- 静态网站上传后如何安全有效地进行修改,确保不影响网站的正常运行?
- 请问如何修改网站图片源代码
- 网站admin密码忘记了怎么办
- 如何解决PbootCMS网站后台推送文章到百度时的“site error”错误?
- 迅睿CMS网站用户投稿如何取消验证码
- 宝塔面板提示不是安全连接或私密连接,如何解决?
- 网站提示429 Too Many Requests:用户发送了太多请求怎么办
- 易优cms搜索结果页如何统计关键词文章数量
- 网站源码安装后访问首页,页面错乱的处理方法
- pbootcms模板如何做好防护
- 重置网站后台管理员账号密码
- 升级完后网站提示500错误怎么办
- pbootcms如何设置发布内容不自动提取缩略图(1)
- 百度网址安全中心提醒您:该页面可能存在违法信息!如何处理?
- 易优cms数据表或视图不存在,请联系技术处理。
- Pbootcms留言“提交成功”的提示语修改(1)
- PBOOTCMS中新增并开启手机端模板,以便为用户提供更好的移动设备浏览体验
- imagecreatefrompng(): gd-png: libpng warning: iCCP: known incorrect sRGB profile
- 易优CMS文章内容页如何获取上一篇下一篇
- PbootCMS全站模板date时间标签/时间格式常见的8种调用方式
- pbootcms网站后台登录提示:”登录失败:数据库目录写入权限不足!“
- Nginx 启动/停止 / 首页显示 / 安装 / 卸载