• 【毕业设计】基于php+mysql+apache的subversion用户管理系统设计与实现(毕业论文+程序源码)——用户管理系统


    基于php+mysql+apache的subversion用户管理系统设计与实现(毕业论文+程序源码)

    大家好,今天给大家介绍基于php+mysql+apache的subversion用户管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。

    文章目录:

    1、项目简介

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

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

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


    2、资源详情

    项目难度:中等难度
    适用场景:相关题目的毕业设计
    配套论文字数:8443个字28页
    包含内容:整套源码+完整毕业论文


    3、关键词:

    Php;Subversion;Apache;用户管理

    4、毕设简介

    提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

    引 言

    省略

    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用户使用环境需求
    1、硬件需求:计算机一台
    2、操作系统:Windows XP/2000
    3、开发语言:php
    4、服务器工具:apache
    5、数据库:mysql
    6、其它工具:subversion

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

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

    3.2系统功能模块流程图

    在这里插入图片描述

    图2 系统功能模块流程图

    3.3数据库总体设计
    在数据库svn_usr中包含了如下的一些表以及它们各自的作用。
    表1 数据库中的表
    在这里插入图片描述

    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技术的特点
    (1)开放源代码
    PHP在“The PHP License,version 2.02”协议下发行,实际上也是一种自由的软件。一方面,任何人都可以得到并修改源代码;另一方面,不必主拥有和使用PHP支付任何费用。

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

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

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

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

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

    4.1.3 apache的技术特点
    Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。它源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。

    Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。

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

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

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

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

    (4)mysql支持ODBC for Windows。mysql支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接mysql服务器,从而使得mysql的应用被大大扩展。

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

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

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

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

    4.2系统环境的搭建
    4.2.1 安装配置php
    (1)解压缩PHP压缩包到D:\PHP(这个路径可以随意,不过以下要是用到这个路径,请相应的修改)。

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

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

    这里要做的是对D:\Apache\conf\httpd.conf这个文件进行修改,用记事本打开:
    找到:
    AddType application/x-tar .tgz
    在下面添加以下两行:
    AddType application/x-httpd-php .php
    AddType image/x-icon .ico
    找到:
    #LoadModule ssl_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主要包括服务器端的安装和客户端的安装。

    在这里插入图片描述

    图3 服务器安装
    在这里插入图片描述

    图4 客户端安装
    在这里插入图片描述

    在这里插入图片描述

    图5 建立版本库的过程

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

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

    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用户注册数据流程图
    在这里插入图片描述

    图6 用户注册数据流程图

    5.2.2管理员管理数据流程图

    在这里插入图片描述

    图7 管理员管理数据流程图

    5.3数据库结构设计
    数据库当中各个表的详细设计
    表2 记录用户基本信息
    在这里插入图片描述

    表3 记录未审核注册用户信息
    在这里插入图片描述

    表4 用来进行apache登录认证
    在这里插入图片描述

    表5 记录用户权限数据以及生成subversion权限配置文件
    在这里插入图片描述

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

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

    5.5生成subversion权限配置文件时对文件的操作
    5.5.1数据文件的写入

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

    5.5.2数据文件的读取

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

    6模块测试结果
    6.1用户注册模块测试结果
    用户注册模块分为两大部分:包括用户注册和用户信息修改。
    在这里插入图片描述

    图8 本系统的用户注册页面
    在这里插入图片描述

    图9 此页面是用户进行注册信息的修改页面
    6.2管理员模块测试结果
    在这里插入图片描述

    图10 管理员查看待审核用户页面
    在这里插入图片描述

    图11 管理员审核用户成功页面
    在这里插入图片描述

    图12 管理员对用户分配权限的页面
    (其中s,a,b是用户组:它是用来指向目录权限的。等号后面是组里面的用户)
    在这里插入图片描述

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

    结 论
    经过大约两个月的工作,已经完成了基于subversion用户管理系统的设计和实现。如:
    1、首先实现Subversion和Apache的整合配置,使用Apache的WebDAV接口来访问Subversion的版本库。

    2、然后使用Apache的数据库验证模块来对Subversion库的访问权限进行限制。因为验证信息存放在数据库中,可以使用脚本编程实现界面对用户进行添加删除和修改操作。

    3、Subversion对目录的权限保存在Subversion的配置文件当中。可以使用脚本对配置文件进行修改,从而进一步完善Subversion的权限管理。

    4、编写WEB界面对后台的脚本进行调用,使得可以通过WEB界面对Subversion的配置文件进行修改。
    但是由于时间和能力以及其它的一些原因,功能上还有很多的不足之处。

    如:
    现在系统能够完成一些定义好的组的操作。如对组中的用户进行添加、删除等操作。但是,还不能实现对组本身的一些操作。并且对于目录的管理还需要在已定义好的文件中操作,而不能通过Web界面进行操作。

    参考文献
    [1] 彭晓明,熊济宁.PHP高级开发技巧与范例[M].北京:电子工业出版社,2001。
    [2] 仲进平,寿加炎.PHP+MySQL网络开发技术[M].北京:人民邮电出版社,2000。
    [3] Rasmus Lerdorf ,Kevin Tatroe .PHP 程序设计[M].北京:中国电力出版社,2005。
    [4] STERLING HUGHES .PHP 经典实例[M].北京:中国电力出版社,2002。
    [5] 龙浩.PHP 语言进阶和高级应用[M].北京:清华大学出版社,2000。
    [6] 陈湘杨,陈国益.PHP5+MySQL网页系统开发设计[M].北京:电子工业出版社,2007。
    [7] Hugh E.Williams .PHP & MYSQL Web数据库应用开发指南[M].北京:中国电力出版社2003。


    5、资源下载

    本项目源码及完整论文如下,有需要的朋友可以点击进行下载

  • 相关阅读:
    如何使用决策树判断要不要去相亲?
    人先自辱,而后人辱之
    六、Python类的高级知识
    Openssl数据安全传输平台011:秘钥协商客户端
    useEffect
    vue - vue项目中配置不同的环境是否显示vConsole
    Ubuntu20.04 Server 安装NS3 速通版
    《Java 编写基于 Netty 的 RPC 框架》
    ELK日志平台搭建
    【信号处理】Matlab实现CDR-based噪声和混响抑制
  • 原文地址:https://blog.csdn.net/m0_66238867/article/details/125509208