第十五章:第9节论坛系统(BBS)日志列表显示与搜索

更新于:2018-03-01 16:58:18

提示:本节学习代码中前面讲过的很多代码楠神又做了很大的改动,比如把控制器group改成了super。写程序就是这样,不是写完就不改了。发现前面写得不好,就要做很大改动。


这节展示的代码主要是如何展示日志列表信息和搜索日志功能。


1.png


1)查看日志列表


1.png

这几节课的代码中,控制器中每一个public方法都会接受“action_type”参数,说下“action_type”参数的作用:


为1时代表添加,2时代表删除,3时代表提交搜索,4时代表修改。


增删查改这四种行为因为都从一个入口方法进入,用action_type参数可区分当前在执行什么行为。


执行添加和修改时,还要接受“is_post”参数,这个参数主要区分是显示表单页面还是接受提交的数据。


2)搜索日志列表


当“action_type”参数是3时,代表有搜索参数提交,执行_searchLoginLog方法,获取搜索条件


1.png


3)修改日志信息


日志信息我们只修改一个字段“ip_info”,在“AdminLogin”模型文件中,楠神也做了限制


1.png


“ip_info”这个字段主要填写“ip”字段中ip的具体信息,怎么获取ip的具体信息呢?这需要我们去请求第三方获得了。网上有很多免费的IP接口,楠神这里使用的是淘宝的接口。


楠神写了一个“API”扩展类


1.png

修改“ip_info”具体的流程:


当管理员打开日志列表,通过JS判断哪一行日志信息“ip_info”字段还是空白,就通过ajax请求服务器PHP脚本程序,PHP再去请求第三方接口获取ip信息,然后修改这条日志信息的“ip_info”字段。


有朋友这个地方会想:当初添加日志信息的时候就已经有IP数据了,为什么不把“ip_info”字段的数据也添加上,何必以后再去写一个修改功能。主要是有这样一个原因:


比如登录,当用户输入用户名、密码登录,ajax请求服务器,PHP程序会添加一条日志数据。当添加这条日志数据时,把“ip_info”字段也添加上,那必然会去请求第三方数据。假如因为网络或其他原因第三方迟迟不响应,那程序就会卡住,用户也无法完成登录操作,需在浏览器前一直等待,这样就很不利于用户体验。


“ip_info”这个字段数据不重要,我们应该使用异步编程,不应该使用同步编程。最好的解决办法在不影响用户正常操作的情况下,使用ajax异步更新。


4)添加和删除日志信息


登录日志在用户登录时会自动添加,所以不用写手动添加日志的功能。为了日志数据的安全,最好不要写删除功能。



操作日志与登录日志的代码都差不多。就是在点击日志操作详情时,会弹出一个页面层。这地方我使用的是layer插件实现的。layer插件是很不错的插件,可实现很多JS特效。


1.png


本节学习代码》》》