市场日志功能开发(WEB)
html,js,jquery,php开发
新需求: 用户,位置,操作类型,操作内容,时间
1.那么,我们需要首先启动项目,关闭冲突的端口(vmware总是和我们的web容器端口冲突)
2.好了之后,我们检出代码。
打开页面
在按钮中如果操作了下列,我们就要带入提交后台了。
好了,我们先确定需求。当我们点击按钮,触发事件,事件提交后台请求时,我们需要带入下列数据:用户,位置,操作类型,操作内容,时间
那么,我们来猜测一下,用户得从内存里面拿,session里面一般都会放用户的基本信息,获取当前登录用户。位置在点击时触发事件时菜单栏目,操作类型就是按钮定义类型。操作内容么无非就是发送请求的内容,时间就是给入 new Date
这些是输入,输出源在mongodb里面,我们需要写一个公共的类来存入日志。
好的,一步一步来,首先我们要从前台发送请求过来时,把这些输入给拿到。
3.1.我们从账号管理开始,首先我们找到该页面:账号管理
这么一搜应有尽有,从html到js表单提交,再到management_users.php接受请求分发给别的逻辑处理层,都在这里,我们从页面开始看,然后确定这5个输出,拼接字符串的方式往后台送吧。
账号管理,菜单id为menu_0_1
对应的意义就是左侧的导航栏
当账号管理被点击的时候,我们可以看到,确实向后台发送了请求,不要急,接着看js,发送请求。
这里我们解释一下e.preventDefault()
event.preventDefault() 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。例如,如果 type 属性是 "submit",在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。
好的,接着往下,ajax_href_0_1();
接着就去看看这个方法,应该是发送ajax请求。
这个ajax请求其实就是去打开页面的,不用过多的研究。继续走就好了。追进去这个php。
可以看到哪个用户已经进入我们的眼帘了,拿到用户信息,接着跳转到了management_users.html页面去看看。
需要注意的点是,这里从刚才的php里面把用户和角色信息拿到了,并且,我们可以看到,这里有一个比较重要的js文件,稍后的事件触发应该全部在这里面了,发送了ajax请求。别急,这个html接着往下看。
这三个确定的id要记住了,分别对应的增删改确定id,稍后我们都要记录。
好了,到目前为止,我们可能已经拿到了用户信息,角色信息,关于页面的信息,我们稍后要改造,从页面一步一步带过来也行的。接着看这个js吧。
我们距离发送最后的请求越来越近了,我们在这个js里面,用刚才的增加按钮里面的确定,来查找对应的ajax事件。id = sure_add
好的,这个确定按钮做的事情都在这里了。进入开发环节,我在这里直接解释开发的代码和展示调试结果了。
1.js拿到当前所在菜单栏目。
这里我们拿到当前菜单的名称,然后发送ajax传送到后台。
2.向php中拼接将来所要打进的日志库(这里我们用的3.48的测试日志库)
在后台这里,我们汇总了很多字段信息,以准备将来插入数据库大致字段意思,用户名、菜单栏目、操作类型、操作的内容、客户端ip地址、以及操作返回的结果。 就是日志记录方法
logToDatabases($username,$menuString,$operate_id,$operate_context,$ip,$operate_status);
在记录日志之前,我们做了这个操作:
$operate_status= $EditTableData->add_data($code, $name, $pwd, $group_code, $group_name, $cm);
add操作被我们增加了返回值,所以我们把代码变成这样:
我们将返回值返回进入日志,后期可以看。那么,关于$EditTableData->add_data()方法修改
3.$EditTableData->add_data()修改:
从这张图片可以和del_data对比一下,我们将$users->insert($insert_array);嵌套一层返回值,返回出去,让刚才的新增数据方法接受,然后我们当做参数,记入日志。
4.记入日志方法
为什么不写类?因为php创建类的资源要远大于创建方法,所以我们使用方法。而且我们写到通用方法里面,common.php
那,我们在这里将参数全部传入,新建一个时间戳,创建连接,然后创建数据数组之后,全部插入。如果不存在会重新新建,如果存在会直接使用
当然这些代码存在调优,就是java中说的,连接池,mongoPool,不可能每次我都来创建一次连接的,这些调优我们会在后期加上。现在我们调试。
5.调试出结果。
点击菜单栏目:
添加测试数据,点击确定。
这个时候,注意这个php入口,点进去看。
请注意,数据已经插入。
我们要去mongo里面看日志了。
因为代码里面我们
使用了库:z_operate_log
使用了用户:logs
所以,我们用xshell进入mongo的客户端。192.168.3.48上面。
./cd_mongo_report.sh
如果需要删除库:进入到库里面(use 库名)之后db.dropDatabase();
show dbs;
use z_operate_log;
show tables;
db.logs.find()
这条日志就是我们刚才新增用户时,存进来的日志,和前面php插入的数据对应。
有关于mongo的api和php数据库连接操作可以看文档:
http://blog.csdn.net/qq_33792843/article/details/76573661
http://blog.csdn.net/qq_33792843/article/details/76551991
掌握了思想,开发就是这么简单。