帝国CMS会员最近访问浏览记录插件
时间:2024年03月30日
/来源:网络
/编辑:佚名
数据库保存模式记录会员浏览的最新的10条信息。
拓展:记录游客的话,记录游客的cookie或者IP。论坛有个以cookie形式保存在客户端的插件。实现办法都一样。我觉得保存在数据库安全点。
1:首先新建一张表
帝国后台–系统–备份数据–执行sql:
CREATE TABLE 3.phome_ly_recorduser (
id INT( 10 ) NOT NULL AUTO_INCREMENT ,
userid INT( 10 ) NOT NULL ,
text TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL ,
PRIMARY KEY ( id )
) ENGINE = MYISAM ;
2:在需要记录信息的内容模板中插入以下代码:(注意-需要先引入jquery.js 下面代码要在jquery插件后面在插入)
<script>
//栏目ID
var classid = [!—classid–];
//信息ID
var id = [!—id–];
//表名称<script>
//栏目ID
var classid = [!—classid–];
//信息ID
var id = [!—id–];
//表名称
var tbname = '<?=$class_r[$navinfor['classid']]['tbname']?>';
//登陆用户
var userid = <?=$lguserid=intval(getcvar('mluserid'))?>;
$(function(){
if(userid)
{
$.post(
'/ly/recorduser/index.php',
{userid:userid,classid:classid,id:id,tbname:tbname},
"html"
);
}
})
</script>
———-
3:处理函数:
可以自己复制代码,也可以直接下载压缩包
文件路径 根目录/ly/recorduser/index.php
index.php文件代码:
<?php
require('../../e/class/connect.php'); //引入数据库配置文件和公共函数文件
require('../../e/class/db_sql.php'); //引入数据库操作文件
include('../../e/class/functions.php');
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
if(!$_POST['userid'])
{
exit;
}
/*
userid
text
/
表名称:
栏目ID
信息ID
表名称@@@栏目ID@@@信息ID::::::
/
*/
//查询是否已有userid
if($user=$empire->fetch1("select * from {$dbtbpre}ly_recorduser where userid = {$_POST['userid']}"))
{
//格式化字符串
$text="{$_POST['tbname']}@@@{$_POST['classid']}@@@{$_POST['id']}";
//信息分隔符
$dot='';
//判断是否已有记录数
if(strstr($user['text'],$text))
{
//已有记录
die;
}
if($user['text']!='')
{
$dot='::::::';
}
//大于10调记录数去掉最后的一条信息
if($user['text'] && substr_count($user['text'],$dot)>=9)
{
//去除最后一条记录数
$arr=explode('::::::',$user['text']);
$arrtext='';
$dot1=$dot;
for($i=0;$i<count($arr);$i++)
{
if($i!=(count($arr)-1))
{
if($i==(count($arr)-2))
{
$dot1='';
}
$arrtext.=$arr[$i].$dot1;
}
}
$text.=$dot.$arrtext;
}
else
{
$text.=$dot.$user['text'];
}
//不存在的记录数、更新表
$empire->query("update {$dbtbpre}ly_recorduser set text = '{$text}' where userid = {$_POST['userid']}");
}
//没有记录数插入一条
else
{
$text="{$_POST['tbname']}@@@@{$_POST['classid']}@@@{$_POST['id']}";
$sql=$empire->query(" INSERT INTO {$dbtbpre}ly_recorduser (id,userid,text) VALUES ( '' , {$_POST['userid']} , '{$text}' ) ");
}
?>
4:在使用的地方插入以下代码:
<ul>
<?php
$record=$empire->fetch1("select * from {$dbtbpre}ly_recorduser where userid = $user[userid]");
if($record)
{
$info=explode("::::::",$record['text']);
$text='';
foreach($info as $v)
{
$arr=explode("@@@",$v);
$sql=$empire->fetch1("select * from {$dbtbpre}ecms_{$arr[0]} where classid = {$arr[1]} and id = {$arr[2]}");
$titleurl=sys_ReturnBqTitleLink($sql);
$text.="<li><a href='{$titleurl}' target='_blank'>{$sql[title]}</a></li>";
//print_r($arr);
//die;
}
}
?>
<?=$text?>
</ul>
拓展:记录游客的话,记录游客的cookie或者IP。论坛有个以cookie形式保存在客户端的插件。实现办法都一样。我觉得保存在数据库安全点。
1:首先新建一张表
帝国后台–系统–备份数据–执行sql:
CREATE TABLE 3.phome_ly_recorduser (
id INT( 10 ) NOT NULL AUTO_INCREMENT ,
userid INT( 10 ) NOT NULL ,
text TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL ,
PRIMARY KEY ( id )
) ENGINE = MYISAM ;
2:在需要记录信息的内容模板中插入以下代码:(注意-需要先引入jquery.js 下面代码要在jquery插件后面在插入)
<script>
//栏目ID
var classid = [!—classid–];
//信息ID
var id = [!—id–];
//表名称<script>
//栏目ID
var classid = [!—classid–];
//信息ID
var id = [!—id–];
//表名称
var tbname = '<?=$class_r[$navinfor['classid']]['tbname']?>';
//登陆用户
var userid = <?=$lguserid=intval(getcvar('mluserid'))?>;
$(function(){
if(userid)
{
$.post(
'/ly/recorduser/index.php',
{userid:userid,classid:classid,id:id,tbname:tbname},
"html"
);
}
})
</script>
———-
3:处理函数:
可以自己复制代码,也可以直接下载压缩包
文件路径 根目录/ly/recorduser/index.php
index.php文件代码:
<?php
require('../../e/class/connect.php'); //引入数据库配置文件和公共函数文件
require('../../e/class/db_sql.php'); //引入数据库操作文件
include('../../e/class/functions.php');
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
if(!$_POST['userid'])
{
exit;
}
/*
userid
text
/
表名称:
栏目ID
信息ID
表名称@@@栏目ID@@@信息ID::::::
/
*/
//查询是否已有userid
if($user=$empire->fetch1("select * from {$dbtbpre}ly_recorduser where userid = {$_POST['userid']}"))
{
//格式化字符串
$text="{$_POST['tbname']}@@@{$_POST['classid']}@@@{$_POST['id']}";
//信息分隔符
$dot='';
//判断是否已有记录数
if(strstr($user['text'],$text))
{
//已有记录
die;
}
if($user['text']!='')
{
$dot='::::::';
}
//大于10调记录数去掉最后的一条信息
if($user['text'] && substr_count($user['text'],$dot)>=9)
{
//去除最后一条记录数
$arr=explode('::::::',$user['text']);
$arrtext='';
$dot1=$dot;
for($i=0;$i<count($arr);$i++)
{
if($i!=(count($arr)-1))
{
if($i==(count($arr)-2))
{
$dot1='';
}
$arrtext.=$arr[$i].$dot1;
}
}
$text.=$dot.$arrtext;
}
else
{
$text.=$dot.$user['text'];
}
//不存在的记录数、更新表
$empire->query("update {$dbtbpre}ly_recorduser set text = '{$text}' where userid = {$_POST['userid']}");
}
//没有记录数插入一条
else
{
$text="{$_POST['tbname']}@@@@{$_POST['classid']}@@@{$_POST['id']}";
$sql=$empire->query(" INSERT INTO {$dbtbpre}ly_recorduser (id,userid,text) VALUES ( '' , {$_POST['userid']} , '{$text}' ) ");
}
?>
4:在使用的地方插入以下代码:
<ul>
<?php
$record=$empire->fetch1("select * from {$dbtbpre}ly_recorduser where userid = $user[userid]");
if($record)
{
$info=explode("::::::",$record['text']);
$text='';
foreach($info as $v)
{
$arr=explode("@@@",$v);
$sql=$empire->fetch1("select * from {$dbtbpre}ecms_{$arr[0]} where classid = {$arr[1]} and id = {$arr[2]}");
$titleurl=sys_ReturnBqTitleLink($sql);
$text.="<li><a href='{$titleurl}' target='_blank'>{$sql[title]}</a></li>";
//print_r($arr);
//die;
}
}
?>
<?=$text?>
</ul>
新闻资讯 更多
- 【帝国cms教程】帝国CMS模板变量$GLOBALS[navclassid]用法分析04-03
- 【帝国cms教程】鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总04-03
- 【帝国cms教程】怎么快速找出帝国CMS数据库配置文件路径及迁移网站后修改技巧!04-03
- 【帝国cms教程】帝国CMS模板$GLOBALS[navclassid]用法详解04-03
- 【帝国cms教程】帝国cms 7.5版列表页分页样式修改笔记04-02
- 【帝国cms教程】解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法04-02
- 【帝国cms教程】帝国CMS只备份栏目和模板的方法04-02
- 【帝国cms教程】帝国CMS怎样删除清空数据库记录?04-02
热门文章
- 178Moban源码谈谈免费源码与收费源码的区别
- 2帝国CMS忘记后台登陆用户名、密码、认证码的解决方法
- 3帝国CMS(EmpireCMS) v7.5后台任意代码执行漏洞及具体修复方法
- 4帝国CMS和WordPress 哪个好?哪个适合建站?
- 5如何解决Discuz的密码错误次数过多请15分钟后登陆的问题
- 6帝国cms灵动标签取得内容和栏目链接地址
- 7emlog pro 注册码“开心”教程(如果有一天,emlog官方版 或者 emlog免费版 跑路了,那用户怎么办?)
- 8织梦CMS在nginx下设置伪静态方法(附nginx伪静态规则)
- 9帝国cms后台登录出现”您还未登录”怎么解决?
- 10帝国cms7.5忘记登录密码 和忘记登录认证码以及多次登录 失败被锁定解决办法