基于PHP和Web的subversion用户管理系统

Change

发布日期: 2018-12-23 21:11:34 浏览量: 1477
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

摘 要

本系统主要是基于Web的subversion系统的用户管理系统。在开源软件世界,并行版本系统(cvs)一直是版本控制长久以来的唯一选择,但是,和其它许多工具一样,cvs开始显露出衰老的迹象,而subversion,正是以cvs继任者的面目出现的新型版本控制系统。但是,它的用户管理机制却是很差,本系统正是基于这个现实。实现友好的subversion用户界面,以提高工作效率。

subversion用户管理系统分为两大基本部分,一个是普通用户的注册及自己资料的修改和管理。另外一个主要部分是超级用户对于普通用户的申请进行认证。以及对通过认证的用户分配相应的权限。

本系统是基于apache和php平台的Web应用程序。采用php人作为前台开发语言。Mysql作为后台数据库。apache作为服务器对subversion用户进行管理。系统具有良好的稳定性,并具有可移植性强等特点。

关键词:Php;Subversion;Apache;用户管理

Abstract

The system is a Webbased user management system about subversion. On the Open Source World,concurrent version system (cvs) has long been the only choice in versioncontrol. However, like many other tools, cvs begins to show out of date. Andsubversion, as a successor to cvs which has the features of the new versioncontrol system. However, its user management mechanism is poor. The system isbased on the reality, achieves a friendly user interface, in order to enhance efficiency.

The user managementsub-system of subversion is divided into two basic parts. One part is ordinaryuser management, including registration and information editing. Another majorpart is the super-user authenticates to the common user’s applications and thedistribution of the corresponding authority.

The system is based on Web using apache, phpand mysql. Php as a active pager procedure, mysql as background informationstorage. Apache as HTTP server to provide a web interface for this usermanagement system. The system has high stability and portability .

Keywords: Php;Subversion;Apache;User Managemen

1 引 言

版本控制之于程序员,就好像还原系统对于计算机一样。使得即使计算机系统崩溃了,也能回复到正常的状态。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。

