基于apache和php平台的subversion用户管理系统
5模块功能的详细实现过程
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.3数据库结构设计
数据库当中各个表的详细设计
表2 记录用户基本信息
主键
|
列(属性)名
|
中文名称
|
类型
|
宽度
|
是否允许为空
|
◎
|
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
|
表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
|
表4 用来进行apache登录认证
主键
|
列(属性)名
|
中文名称
|
类型
|
宽度
|
是否允许为空
|
◎
|
username
|
用户名
|
varChar
|
25
|
NOT NULL
|
|
passwd
|
用户密码
|
varChar
|
25
|
NOT NULL
|
|
groups
|
用户组
|
varChar
|
25
|
NOT NULL
|
表5 记录用户权限数据以及生成subversion权限配置文件
主键
|
列(属性)名
|
中文名称
|
类型
|
宽度
|
是否允许为空
|
|
number
|
列名
|
int
|
20
|
NOT NULL
|
|
group
|
用户组名
|
varChar
|
50
|
NOT NULL
|
|
name
|
用户名
|
varChar
|
50
|
NOT NULL
|
5.4数据库操作
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);
以上内容只是毕业设计作品的部分资料介绍,如果了解更多详情请联系客服QQ:57510459
购买帮助>>
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论