本帖最后由 putersham 于 2009-9-10 14:44 编辑
http://blog.sina.com.cn/s/blog_3f1a25310100enqj.html
这是最后一篇了,讲讲如何把删除记录显示以及根据删除者还有删除时间进行搜索
另外,我们还需要给回收站功能加上限制,
只有站点管理员和信息管理员删除的信息才进回收站,
其他用户在管理后台删除的不需要进入回收站,
还有就是限制非管理员利用URL访问回收站
我们在admincp.php的最底部把$list打印出来
print_r($list);
exit;
结果发现我们在数据库中增加的2个字段 rec_operator 和 rec_time 也随数据流一起输出了
所以我们直接就可以用了,只要修改模板
feed.htm 文件:
<div class="detail" <!--{if $value['image_3']}-->style="clear: both;"<!--{/if}-->>
$value[body_template]
</div>
改为
<div class="detail" <!--{if $value['image_3']}-->style="clear: both;"<!--{/if}-->>
$value[body_template]
<!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]} 于 {$value[rec_time]} 删除<!--{/if}-->
</div>
blog.htm 文件:
<td>
<a href="cp.php?ac=blog&op=edit&blogid=$value[blogid]&act=$_GET[act]" target="_blank">编辑</a>
<a href="admincp.php?ac=comment&id=$value[blogid]&idtype=blogid&act=$_GET[act]">评论</a>
</td>
</tr>
<!--{/loop}-->
改为:
<td>
<a href="cp.php?ac=blog&op=edit&blogid=$value[blogid]&act=$_GET[act]" target="_blank">编辑</a>
<a href="admincp.php?ac=comment&id=$value[blogid]&idtype=blogid&act=$_GET[act]">评论</a>
</td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}-->
<tr>
<td> </td>
<td align="right">{$value[rec_operator]}</td>
<!--{if $allowmanage}--><th width="80"> </th><!--{/if}-->
<th colspan="3">于 {$value[rec_time]} 删除</th>
</tr>
<!--{/if}-->
<!--{/loop}-->
album.htm 文件:
<br />时间: <!--{date('Y-m-d',$value[dateline])}-->
<!--{if $value[friend]}--><br />权限: [<a href="admincp.php?ac=album&friend=$value[friend]&act=$_GET[act]">$value[friend]</a>]<!--{/if}-->
<br /><a href="admincp.php?ac=pic&albumid=$value[albumid]&act=$_GET[act]">管理图片($value[picnum])</a>
</td>
<!--{if $key%2==1}--></tr><tr><!--{/if}-->
改为:
<br />时间: <!--{date('Y-m-d',$value[dateline])}-->
<!--{if $value[friend]}--><br />权限: [<a href="admincp.php?ac=album&friend=$value[friend]&act=$_GET[act]">$value[friend]</a>]<!--{/if}-->
<br /><a href="admincp.php?ac=pic&albumid=$value[albumid]&act=$_GET[act]">管理图片($value[picnum])</a>
<!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]}<br />于 {$value[rec_time]} 删除<!--{/if}-->
</td>
<!--{if $key%2==1}--></tr><tr><!--{/if}-->
pic.htm 文件:
<!--{if $value[hot]}--><br /><span style="color:red;">热度: $value[hot]</span><!--{/if}-->
<br><a href="admincp.php?ac=comment&id=$value[picid]&idtype=picid&act=$_GET[act]">评论管理</a>
</td>
<!--{if $key%2==1}--></tr><tr><!--{/if}-->
改为:
<!--{if $value[hot]}--><br /><span style="color:red;">热度: $value[hot]</span><!--{/if}-->
<br><a href="admincp.php?ac=comment&id=$value[picid]&idtype=picid&act=$_GET[act]">评论管理</a>
<!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]}<br />于 {$value[rec_time]} 删除<!--{/if}-->
</td>
<!--{if $key%2==1}--></tr><tr><!--{/if}-->
comment.htm 文件:
IP: <a href="admincp.php?ac=comment&ip=$value[ip]&act=$_GET[act]">$value[ip]</a>
<!--{date('Y-m-d H:i',$value[dateline])}-->
</p>
</td>
改为:
IP: <a href="admincp.php?ac=comment&ip=$value[ip]&act=$_GET[act]">$value[ip]</a>
<!--{date('Y-m-d H:i',$value[dateline])}-->
<!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]} 于 {$value[rec_time]} 删除<!--{/if}-->
</p>
</td>
thread.htm 文件:
<td><!--{date('Y-m-d',$value[dateline])}--></td>
</tr>
<!--{/loop}-->
</table>
改为:
<td><!--{date('Y-m-d',$value[dateline])}--></td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}-->
<tr>
<td colspan="4">{$value[rec_operator]} 于 {$value[rec_time]} 删除</td>
<!--{if $allowmanage}--><td> </td><!--{/if}-->
<td> </td>
</tr>
<!--{/if}-->
<!--{/loop}-->
</table>
post.htm 文件:
<!--{date('Y-m-d H:i',$value[dateline])}-->
</p>
</td>
改为:
<!--{date('Y-m-d H:i',$value[dateline])}-->
<!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]} 于 {$value[rec_time]} 删除<!--{/if}-->
</p>
</td>
doing.htm 文件:
$value[message] <!--{date('Y-m-d H:i', $value[dateline])}--></td></tr>
改为:
$value[message] <!--{date('Y-m-d H:i', $value[dateline])}--><!--{if $menus[1] && $_GET[act]==recycled}--><br />{$value[rec_operator]} 于 {$value[rec_time]} 删除<!--{/if}--></td></tr>
share.htm 文件:
<a href="admincp.php?ac=comment&id=$value[sid]&idtype=sid&act=$_GET[act]">管理评论</a>
改为:
<a href="admincp.php?ac=comment&id=$value[sid]&idtype=sid&act=$_GET[act]">管理评论</a><!--{if $menus[1] && $_GET[act]==recycled}--> {$value[rec_operator]} 于 {$value[rec_time]} 删除<!--{/if}-->
poll.htm 文件:
<a href="admincp.php?ac=poll&op=delete&pid=$value[pid]&act=$_GET[act]" onclick="return confirm('本操作不可恢复,确认删除?');" >删除</a>
<a href="admincp.php?ac=comment&id=$value[pid]&idtype=pid&act=$_GET[act]">评论</a>
</td>
</tr>
<!--{/loop}-->
</table>
改为:
<a href="admincp.php?ac=poll&op=delete&pid=$value[pid]&act=$_GET[act]" onclick="return confirm('本操作不可恢复,确认删除?');" >删除</a>
<a href="admincp.php?ac=comment&id=$value[pid]&idtype=pid&act=$_GET[act]">评论</a>
</td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}-->
<tr>
<td colspan="4">{$value[rec_operator]} 于 {$value[rec_time]} 删除</td>
<!--{if $allowmanage}--><td> </td><!--{/if}-->
<td> </td>
</tr>
<!--{/if}-->
<!--{/loop}-->
</table>
tag.htm 文件:
<td>$value[blognum]</td>
<td><!--{date('Y-m-d', $value[dateline])}--></td>
</tr>
<!--{/loop}-->
</table>
改为:
<td>$value[blognum]</td>
<td><!--{date('Y-m-d', $value[dateline])}--></td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}--><tr><td colspan="3">{$value[rec_operator]} 于 {$value[rec_time]} 删除</td></tr><!--{/if}-->
<!--{/loop}-->
</table>
mtag.htm 文件:
<td>$value[postnum]</td>
<td>[<a href="cp.php?ac=mtag&op=manage&tagid=$value[tagid]&subop=base&act=$_GET[act]" target="_blank">群组管理</a>]</td>
</tr>
<!--{/loop}-->
</table>
</div>
改为:
<td>$value[postnum]</td>
<td>[<a href="cp.php?ac=mtag&op=manage&tagid=$value[tagid]&subop=base&act=$_GET[act]" target="_blank">群组管理</a>]</td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}--><tr><td colspan="4">{$value[rec_operator]} 于 {$value[rec_time]} 删除</td></tr><!--{/if}-->
<!--{/loop}-->
</table>
</div>
event.htm 文件:
<a href="cp.php?ac=event&op=edit&id=$value[eventid]&act=$_GET[act]" target="_blank">编辑</a>
</td>
</tr>
<!--{/loop}-->
</table>
改为:
<a href="cp.php?ac=event&op=edit&id=$value[eventid]&act=$_GET[act]" target="_blank">编辑</a>
</td>
</tr>
<!--{if $menus[1] && $_GET[act]==recycled}-->
<tr><td colspan="7">{$value[rec_operator]} 于 {$value[rec_time]} 删除</td></tr>
<!--{/if}-->
<!--{/loop}-->
</table>
接着是增加账户限制,限制不是站点管理员和信息管理员的用户查看回收站内的信息
要让非管理员无法访问回收站自然最便捷的就是清理GET里的act参数
所以我们在admincp.php里加入判断
//判断管理回收站的权限
if ($_SGLOBAL['member']['groupid'] == 1 || $_SGLOBAL['member']['groupid'] == 2){
$_SGLOBAL[allowUseRec] = 1;
}else{
$_GET[act] = '';
unset($_SGLOBAL[allowUseRec]);
}
把这段代码加在include_once(S_ROOT.'./admin/admincp_'.$acfile.'.php');之前就行了
这样如果用户权限不是1或者2 既站点管理员或者信息管理员的话,就清理GET到的act参数的值,
同时给全局变量引入一个参数 $_SGLOBAL['allowUseRec']
这样我们在class_mysql 以及 function_delete 里对回收站的操作就可以有个限制了
先给数据库的回收加上条件,修改class_mysql.php:
if( strstr($sql,'DELETE') && preg_match("/admincp\.php/", empty($_SERVER['PHP_SELF'])?'': $_SERVER['PHP_SELF']) && preg_match("/admincp\.php/", empty($_SERVER['HTTP_REFERER'])?'': $_SERVER['HTTP_REFERER']) && in_array($_GET['ac'] , $acs) && $_GET['act']<>'recycled') {
改为:
global $_SGLOBAL;
if( strstr($sql,'DELETE') && preg_match("/admincp\.php/", empty($_SERVER['PHP_SELF'])?'': $_SERVER['PHP_SELF']) && preg_match("/admincp\.php/", empty($_SERVER['HTTP_REFERER'])?'': $_SERVER['HTTP_REFERER']) && in_array($_GET['ac'] , $acs) && $_GET['act']<>'recycled' && $_SGLOBAL['allowUseRec']) {
再修改图片文件移动,修改 function_delete.php:
if ($_GET['act']<>'recycled'){
//清理重复的备份文件
if (file_exists($file_bak_path)) unlink($file_bak_path);
//移动文件,代替删除动作
if(!@rename($file,$file_bak_path)) {
改为:
if ($_GET['act']<>'recycled' && $_SGLOBAL['allowUseRec']){
//清理重复的备份文件
if (file_exists($file_bak_path)) unlink($file_bak_path);
//移动文件,代替删除动作
if(!@rename($file,$file_bak_path)) {
好了 至此回收站就做完了
有人可能要问我为什么回收站不能回收
其实原因有很多,最麻烦的是积分和计数
就是回收以后的积分返还以及数量的计数,牵涉到很多问题
以后有需要了我再把这部分的做出来吧 呵呵。
09年09月10日补充,回收站添加后,对分页的处理
修改 ./source/function_common.php
//分页
function multi($num, $perpage, $curpage, $mpurl, $ajaxdiv='', $todiv='') {
global $_SCONFIG, $_SGLOBAL;
if(empty($ajaxdiv) && $_SGLOBAL['inajax']) {
$ajaxdiv = $_GET['ajaxdiv'];
}
改为:
//分页
function multi($num, $perpage, $curpage, $mpurl, $ajaxdiv='', $todiv='') {
global $_SCONFIG, $_SGLOBAL;
$mpurl = $mpurl.'&act='.$_GET['act'];
if(empty($ajaxdiv) && $_SGLOBAL['inajax']) {
$ajaxdiv = $_GET['ajaxdiv'];
} |