在开源软件世界,并行版本系统(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 系统功能模块需求

2.1.1 用户注册模块的需求

用户注册模块能够满足用户的注册。包括用户的资料管理、修改等等。

2.1.2 管理员功能处理模块的需求

此模块能够满足管理员对注册的用户进行管理,包括对注册的用户进行审核通过。对审核通过的用户进行删除,分配权限。以及能够使数据库当中的数据能够生成subversion权限配置文件。

2.1.3 各个功能模块数据结构图

2.2 用户环境需求

2.2.1 用户使用环境需求

  • 硬件需求:计算机一台

  • 操作系统:Windows XP/2000

  • 开发语言:php

  • 服务器工具:apache

  • 数据库:mysql

  • 其它工具:subversion

2.2.2 其它需求

完成系统需求平台的搭建。即apache+php+mysql+subversion等工具的整合和配置。

3 系统总体设计

3.1 系统功能模块划分

subversion用户管理系统有两大主要模块:一个用户认证注册模块。另一个主要的模块是管理员的管理模块。当某位用户需要加入到某一项工程当中的时候,就可以通过网络来注册自己的用户。而管理员模块则可以对注册的用户进行认证。通过认证后可以分配相当的权限。其中的数据处理在mysql数据库当中完成。最后由数据库当中表的数据生成subversion权限配置文件。这样就是完成了一个简单的用户管理过程。

3.2 系统功能模块流程图

3.3 数据库总体设计

在数据库svn_usr中包含了如下的一些表以及它们各自的作用。

序号 表参数名 表名说明
1 user 记录注册用户基本信息
2 users 用来进行apache登录认证
3 Pre_reg_user 记录未审核注册用户信息
4 Test2 记录注册用户的组权限

4 环境选择、搭建和配置

4.1 选择使用apache+php+mysql的可行性以及各自特点

4.1.1 使用apache+php+mysql的可行性

本系统是基于subversion的用户管理系统。它的要求是在Web页面下完成对用户注册模块的管理和管理员模块的管理。这使得我们生产首先必须建立一个Web平台。而subversion作为一个开源软件。那么我做的这个关于subversion的用户管理系统更要发扬这一种开源精神。并且从这个系统的实际用户出发,在从一系统中的开发语言、数据库和Web服务器中选择了apache、php和mysql这样的组合。最重要的是它们都开源软件,选择它们具有很强的经济优势,使得本系统具有开源的特性,可以免费的发布、修改、使用等等。

4.1.2 php技术的特点

开放源代码

PHP在“The PHP License,version 2.02”协议下发行,实际上也是一种自由的软件。一方面,任何人都可以得到并修改源代码;另一方面,不必主拥有和使用PHP支付任何费用。

跨平台

目前版本的PHP支持Windows 95/98/me、WindowsNT/Workstation、Windows 2000 Professional/Server,以及各种版本的UNIX,如Linux、SolarisUNIX、SCO UNIX等。用PHP开发网页代码可以很容易地移植到不同的系统平台上。

数据库库支持

对数据库提供广泛的支持是PHP受到人们普遍欢迎的主要原因之一,世界上流行的数据库系统几乎都在它的支持之列,包括:Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、Microsoft SQL Server、MySQL、Solid、Sybase、ODBC、Oracle8、Oracle、PostgreSQL等。

网络支持

PHP对网络的支持非常全面,包括与电子邮件相关的IMAP和POP3、简单网管SNMP、网络新闻NMTP、账号共用NIS、HTTP及Apache服务器和目录协议LDAP等。

功能强大

一般语言所具有的功能,数学运算、时间处理、文件系统、字符串处理、进程处理等,PHP都一应俱全。用户也可以按照PHP开发规范自行开发功能扩展模块。在添加其他模块之后,PHP提供更多的功能,如英文拼写检查、BC高精确度计算、公元历法、PDF文件格式、Hyperwave服务器、图形处理、加密、解密、哈系处理、WDDX功能、qmail与vmailmgr系统、压缩文件处理、XML解析等。PHP的功能足以支持任何类型的Web站点。

易用性

PHP语言的语法类似于C、Jave、pear、整个语言的核心非常短小、精练,主要通过函数扩展其功能,因此非常易于理解、掌握和使用。

4.1.3 apache的技术特点

Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。它源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。

4.1.4 mysql的技术特点

mysql是一个快速、多线程、多用户的SQL数据库服务器,其出现虽然只有短短的数年时间,但凭借着“开放源代码”的东风,它从众多的数据库中脱颖而出,成为PHP的首选数据库。除了因为几乎是免费的这点之外,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等都是PHP选择mysql的主要原因。下面,就让我们来看看mysql数据库的主要特征。

  • mysql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPU

  • mysql可运行在不同的操作系统下。简单地说,mysql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下

  • mysql有一个非常灵活而且安全的权限和口令系统。当客户与mysql服务器连接时,他们之间所有的口令传送被加密,而且mysql支持主机认证

  • mysql支持ODBC forWindows。mysql支持所有的ODBC2.5函数和其他许多函数,这样就可以用Access连接mysql服务器,从而使得mysql的应用被大大扩展

  • mysql支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但mysql可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,mysql可以针对不同的应用进行相应的修改

  • mysql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上,mysql的稳定性足以应付一个超大规模的数据库

  • 强大的查询功能。mysql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便

  • PHP为mysql提供了强力支持,PHP中提供了一整套的mysql函数,对mysql进行了全方位的支持

4.2 系统环境的搭建

4.2.1 安装配置php

  • 解压缩PHP压缩包到D:\PHP(这个路径可以随意,不过以下要是用到这个路径,请相应的修改)

  • 复制D:\PHP目录下的php4ts.dll及D:\PHP\dlls目录下的所有文件到windows的系统文件夹里,文件夹视Windows版本的不同而不同

我用的是WindowsXP则为c:\windows\system32

其中C:\为你现在所使用的操作系统的系统盘,如果你目前操作系统不是安装在C:\windows下,请相应做出修改。

复制php.ini-dist到C:\windows\下,并将其改名为php.ini。用记事本打开,修改一下信息:

搜索extension_dir= ./ 这行,并将其路径指到你的PHP目录下的extensions目录,比如:

extension_dir = D:\PHP\extensions

4.2.2 安装配置apache

我们下载到的forwin32的是一个Msi安装文件,直接双击它后就会自动执行Apache的安装了,按照提示安装即可,其中要书写的东西按照你的喜好填写,没甚么影响,当然,目录我还是建议你和PHP的目录以致,选择D:\目录,这样安装后可以看到D:\Apache了。装完后会在桌面右下角系统托盘里显示apache的图标,双击可以打开Apache的控制面板,可以停止或者重起服务器。

这里要做的是对D:\Apache\conf\httpd.conf这个文件进行修改,用记事本打开:

找到:

AddTypeapplication/x-tar .tgz

在下面添加以下两行:

AddTypeapplication/x-httpd-php .php

AddType image/x-icon .ico

找到:

LoadModulessl_module modules/mod_ssl.so

在下面添加二行:

PHPIniDir “{ROOT}/php”
LoadModule php5_module”{ROOT}/php/php5apache2_2.dll”

增加默认文件:

找到DirectoryIndex* 这行,可以这样修改,添加默认的文件名:

DirectoryIndex index.php default.php index.htm index.html default.htm default.html

保存文件,重起apache服务器。

4.2.3 安装配置mysql

Mysql相对来说是比较独立的,这个数据库很小,不能直接对它进行操作,不像access或者SQL2000那么直观,不过目前已经有很多软件可以很好的操作它的,比如phpMyAdmin,SQLyogEnt。这些软件可以到 http://www.mysql.com上面下载获得。

下载获得Mysql的for win32安装包后,用winzip打开,直接运行setup.exe,需要注意的是选择一个安装路径,当然,安装路径可以任意,不过我建议将它和PHP安装在一起,选择D:\MySQL目录。安装完成后MySQL也就完成了。至于设置用户和密码,可以使用上面提到的两个软件进行管理。这里不继续描述,默认的用户名是root,密码为空。

一般装完MySQL后会自动启动服务,如果没有启动的话,请运行D:\MySQL\bin\mysqld-nt.exe

4.2.4 安装subversion以及建立版本库

安装subversion主要包括服务器端的安装和客户端的安装。

服务器安装

客户端安装

建立版本库的过程

4.2.5 subversion服务器配置

由于本系统是采取的的基于Apache的认证方式,所以需要进行一些配置,如下:

在http.conf文件中配置如下内容:

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
PHPIniDir “{ROOT}/php”
LoadModule php5_module “{ROOT}/php/php5apache2_2.dll”
AddType application/x-httpd-php .php
LoadModule mysql_auth_module modules/mod_auth_mysql.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>
AuthMySQLEnable on
AuthMySQLAuthoritative on
AuthName “MySQL auth”
AuthType Basic
AuthMySQLHost localhost
AuthMySQLDB svn_usr
AuthMySQLUser svn_db
AuthMySQLPassword 1234
AuthMySQLUserTable users
AuthMySQLPwEncryption none
require valid-user
require valid-user
DAV svn
#指向SVN Repository的ROOT
SVNPath {ROOT}/svnrepo
</Location>

以上就是本系统的环境建立及配置过程。

5 模块功能的详细实现过程

5.1 本系统使用的subversion权限机制

Apache的HTTP服务器是一个Subversion可以利用的“重型”网络服务器,通过一个自定义模块,httpd可以让Subversion版本库通过WebDAV/DeltaV协议在客户端前可见,WebDAV/DeltaV协议是HTTP 1.1的扩展。这个协议利用了无处不在的HTTP协议是广域网的核心这一点,添加了写能力—更明确一点,版本化的写—能力。结果就是这样一个标准化的健壮的系统,作为Apache软件的一部分打包,被许多操作系统和第三方产品支持,网络管理员也不需要打开另一个自定义端口。这样一个Apache-Subversion服务器具备了许多svnserve没有的特性,但是也有一点难于配置,灵活通常会带来复杂性。

为了让你的版本库使用HTTP网络,你基本上需要两个包里的四个部分。你需要Apache httpd 2.0和包括的mod_dav DAV模块,Subversion和与之一同分发的mod_dav_svn文件系统提供者模块,如果你有了这些组件,网络化你的版本库将非常简单,如:

配置好httpd 2.0,并且使用mod_dav启动,为mod_dav安装mod_dav_svn插件,它会使用Subversion的库访问版本库,并且配置你的httpd.conf来输出(或者说暴露)版本库。

你可以通过从源代码编译httpd和Subversion来完成前两个项目,也可以通过你的系统上的已经编译好的二进制包来安装。最新的使用Apache HTTP的Subversion的编译方法和Apache的配置方式可以看Subversion源代码树根目录的INSTALL文件.

在Subversion的服务器端,它的最大的独特之处,在于它可以通过一个扩展模块与 Apache 的 HTTP 服务器相结合,实现很多高级的管理功能和安全特性。与 CVS 相比,Subversion 实现了更加先进和安全的用户认证功能。在 Apache 的支持下,用户可以通过 HTTP 协议访问版本库,管理员可以对用户访问 HTTP 的权限做出具体的设置,同时 Subversion 还可以获得 SSL 传输加密,用户数据加密,以及目录级的访问控制等特性。而本系统正是基于此,使用mysql数据库的users表中内容作为用户登录的认证。使用authz文件作为权限控制文件。

5.2 数据流程图

5.2.1 用户注册数据流程图

5.2.2 管理员管理数据流程图

5.3 数据库结构设计

数据库当中各个表的详细设计

记录用户基本信息

主键 列(属性)名 中文名称 类型 宽度 是否允许为空
username 用户名 varChar 25 NOT NULL
passwd 用户密码 varChar 25 NOT NULL
groups 用户组 varChar 25 NOT NULL
realname 用户真实姓名 varChar 10 NOT NULL
dept 所属部门 varChar 50 NOT NULL
tel 联系电话 varChar 20 NOT NULL

记录未审核注册用户信息

主键 列(属性)名 中文名称 类型 宽度 是否允许为空
username 用户名 varChar 25 NOT NULL
passwd 用户密码 varChar 25 NOT NULL
groups 用户组 varChar 25 NOT NULL
realname 用户真实姓名 varChar 10 NOT NULL
dept 所属部门 varChar 50 NOT NULL
tel 联系电话 varChar 20 NOT NULL

用来进行apache登录认证

主键 列(属性)名 中文名称 类型 宽度 是否允许为空
username 用户名 varChar 25 NOT NULL
passwd 用户密码 varChar 25 NOT NULL
groups 用户组 varChar 25 NOT NULL

记录用户权限数据以及生成subversion权限配置文件

主键 列(属性)名 中文名称 类型 宽度 是否允许为空
number 列名 int 20 NOT NULL
group 用户组名 varChar 50 NOT NULL
name 用户名 varChar 50 NOT NULL

5.4 数据库操作

5.4.1 数据库的连接、添加、删除和更新等

  1. class CSvnDb
  2. {
  3. //private
  4. private $m_link = NULL;
  5. function __construct() //数据库连接
  6. {
  7. $host = 'localhost';
  8. $user = 'svn_db';
  9. $passwd = '1234';
  10. $db = 'svn_usr';
  11. $m_link = mysql_connect($host, $user, $passwd);
  12. if (!$m_link)
  13. {
  14. die('Could not connect: ' . mysql_error());
  15. }
  16. $db_selected = mysql_select_db($db, $m_link);
  17. if (!$db_selected)
  18. {
  19. mysql_close($link);
  20. die ('Could not use db : ' . mysql_error());
  21. }
  22. }
  23. //public //检查值是否存在
  24. public function check_field_value_exist($table,$field,$value)
  25. {
  26. $sql = "SELECT $field FROM $table WHERE $field='$value'";
  27. $query = mysql_query ($sql);
  28. if(!$query)
  29. {
  30. die ('Invalid query: ' . mysql_error());
  31. }
  32. if(mysql_num_rows($query) == 0)
  33. {
  34. return false;
  35. }
  36. else
  37. {
  38. return true;
  39. }
  40. }
  41. public function add_user_array($table,$userinfo) //增加用户
  42. {
  43. $sql = "INSERT INTO `$table` ( `username` , `passwd` , `groups` , `realname` , `dept` ,`tel`)VALUES('".$userinfo['username']."','".$userinfo['passwd']."','".$userinfo['groups']."','".$userinfo['realname']."','".$userinfo['dept']."','".$userinfo['tel'].".' )";
  44. $query = mysql_query ($sql);
  45. if(!$query)
  46. {
  47. die ('Invalid query: ' . mysql_error());
  48. }
  49. return true;
  50. }
  51. public function add_user_array1($table,$userinfo)
  52. {
  53. $sql = "INSERT INTO `$table` ( `user_name` , `user_password` , `user_group`)VALUES('".$userinfo['username']."','".$userinfo['passwd']."','".$userinfo['groups'].".' )";
  54. $query = mysql_query ($sql);
  55. if(!$query)
  56. {
  57. die ('Invalid query: ' . mysql_error());
  58. }
  59. return true;
  60. }
  61. Public function add_user($table,$u_name,$u_pwd,$u_rname,$u_dept,$u_tel)
  62. {
  63. $sql = "INSERT INTO `$table` ( `username` , `passwd` , `groups` , `realname` , `dept` , `tel` )VALUES ('$u_name', '$u_pwd', 'user', '$u_rname', '$u_dept', '$u_tel')";
  64. $query = mysql_query ($sql);
  65. if(!$query)
  66. {
  67. die ('Invalid query: ' . mysql_error());
  68. }
  69. return true;
  70. }
  71. function get_user_info($table,$user) //取得用户信息
  72. {
  73. $sql = "SELECT * FROM $table WHERE username='$user'";
  74. $query = mysql_query ($sql);
  75. if(!$query)
  76. {
  77. die ('Invalid query: ' . mysql_error());
  78. }
  79. return mysql_fetch_assoc($query) ;
  80. }
  81. function update_user_info_array($table,$userinfo) //更新用户信息
  82. {
  83. $sql = "UPDATE $table SET
  84. passwd='".$userinfo['passwd']."',
  85. realname='".$userinfo['realname']."',
  86. dept='".$userinfo['dept']."',
  87. tel='".$userinfo['tel']."'
  88. WHERE username= '".$userinfo['username']."' ";
  89. $query = mysql_query ($sql);
  90. if(!$query)
  91. {
  92. die ('Invalid query: ' . mysql_error());
  93. }
  94. return true ;
  95. }
  96. Function update_user_info($table,$u_name,$u_pwd,$u_rname,$u_dept,$u_tel)
  97. {
  98. $sql = "UPDATE $table SET
  99. passwd='$u_pwd',
  100. realname='$u_rname',
  101. dept='$u_dept',
  102. tel='$u_tel'
  103. WHERE username= '$u_name' ";
  104. $query = mysql_query ($sql);
  105. if(!$query)
  106. {
  107. die ('Invalid query: ' . mysql_error());
  108. }
  109. return true ;
  110. }
  111. function get_all_user_info($table) //得到所有用户信息
  112. {
  113. $sql = "SELECT *
  114. FROM $table ORDER BY DEPT";
  115. $query = mysql_query ($sql);
  116. $result = array();
  117. if(!$query)
  118. {
  119. die ('Invalid query: ' . mysql_error());
  120. }
  121. $i=0;
  122. while($row = mysql_fetch_assoc($query))
  123. {
  124. $result[$i] = $row;
  125. $i++;
  126. }
  127. return $result;
  128. }
  129. function delete_user($table,$username) //删除用户
  130. {
  131. $sql = "DELETE FROM $table WHERE username = '$username' ";
  132. mysql_query ($sql);
  133. }
  134. }

5.5 生成subversion权限配置文件时对文件的操作

5.5.1 数据文件的写入

  1. $filename = '\config\authz';
  2. $somecontent = $test;
  3. // 首先我们要确定文件存在并且可写。
  4. if (is_writable($filename)) {
  5. // 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。
  6. if (!$handle = fopen($filename, 'a')) {
  7. echo "不能打开文件 $filename";
  8. exit;
  9. }
  10. // 将$somecontent写入到我们打开的文件中。
  11. if (fwrite($handle, $somecontent) === FALSE) {
  12. echo "不能写入到文件 $filename";
  13. exit;
  14. }
  15. echo "成功地将数据写入到文件";
  16. fclose($handle);
  17. } else {
  18. echo "文件 $filename 不可写";
  19. }

5.5.2 数据文件的读取

  1. $handle = @fopen("test3.txt", "r");
  2. if ($handle) {
  3. while (!feof($handle)) {
  4. $buffer = fgets($handle, 4096);
  5. echo $buffer;
  6. }
  7. fclose($handle);
  8. }

6 模块测试结果

6.1 用户注册模块测试结果

用户注册模块分为两大部分:包括用户注册和用户信息修改。

本系统的用户注册页面

此页面是用户进行注册信息的修改页面

6.2 管理员模块测试结果

管理员查看待审核用户页面

管理员审核用户成功页面

管理员对用户分配权限的页面

(其中s,a,b是用户组:它是用来指向目录权限的。等号后面是组里面的用户)

由数据库生成的权限配置文件

上传的附件 cloud_download 基于PHP和Web的subversion用户管理系统.zip ( 908.07kb, 8次下载 )
error_outline 下载需要12点积分

发送私信

如果哪天我们真的久别重逢,我希望你别来无恙

13
文章数
14
评论数
最近文章
eject