基于Web的subversion用户管理系统.docx
基于Web的subversion用户管理系统摘要本系统主要是基于Web的subversion系统的用户管理系统。在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择,但是,和其它许多工具一样,Cvs开始显露出衰老的迹象,而SUbVerSion,正是以CVS继任者的面目出现的新型版本控制系统。但是,它的用户管理机制却是很差,本系统正是基于这个现实。实现友好的SUbVerSiOn用户界面,以提高工作效率。subversion用户管理系统分为两大基本部分,一个是普通用户的注册及自己资料的修改和管理。另外一个主要部分是超级用户对于普通用户的申请进行认证。以及对通过认证的用户分配相应的权限。本系统是基于apache和php平台的Web应用程序。采用php人作为前台开发语言。MySql作为后台数据库。apache作为服务器对SUbVerSiOn用户进行管理。系统具有良好的稳定性,并具有可移植性强等特点。关键词:Php;Subversion;Apache;用户管理UserManagementSystemBasedonWEBforSubversionAbstractThesystemisaWebbasedusermanagementsystemaboutsubversion.OntheOpenSourceWorld,concurrentversionsystem(cvs)haslongbeentheonlychoiceinversioncontrol.However,likemanyothertools,cvsbeginstoshowoutofdate.Andsubversion,asasuccessortocvswhichhasthefeaturesofthenewversioncontrolsystem.However,itsusermanagementmechanismispoor.Thesystemisbasedonthereality,achievesafriendlyuserinterface,inordertoenhanceefficiency.Theusermanagementsub-systemofsubversionisdividedintotwobasicparts.Onepartisordinaryusermanagement,includingregistrationandinformationediting.Anothermajorpartisthesuper-userauthenticatestothecommonuser,sapplicationsandthedistributionofthecorrespondingauthority.ThesystemisbasedonWebusingapache,phpandmysql.Phpasaactivepagerprocedure,mysqlasbackgroundinformationstorage.ApacheasHTTPservertoprovideawebinterfaceforthisusermanagementsystem.Thesystemhashighstabilityandportability.Keywords:Php;Subversion;Apache;UserManagemen论文总页数:24页1引言12系统需求分析22.1 系统功能模块需求22.1.1 用户注册模块的需求22.1.2 管理员功能处理模块的需求22.1.3 各个功能模块数据结构图32. 2用户环境需求32.1.1 用户使用环境需求32.1.2 其它需求33系统总体设计33.1 系统功能模块划分33.2 系统功能模块流程图33.3 数据库总体设计44环境选择、搭建和配置44.1 选择使用apache+php+mysql的可行性以及各自特点44.1.1 使用apache+php+mysql的可行性44.1.2 php技术的特点44.1.3 apache的技术特点54.1.4 mysql的技术特点54.2 系统环境的搭建64.2.1 安装配置PhP64.2.2 安装配置apache64.2.3 安装配置mysql74.2.4 安装SUbVerSiOn以及建立版本库84.2.5 subversion月艮务器酉已置95模块功能的详细实现过程105.1 本系统使用的subversion权限机制105.2数据流程图115.2.1 用户注册数据流程图115.2.2 管理员管理数据流程图115.3数据库结构设计125.4数据库操作131.4.1 数据库的连接、添加、删除和更新等135. 5生成subversion权限配置文件时对文件的操作175.1.1 数据文件的写入175.1.2 数据文件的读取186模块测试结果186.1用户注册模块测试结果186. 2管理员模块测试结果19结论22参考文献22致谢23声明241引言版本控制之于程序员,就好像还原系统对于计算机一样。使得即使计算机系统崩溃了,也能回复到正常的状态。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。在开源软件世界,并行版本系统(CVS)一直是版本控制长久以来的唯一选择。事实证明,这是个正确的选择。CVS本身是自由软件,不加限制的处事风格,对网络化操作的支持(众多身处不同地方的程序员可以共享他们的工作),都非常符合开源世界的协作精神。CVS和它半混乱状态的开发模型已成为开源文化的基石。但是,和其它许多工具一样,CVS开始显露出衰老的迹象。而subversion,正是以CVS继承者的面目出现的新型版本控制系统。SUbVerSion的设计者们力图通过两方面的努力赢得CVS用户的青睐:保持构建开源软件版本控制系统的方式(以及视觉和感觉上)与CVS尽可能类似,同时尽力弥补CVS许多显著的缺陷。这些努力的结果使得从CVS移到SUbVerSiOn不需要作出重大的变革,subversion确实是非常强大、非常有用和非常灵活的工具。版本控制是管理信息变化的艺术。对于经常对软件改来改去的程序员来说,它早就是重要的工具。但是版本控制软件的价值已远远超出软件开发的领域。总是可以看到人们使用计算机管理易变的信息,这正是版本控制的生存之道,也是subversion表演的舞台。SUbVerSion是一个自由/开源的版本控制系统。也就是说,在SUbVerSiOn管理下,文件和目录可以超越时空。SUbVerSion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。于是我们就可以籍此将数据回复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程序上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此旬,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量一如果出现不正确的更改,只要撤销那一次更改操作即可。某些版本控制系统本身也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门且来管理源代码树,并且具备许多与软件开发有关的特性一比如,对编程语言的支持,或者提供程序构建工具。不过SUbVerSion并不是这样的系统。它是非曲直一个通用系统,可以管理任何类型的文件集。对你来说,这些文件这可能是源程序一页对别人,则可能是一个货物清单或者是数字电影。但是SUbVerSion的用户管理机制却是很差的.从而需要一个关于SUbVerSion的用户管理系统.在本系统中,它可以使得正在使用subversion的某一项工程的人们,可以通过网络来管理自己的用户资料.而管理员也可以通过这个系统来管理用户.包括对用户最终基本的认证管理和权限管理.subversion用户管理系统有两大主要模块.一个用户认证注册模块.另一个主要的模块是管理员的管理模块.当某位用户需要加入到某一项工程当中的时候.就可以通过网络来注册自己的用户.而管理员模块则可以对注册的用户进行认证.通过认证后可以分配相当的权限.这样就是完成了一个简单的用户管理过程。而我所需要做的则是以下工作:首先实现subversion和Apache的整合配置,使用apache的WebDAV接口来访问subversion的版本库。然后使用Apache的数据库验证模块来对subversion库的访问权限进行限制。因为验证信息存放在数据库中,可以使用脚本编程实现界面对用户进行添加删除和修改操作。SUbVerSiOn对目录的权限保存在subversion的配置文件当中。可以使用脚本对配置文件进行修改,从而进一步完善subversion的权限管理。编写WEB界面对后台的脚本进行调用,使得可以通过WEB界面对subversion的配置文件进行一定的修改。2系统需求分析subversion是一个自由/开源的版本控制系统。现在subversion也得到了很广泛的使用。但是subversion的用户管理机制却是很差的。从而需要一个关于subversion的用户管理系统.在本系统中,它可以使得正在使用subversion的某一项工程的人们,可以通过网络来管理自己的用户资料。而管理员也可以通过这个系统来管理用户。包括对用户最终基本的认证管理和权限管理。以及最后生成subversion权限配置文件2.1 系统功能模块需求1.1 .1用户注册模块的需求用户注册模块能够满足用户的注册。包括用户的资料管理、修改等等。1.2 .2管理员功能处理模块的需求此模块能够满足管理员对注册的用户进行管理,包括对注册的用户进行审核通过。对审核通过的用户进行删除,分配权限。以及能够使数据库当中的数据能够生成subversion权限配置文件。2.L3各个功能模块数据结构图图1系统数据结构22用户环境需求2.2.1用户使用环境需求1、硬件需求:计算机一台2、操作系统:WindowsXP/20003、开发语言:php4、服务器工具:apache5、数据库:mysql6、其它工具:subversion2.2.2其它需求完成系统需求平台的搭建。即apache+php+mysql+subversion等工具的整合和配置。3系统总体设计3.1 系统功能模块划分SUbVerSion用户管理系统有两大主要模块:一个用户认证注册模块。另一个主要的模块是管理员的管理模块。当某位用户需要加入到某一项工程当中的时候,就可以通过网络来注册自己的用户。而管理员模块则可以对注册的用户进行认证。通过认证后可以分配相当的权限。其中的数据处理在mysql数据库当中完成。最后由数据库当中表的数据生成SUbVerSiOn权限配置文件。这样就是完成了一个简单的用户管理过程。3.2 系统功能模块流程图图2系统功能模块流程图3.3数据库总体设计在数据库svn_usr中包含了如下的一些表以及它们各自的作用。表1数据库中的表序号表参数名表名说明1user记录注册用户基本信息2users用来进行apache登录认证3Pre_reg_user记录未审核注册用户信息4Test2记录注册用户的组权限4环境选择、搭建和配置4.1选择使用apache+php+mysql的可行性以及各自特点4.1.1使用apache+php+mysql的可行性本系统是基于subversion的用户管理系统。它的要求是在Web页面下完成对用户注册模块的管理和管理员模块的管理。这使得我们生产首先必须建立一个Web平台。而subversion作为一个开源软件。那么我做的这个关于subversion的用户管理系统更要发扬这一种开源精神。并且从这个系统的实际用户出发,在从一系统中的开发语言、数据库和Web服务器中选择了apachephp和mysql这样的组合。最重要的是它们都开源软件,选择它们具有很强的经济优势,使得本系统具有开源的特性,可以免费的发布、修改、使用等等。4.1.2php技术的特点(1)开放源代码PHP在“ThePHPLicense,version2.02,协议下发行,实际上也是一种自由的软件。一方面,任何人都可以得到并修改源代码;另一方面,不必主拥有和使用PHP支付任何费用。(2)跨平台目前版本的PHP支持Windows95/98/meWindowsNT/WorkstationsWindows2000ProfeSSional/Server,以及各种版本的UNIX,如LinUx、SolarisUNIX、SCOUNIX等。用PHP开发网页代码可以很容易地移植到不同的系统平台上。(3)数据库库支持对数据库提供广泛的支持是PHP受到人们普遍欢迎的主要原因之一,世界上流行的数据库系统几乎都在它的支持之列,包括:AdabasD、DBA、dBase、dbm>fileProInformix、InterBase、mSQL>MicrosoftSQLServerMySQL>Solid>Sybase>ODBC>Oracle8>Oracle、POStgreSQL等。(4)网络支持PHP对网络的支持非常全面,包括与电子邮件相关的IMAP和PoP3、简单网管SNMP、网络新闻NMTP、账号共用NISHTTP及Apache服务器和目录协议LDAP等。(5)功能强大一般语言所具有的功能,数学运算、时间处理、文件系统、字符串处理、进程处理等,PHP都一应俱全。用户也可以按照PHP开发规范自行开发功能扩展模块。在添加其他模块之后,PHP提供更多的功能,如英文拼写检查、BC高精确度计算、公元历法、PDF文件格式、HyPerWaVe服务器、图形处理、加密、解密、哈系处理、WDDX功能、qmail与Vmailmgr系统、压缩文件处理、XML解析等。PHP的功能足以支持任何类型的Web站点。(6)易用性PHP语言的语法类似于C、Jave.pear.整个语言的核心非常短小、精练,主要通过函数扩展其功能,因此非常易于理解、掌握和使用。1.1. 3apache的技术特点Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。它源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“apatchySerVer”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Intemet网络,后来逐步扩充到各种UniX系统中,尤其对LinUX的支持相当完美。APaChe有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个APaCheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。1.2. 4mysql的技术特点mysql是一个快速、多线程、多用户的SQL数据库服务器,其出现虽然只有短短的数年时间,但凭借着“开放源代码''的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库。除了因为几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择mysql的主要原因。下面,就让我们来看看mysql数据库的主要特征。(DmySqI的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPUo(2)mysql可运行在不同的操作系统下。简单地说,mysql可以支持Windows9598NT2000以及UNIX、Linux和SUNOS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。(3)mysql有一个非常灵活而且安全的权限和口令系统。当客户与mysql服务器连接时,他们之间所有的口令传送被加密,而且mysql支持主机认证。(4)mysql支持ODBCforWindows。mysql支持所有的C)DBC2.5函数和其他许多函数,这样就可以用Access连接mysql服务器,从而使得mysql的应用被大大扩展。(5)mysql支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但mysql可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,mysql可以针对不同的应用进行相应的修改。(6)mysql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上,mysql的稳定性足以应付一个超大规模的数据库。强大的查询功能CJmySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。(8)PHP为mysql提供了强力支持,PHP中提供了-整套的mysql函数,对mysql进行了全方位的支持。1.3. 统环境的搭建4. 2.1安装配置php(I)解压缩PHP压缩包到D:PHP(这个路径可以随意,不过以下要是用到这个路径,请相应的修改)。(2)复制D:PHP目录下的php4ts.dll及D:PHPdlls目录下的所有文件到windows的系统文件夹里,文件夹视Windows版本的不同而不同我用的是WindowsXP则为cwindowssystem32其中C:为你现在所使用的操作系统的系统盘,如果你目前操作系统不是安装在C:windows下,请相应做出修改。复制php.ini-dist到CAwindowsVT,并将其改名为php.inio用记事本打开,修改一下信息:搜索extension_dir=./这行,并将其路径指到你的PHP目录下的extensions目录,比如:extension_dir=D:PHPextensions5. 2.2安装配置apache我们下载到的forWin32的是一个Msi安装文件,直接双击它后就会自动执行APaChe的安装了,按照提示安装即可,其中要书写的东西按照你的喜好填写,没甚么影响,当然,目录我还是建议你和PHP的目录以致,选择D:目录,这样安装后可以看到D:Apache了。装完后会在桌面右下角系统托盘里显示apache的图标,双击可以打开APaChe的控制面板,可以停止或者重起服务器。这里要做的是对D:Apacheconfhttpd.conf这个文件进行修改,用记事本打开:找到:AddTypeapplication/x-tar.tgz在下面添加以下两行:AddTypeapplication/x-httpd-php.phpAddTypeimage/x-icon.ico找到:#LoadModulessl_modulemodules/mod_ssl.so在下面添加二行:PHPIniDirROOTphpu1.oadModulephp5_moduleROOT/php/php5apache2_2.dll"增加默认文件:找到DireCtOryIndex*这行,可以这样修改,添加默认的文件名:DirectoryIndexindex.phpdefault.phpindex.htmindex.htmldefault.htmdefault.html保存文件,重起apache服务器。4.2.3安装配置mysqlMySqI相对来说是比较独立的,这个数据库很小,不能直接对它进行操作,不像access或者SQL2000那么直观,不过目前已经有很多软件可以很好的操作它的,比如PhPMyAdmin,SQLyogEnl。这些软件可以到上面下载获得。下载获得Mysql的forWin32安装包后,用winzip打开,直接运行setup.exe,需要注意的是选择一个安装路径,当然,安装路径可以任意,不过我建议将它和PHP安装在一起,选择D:MySQL目录。安装完成后MySQL也就完成了。至于设置用户和密码,可以使用上面提到的两个软件进行管理。这里不继续描述,默认的用户名是root,密码为空。一般装完MySQL后会自动启动服务,如果没有启动的话,请运行D:MySQLbinmysqld-nt.exe4.2.4安装subversion以及建立版本库0叵区安装subversion主要包括服务器端的安装和客户端的安装。源Setup-Subversion1.icenseAgreementPleasereadthefollowingimportantinformationbeforecontinuing.PleasereadthefollowingLicenseAgreementYoumustacceptthetermsofthisagreementbeforecontinuingwiththeinstallation.ThislicenseappliestoallportionsofSubversionwhicharenotexternally-maintainedlibraries(e.g.aprzaprulil/,andneon/).Suchlibrarieshavetheirownlicenses;werecommendyoureadthem,a$Iheirtermsmaydifferfromthetermsbelow.Thisisversion1ofthislicense.ItiSalsoavailableonlineathg仇UbVerSiOrktiqri$.orMiCenSe1.html.Ifnewerversionsofthislicensearepostedthere(thesameURL,butwiththeversionnumberincremented:./Iicense-ZhtmL./license-3.html,andsoon),youmayuseanewerversioninstead,atyouroption.IaccepttheagreementOdonotaccepttheagreement<EaCkNeXt>CanCel图3服务器安装图4客户端安装图5建立版本库的过程4.2.5subversion服务器配置由于本系统是采取的的基于Apache的认证方式,所以需要进行一些配置,如下:在http.CorIf文件中配置如下内容:<IfModulesslmodule>SSLRandomSeedstartupbuiItinSSLRandomSeedconnectbuiltin<IfModule>PHPIniDir”ROOTphp”1.oadModulephp5_modulez,R00Tphpphp5apache2-2.dllz,AddTypeapplication-httpd-php.php1.oadModule1.oadModuleHiysqlauthmodulemodules/modauthmysql.sodavmodulemodules/moddav.so1.oadModuledav_fs_modulemodu1esmod_dav_fs.so1.oaciModule1.oadModuledavsvnmodulemodules/moddavsvn.soauthz_svn_modulemodules/mod_authz_svn.so<Locationsvn>AuthMySQLEnableonAuthMySQLAuthoritativeonAuthName"MySQLauthzzAuthTypeBasicAuthMySQLHostlocalhostAuthMySQLDBsvn_usrAuthMySQLUsersvn_dbAuthMySQLPassword1234AuthMySQLUserTableusersAuthMySQLPwEncryptionnonerequirevalid-userrequirevalid-userDAVsvn#指向SVNRepository的ROOTSVNPathROOTsvnrepo<Location>以上就是本系统的环境建立及配置过程。5模块功能的详细实现过程5.1 本系统使用的subversion权限机制Apache的HTTP服务器是一个Subversion可以利用的“重型”网络服务器,通过一个自定义模块,htlpd可以让Subversion版本库通过WebDAVZDeltaV协议在客户端前可见,WebDAV/DeltaV协议是HTTPLl的扩展。这个协议利用了无处不在的HTTP协议是广域网的核心这一点,添加了写能力一更明确一点,版本化的写一能力。结果就是这样一个标准化的健壮的系统,作为APaChe软件的一部分打包,被许多操作系统和第三方产品支持,网络管理员也不需要打开另一个自定义端口。这样一个Apache-Subversion服务器具备了许多Svnserve没有的特性,但是也有一点难于配置,灵活通常会带来复杂性。为了让你的版本库使用HTTP网络,你基本上需要两个包里的四个部分。你需要Apachehttpd2.0和包括的mod_davDAV模块,Subversion和与之一同分发的mod_dav_svn文件系统提供者模块,如果你有了这些组件,网络化你的版本库将非常简单,如:配置好httpd2.0,并且使用mod_dav启动,为mod_dav安装mod_dav_svn插件,它会使用Subversion的库访问版本库,并且配置你的httpd.conf来输出(或者说暴露)版本库。你可以通过从源代码编译httpd和Subversion来完成前两个项目,也可以通过你的系统上的已经编译好的二进制包来安装。最新的使用ApacheHTTP的Subversion的编译方法和Apache的配置方式可以看Subversion源代码树根目录的INSTALL文件。在SUbVerSion的服务器端,它的最大的独特之处,在于它可以通过一个扩展模块与Apache的HTTP服务器相结合,实现很多高级的管理功能和安全特性。与CVS相比,Subversion实现了更加先进和安全的用户认证功能。在Apache的支持下,用户可以通过HTTP协议访问版本库,管理员可以对用户访问HTTP的权限做出具体的设置,同时Subversion还可以获得SSL传输加密,用户数据加密,以及目录级的访问控制等特性。而本系统正是基于此,使用mysql数据库的users表中内容作为用户登录的认证。使用authz文件作为权限控制文件。5.2 数据流程图5.2.1 用户注册数据流程图图6用户注册数据流程图5.2.2 管理员管理数据流程图图7管理员管理数据流程图5.3数据库结构设计数据库当中各个表的详细设计表2记录用户基幺工信息主键列(属性)名中文名称类型宽度是否允许为空username用户名varChar25NOTNULLpasswd用户密码varChar25NOTNUllgroups用户组varChar25NOTNULLrealname用户真实姓名varChar10NOTNULLdept所属部门varChar50NOTNULLtel联系电话varChar20NOTNULL表3记录未审核注册用户信息主键列(属性)名中文名称类型宽度是否允许为空username用户名varChar25NOTNULLpasswd用户密码varChar25NOTNULLgroups用户组varChar25NOTNULLrealname用户真实姓名varChar10NOTNULLdept所属部门varChar50NOTNULLtel联系电话varChar20NOTNULL表4用来进行apache登录认证主键列(属性)名中文名称类型宽度是否允许为空username用户名varChar25NOTNULLpasswd用户密码varChar25NOTNULLgroups用户组varChar25NOTNULL表5记录用户权限数据以及生成subversion权限配置文件主键列(属性)名中文名称类型宽度是否允许为空number列名int20NOTNULLgroup用户组名varChar50NOTNULLname用户名varChar50NOTNULL5.4数据库操作5.4.1数据库的连接、添加、删除和更新等classCSvnDb(/privateprivate$mink=NULL;function_construct()/数据库连接($host='localhost'$user=,svn-db,;Spasswd=,1234,;$db=,svn-usr,;$m_link=mysql_connect($host,$user,$passwd);if(!$m_link)(die(,Couldnotconnect:'.mysql_error();$db_selected=mysql_select_db($db,$m_link);if(!$db_selected)(mysql_close($link);die(,Couldnotusedb:'.mysql_error();)/public检查值是否存在publicfunctioncheck_field_value_exist($table,$field,$value)($sql="SELECT$fieldFROMStableWHERE$field='$valueH,;Squery=mySqLquery($sql);if(!Squery)(die(Invalidquery:'.mysql_error();)if(mysql_num_rows($query)=O)(returnfalse;else(returntrue;)publicfunctionadd_user_array($table,Suserinfo)增加用户($sql="INSERTINTO'Stables('username',spasswdx,'groups','realnamev,xdepfte)VALUES(,".Suserinfo,username'.',u.Suserinfo'passwd,.",",.Suserinfo'groups'.SerinfoTealname'.SerinfO'dep门Serinfotel'.".')"Squery=mysql_query($sql);if(!$query)(die(Invalidquery:'.mysql_error();returntrue;)publicfunctionadd_user_array1(Stable,Suserinfo)($sql=uINSERTINTOsStable'(vuser-namev,xuser-password','user-group')VALUES(",.Suserinfo'username'.',',"".Suserinfo'passwd'.",".Suserinfo'groups'.'?)'Squery=mysql_query($sql);if(!$query)die(Invalidquery:,.mysql_error();returntrue;1Publicfunctionadd_user($table,$u_name,$u_pwd,$u_rname,$u_dept,$u_tel)($sql="INSERTINTO'Stable'('username','passwdx,'groups、,'realname','depf,xte)VALUES('$u_name'$u_pwd'user',Su-rname,Su-dept',Su-te);$query=mysql_query($sql);if(!$query)(die(Invalidquery:,.mysql_error();returntrue;1functionget_user_info($table,$user)取得用户信息($sql="SELECT*FROMStableWHEREusername=,Suser,"Squery=mysql_query($sql);if(!$query)(die(Invalidquery:'.mysql_error();returnmysql_fetch_assoc($query);)functionupdate_user_info_array($table,$userinfo)更新用户信息($sql=nUPDATEStableSETpasswd=,.$userinfo'passwd'."',realname="'.$USerinfOTealname'."',dept-,.Suserinfdfdepf.,