admin 管理员组

文章数量: 1184232


2024年4月23日发(作者:java核心编程pdf)

维普资讯

本栏目贲任编辑:闻翔军 ・・・・・・数据库与信息管理. 

Web下Serv-u用户远程管理的PHP+MySql实现 

袁承芬 ,刘耀钦 

(1.郧阳师范高等专科学校图书馆,湖北丹江El 442700;2.郧阳师范高等专科学校计算机科学系,湖北丹江El 442700) 

摘要:将完整的Serv—U数据表存储于MySql数据库,建立MySql ODBC与Serv-U的连接,对Serv—U加密原理、ODBC的设置、 

Web下SeⅣ一U用户的管理及用户主目录的创建、删除等做了深入分析.方便了Serv—U用户的远程管理。 

关键词:Serv—U;数据库;ODBC;MySql;PHP 

中图分类号:TP3ll 文献标识码:A 文章编号:1009—3044(2008)10—20019—03 

User"¥Remote Management of Serv—U Is Implemented by PHP and MySqi under the Environment of Web 

YUAN Cheng—fen’,LIU Yao—qin。 

(1.Library of Yunyang Teacher S College,DanJiangKou Hubei 442700,China;2.Department of Computer Science of Yunyang Teacher S 

College,DanjiangkOU 442700,China) 

Abstract:The entire Serv—U data saved by MySql,the link built upon MySq ODBC,Serv—U,the encryption principium of Serv—U,the 

settings of ODBC,the user S management of Serv—U along with the creation,the deletion and the modiifcation to the user S main directory 

are all analied in deep,it provides convenience for the remote management. 

Key words:Serv —U;Date Base;ODBC;MySql;PHP 

l引言 

Serv—U是一款grP服务器工具,它功能强大、性能稳定且 

表1 Serv-U完整数据库表结构 

裘名 

主要字鼹及类型 

宇段 j鲤 

易于使用。它为用户的系统安全提供了相当全面的保护,如设 

置密码、用户的访问权限等。为此.要实现远程客户端与FTP服 

{魏日 

Nan1 

USeraCCOU 

nts 

Ⅵ ℃}lar 

(50) 

Ⅵ ℃}lar 

(50) 

mrchar 

(200) 

 ̄:clm 

用户帐户表. №

H 

 牙诵户名(主 

务器之间文件的传输操作,就要正确、合理的设置Serv—U用户。 

Serv—U用户信息存储方式有多种.比较方便远程管理的方式是 

存储用户信息于数据库中。 

索引)、 Pass ̄rd”表示密码、 

H 表示映射主目录.类型 

列中的数字表示当前字段的长度 

(下同). 

Pass 

V*'Ofd 

HOm 

eDir 

Nam 

2配置Serv—U用户数据库 

2.1 Serv—U用户数据库表结构 

uscfdiI宕cc 

用户映射目录权限表箕中“ l曲 

与“LlSeraCCOLllt,S”表中 Name 对 

应. Access”表示对目录的存取权 

隈(只读、可写、追加、创建、删 

除等). 

用户 谰1日]权限袁.可设首拒绝或 

(50) 

Acce mrchar 

Serv—U(4.1以上版本)本身不能建立数据库,但支持基于 

ODBC数据库的用户和用户组设置,常见可支持的数据库包括 

Access、MySql、Oracle和MsSql等。Serv—U最小的数据库要求至 

少要有一个表.该表包含用户名、密码、主目录、操作主目录权 

(200) 

Nan% 

usempacce 

mrchar 

(50) 

允许登录到FTP服务器的IP地址列 

表.其中“卜hme 与 USetaCCOikq[-" 

限等基本字段,完整的数据库则要包括六个表(见表1)。 

2.2 Mysql oDBC与Serv-U的连接 

Acce mrchar 袁中“Name 对虚.“Access”表示 

2。2.1 MySql存储引鼙的选择与设置 

MySql包括处理事务和处理非事务安全表两种引擎.有诸 

如MylSAM、InnoDB、MERGE等多个存储引擎(或表类型),可以 

oupacco 

SS 

Narn 

(80) 

mrchar 

(50) 

当前用户 地址或IP范围的谰司权 

限. 

组帐户表 Name (主索引)是蛆 

名, Note”是组的相关说明. 

根据应用范围及类型来选择适当的存储引擎,对整个方案来 

讲。可以为其中的每个表应用不同的存储引擎。若要满足大多 

数数据库需求。可以在MySQL中的mv.ini文件中设置default— 

storage-engine的值:若要设置单一表的存储引擎可以在创建表 

gr。updim 

CC嚣S 

Note mrchar 

(255) 

组映自寸目录捌琨表,其中“ hme 

Narr ̄ 

Ⅵ ℃}lar 

