论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

网站中对用户管理实现方法的探讨

引言

初次设计、实现一个网站时,对网站用户的管理是一个棘手的问题。如果新用户注册时必须设置审核,那么管理员就要在系统后台对新注册的用户进行审核,并确定哪些用户可以成为网站的正式用户。可用于网站管理的审核用户算法很多,值得一提的是本文作者在毕业设计中探索出来的方法,这是一套能够批量通过与禁用多个用户的算法,实现对有大量用户网站的有效管理。 http://www.paper51.com

一、   对用户操作权限管理的分析

内容来自www.paper51.com

新兴家教网站是我们毕业设计完成的一个将拥有大量用户的公益性网站。在其用户表里,用一个字段来存放用户的操作权限(1有,0无)。管理员可以在后台对该值进行修改,从而实现对用户的管理。具体实现方法是用多选按钮,选中的有权限,没选中的没有权限。下面我将对整个实现过程做一个分析。

http://www.paper51.com

为了便于管理者开展工作,首先,应把数据从数据库中读出并显示。如图:

http://www.paper51.com

内容来自www.paper51.com

然后,点击保存后就可以启用或者禁用当前的用户。具体地实现这个处理过程,我们是通过以下程序来完成: 内容来自www.paper51.com

(1) 从数据库查出用户的当前状态并用单选按钮来显示

内容来自论文无忧网 www.paper51.com

内容来自www.paper51.com

在while循环里显示出用户信息,用checkbox 来显示当前用户的状态。把它们的ID 存放在pass_id 这个数组里。 copyright paper51.com

(2)点击保存提交,把选中的checkbox的值传到处理页面 paper51.com

这里,我直接在本页处理。让action="shenhe.php?action=pass"。程序如下: 内容来自www.paper51.com

copyright paper51.com

这样做可以一次将用户状态启用。因为它每次只处理选中的用户,也就是只能增加不能减少,只可以通过不可以禁用。那么,一旦需要禁用用户怎么办呢? 内容来自论文无忧网 www.paper51.com

我们知道,数组pass_id传过来的只是选中的checkbox的值,而没有选中的也就是要禁用的则不知道。关键是找出禁用用户的ID即禁用该用户的关键量。具体操作,只有到数据库里边去找,用现在所知道的pass_id里面的值去跟数据库里边的所有记录做比较,也就是两个for循环嵌套。这样能实现吗?当然可以,但有一个问题,数据库里边的用户ID是不连续的,也就是里边有一些记录可能被删除了。我们也要把它纳入循环吗?没必要。老方法,把现有的记录ID如实查出来并放入一个数组。注意,我们要的只是用户ID,先看如下程序:

http://www.paper51.com

paper51.com

这个程序看上去似乎是正确的,其实它还存在一个问题,就是j循环。当$rcount[$j]!=$pass_id[$i]时,j循环会把后边的用户全部禁用,当下一次i循环时,如果$rcount[$j]=$pass_id[$i],它会再次启用用户。看上去除了多循环几次好像问题不大。其实不然,导致$rcount[$j]!=$pass_id[$i]的原因可以是数组pass_id里边有空位的用户ID,也就是有一些用户是禁用的。而在数组rcount里边且是没有空位的,里边所有用户的ID座无虚席。也就是说,i循环里跳过了一些用户ID,而在j循环里没有跳过。由此引发这样一个问题,全面起用了后边的循环又可能把它禁用起来。我采用的简单而有效的处理方法是,i循环里跳过的,在j循环里也跳过。具体程序如下:

paper51.com

http://www.paper51.com

其中,关键是增加了一个变量$m,让j循环的起点从$m开始而不是前面的$i。这样,无论 $rcount[$j]与 $pass_id[$i]是否相等,$m都往前加,而最后的出口是$rcount[$j]=$pass_id[$i],用break跳出j循环回到i循环。这样在pass_id中跳过的用户ID在j循环中也跟着一起跳过也就是把它禁用。看上去好象已经完成,可以对用户进行审核了。其实这里边还存在一个问题,就是break,这个break可不能乱跳。如果pass_id中要通过的全通过了,break跳出去就不会回来,而这时rcount里面剩下的用户里可能还有一些现在还是处于启用状态。我们得把它禁用,这样才算完整。所谓不该跳的时候就不能跳,具体做法参看下边的程序: http://www.paper51.com

copyright paper51.com

新增加一个变量 $n用来记录通过了的用户个数,与pass_id中传过来的记录数做比较,如果完全通过了,就不用在跳出,接下来把剩下的用户全部禁用。现在可以算是完成了,完全实现了对多个用户的启用与禁用。 内容来自www.paper51.com

二、   适用于批量审核用户的算法 copyright paper51.com

功能实现了的程序并不一定是最佳的。比如,有10000个用户我禁用了其中一个,可程序还是要执行10000次,这太不合理了。当然,上面的程序不可能实现禁用一个用户就只去操作这一条记录。但是可以缩小执行的范围,参看下边的程序:

paper51.com

内容来自论文无忧网 www.paper51.com

让它分页执行,每次都只更新当前页所显示的用户,如果一页只显示十个用户那就只执行十次。这样就可以闭免过多的执行无用的操作。 paper51.com

------分隔线----------------------------
联系方式