与 grotp.accounts 表中 Name” 

(50) 

的同时用ENGINE或TYPE指定其存储引擎的类型.如:CRE. 

ATE TABLE usetable(id int,tide char(20)ENGINE:INNODB, 

ACCeS 

 ̄chat 

对应,“Access 表示对目录的存取 

权限(只读、可写、追加、创建、 

删除等)

. 

200) 

mrchar 

Erouptpac 

N 

Acces 

或者修改已有表的存储引擎类型,如:ALTER TABLE usetable 

ENGINE=MylSAM。 

组IP访问权隈表. 1-I,mm 与 

“grou!mccourgs 中的 N船 对 (50) 

2.2。2 Serv-U与oDBC的连接 

mrchar 应. Acces 表示当前组 地址或 

结合2-2.1所述根据表1的表结构在MySql(4.1以上版本) 

收稿日期:2008-02—23 

(80) IP范围的访问杈限. 

作者简介:袁承芬(1979-),女,湖北荆州人,郧阳师范高等专科学枝图书馆助理馆员,学士,主要从事计算机应用、Web系统开发方 

面的研究;刘耀钦(1980-),男,河南禹州人,郧阳师范高等专科学枝计算机科学系助教,学士,主要从事Web系统开发、 

网络Java方面的研究。 

19 

维普资讯

数据库与信息管理 ・・・ 本栏目责任编辑:闻翔军 

中创建数据库及相应的数据表。通常情况下,ODBC数据源管理器中没有MySql的驱动程序MyODBC,需要安装更新。MyODBC(3.5 

以上版本)提供了标准的ODBC界面,用户可以直接用Serv—U通过ODBC存取数据。在数据源中新建一个名为“Serv—U”的系统 

DSN并输入访问MySql的用户、密码、端口等信息后,便完成了ODBC的设置。在Serv—U中新建一个类型为“存储于ODBC数据库 

中”的“MyPido"域,然后在ServUDaemon.ini文件中设置ODBCSource、ODBCTables、ODBCColumns三项参数(参数后的值列表的顺序 

不要随意调整),其设置如下: 

ODBCSoume=DSN名称I访问ODBC用户名I访问ODBC密码 

0DBCTables=useI_accountsfgroupaccountsfuserdiraccessfgmupdiraccessfuseripaccessfgmupipaccess 

ODBCColumnS=Name IPassword ISKeyValues IHomeDir ILogMesFile IAccess IDisable INeedSecure IRelPaths IHideHidden IAlwaysLogin I 

ChangePhss JQuotaEnable JMaxIPlMaxspeedup JMaxSpeedDownIMaxUsers JIdleTime0utfSessionTime0utfRatioUpIRa【ioDownfRa【ioCredifIQuo— 

taCurrentlQuotaMaxlExpirationlPrivilegelPassTypelRatioTypelGroupslNotesllndex 

3 Serv—U加密原理 

缺省情况下.Serv~U的EncryptPasswords的值为1,即Serv—U帐户密码是经过加密的。Serv—U的加密原理是随机码与MD5 

(Message—Digest Algorithm 5.称为信息一摘要算法)32位加密。例如某用户密码为“mypido”,首先在“a—z”之间随机生成2位字符,如 

“fz”.将“fz”放在“mypido”前面从而形成“fzmypido”,然后将其用MD5加密算法进行加密得到“275EC3CEE6BE093DE893 

19B4EF379FED”.将前面牛成的2位随机码“fz”放置在加密后的字符串的前面即得到最终密码“fz275EC3CEE6BEO93DE89 

319B4EF379FED”..PHP实现过程如下: 

<?php 

function getRandomStr(¥1en) 

f Sstr:"abcdefghijklmnopqrstuvwxyz 

return substr(str shuflfe(¥str),0 ¥len): 

}//生成长度为¥1en的随机字符串 

function getMD5Str(¥passStr) 

f¥randomStr=getRandomStr(2); 

print¥randomStr.MD5(¥randomStr.¥passStr); 

}//将¥passStr用MD5加密 

?> 

4 Serv—U帐户远程管理的实现 

Serv—U用户的远程管理即是在未安装Serv—U的PC端对安装有Serv—U的服务器上的兀’P用户进行添加、删除、修改等的操 

作 添加FTrP用户的主要信息是登录名、密码、主目录以及对该目录的操作权限,其他的信息在设计表结构时均初始化为缺省值,如 

“Disable”字段表示是否禁用当前帐户,其缺省值为0(不禁用)。 

以注册用户名为文件夹名在根日录下的“ftpUser”文件夹内创建当前用户的主目录。生成用户主目录的方法如下: 

<?php 

function getDiskDir(¥username) 

{¥path=getenv(D()CUMENT_ROOT)."/ftpUser/”; 

¥userpath=str

replace(”/..,”\\”,¥path.Susername); 

return¥userpath; 

} 

?> 

用户信息添加即是将片j户名、密码、主目录及对该目录的操作权限等主要字段信息保存到相应的数据表中,首先从表“userae— 

counts”【f1查找是否存彳F与当前注册用户名相同的信息,如果不存在则将信息分别保存到“useraccounts”和“userdiraecess”两表中。其 

实现方法如下: 

<?php 

¥sql=”select Name from useraecounts where Name ̄-- ’.¥一POST[”userlname”1.1 l’; 

Srs=Ⅱ1ysql

quetT(¥sq1); 

¥count=mysql

hum

——

rows(¥rs);//取得当前查询结果中记录的个数 

if(¥count==0)//查询结果为空,即不存在重名情况 

{ 

@mkdir(getDiskDir(¥一POsrrluserlname]),0700);//创建用户主目录 

¥diskaddress=str_replace(”\\”,”\\\V',getDiskDir(¥一P0ST【user1name])); 

¥sql 1=”insert into useraccounts(Name.Password,HomeDir)values( S_POST【userlname] , getMD5Str(S POST[”userpassword” 

¥diskaddress3”: 

mysql

query(¥sql 1);//将用户信息保存到useraccount中 

Saecess:¥diskaddress.”IRWAMLCDP『f.//初始化当前用户主目录的操作权限 

¥sql2=”insert into userdiraccess(Name,Access)values( ¥一POST[userlname] , ¥access ; 

mysqLquery(¥sql2)=//将主目录操作权限保存到userdiraccess 

20 电脑知识与技术 

维普资讯

本栏目贲任编辑:闻翔军 

} 

else 

print”<script>window.document.1ocation.href='./admin

・・・・・・数据库与信息管理・ 

index.php?errorid=2&pidooperation=error ;</script>”;,/存在重名情况,则转 

一 到错误页 

?> 

删除操作不仅要删除用户记录.还需要删除该用户的主目录及其中的文件。删除主目录及其中的文件的实现算法如下: 

function removeDir(¥dirName),/删除目录 

{ 

¥handle=@。pendir(¥dirName); 

,/打开目录句柄,若成功则返回目录句柄的资源,若失败则返回FALSE 

while((¥file=@readdir(¥handle))!==false) 

,/是否返回目录中下一个文件的文件名,若失败则返回FALSE 

{ 

if(Stile!= . &&Stile!= ..1//屏蔽掉目录中的“.”和“一” 

{ 

¥dir=¥dirName 

is

.Sfile; 

dir(Sdir)?removeDir(¥dir):@unlink(¥dir);,/判断组合后的路径是否目录,若是目录则递归调用该算法删除,若是文件则直接 

删除 

1 

1 

closedir(¥handle); 

return rmdir(¥dirName);//删除空目录 

1 

程序中rmdir0函数是删除一个空目录的,所以算法首先是采用递归方法删除各层目录中的文件后才调用rmdir0iN ̄。 

修改信息即是用户更改自己已有记录字段值或是管理员赋予普通用户某些特殊的权限,其实现用SQL语句的“UPDATE”即可, 

在此不再赘述。 

5小结 

将Serv—U的用户数据信息存储于MySql数据库,建立MySql ODBC与Serv—U的连接,用户PHP实现用户的添加、删除、修改 

等基本操作,这样就建立了PC端与grP服务器端的直接连接,给Serv—U用户的远程管理及grP服务器管理都带来了很大的方便。 

参考文献: 

【1】杜江.PHP 5与MySQL 5 Web开发技术详解【M】.北京:电子工业出版社,2007. 

【2】黄炳强.PHP5+MYSQL网站开发实例精讲【M】.北京:人民邮电出版社,2007. 

【3】钟小平,张金石.网络服务器配置与应用(第3版)【M】.北京:人民邮电出版社,2007 

(上接第18页) 

execute immediate strsql; 

i:=i-1; 

end loop; 

commit; 

exception 

when others then 

rollback; 

end; 

最后,前台程序调用该存储过程实现业务子系统数据库数据到综合库数据增量同步。 

5结束语 

触发器和存储过程在O cle数据库间数据同步中有很广泛的应用,不仅可以实现复杂的业务逻辑,而且和用前台程序实现同 

样功能相比可以减少系统执行时间,大大提高系统效率。但是使用过多的触发器将降低整个数据库的性能。因此触发器使用要适 

当。 

参考文献: 

【1】Kevin Owens,著,欧阳宇,译.Oracle触发器与存储过程高级编程(第3版)【M】.北京:清华大学出版社,2004 

【2】娄建安,余建华.Oracle SQL&PL/SQL基础教程【M】.科学出版社,2005. 


本文标签: 用户 数据库 主目录 目录 信息