站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Xlight FTP/使用数据库存储过程
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{Xlight FTP}} ==使用Xlight FTP服务器数据库存储过程== <p style="text-indent:2em;">[[Xlight FTP]]服务器可以配置使用数据库存储过程认证ftp用户. 它提供了灵活性以集成Xlight FTP服务器到其他类型[[数据库]]应.</p> <p style="text-indent:2em;">在我们开始存储过程指南之前, 我们需要解释一些关于ODBC功能如何在Xlight FTP服务器内部运作.</p> <p style="text-indent:2em;">Xlight FTP服务器使用2个数据库表存储用户设置. Xlight FTP服务器ODBC功能最主要的表是"acct_table", 它存储一个用户基本的设置, 例如host_id, host_port, 用户名, 口令和他的组, 主目录和主目录权限等. 第二个表是"acct_param_table", 由在"acct_table"查询返回的"param_index"列做索引. 它存储用户的其他设置, 这些设置可以作为所有用户的参数模板.</p> <p style="text-indent:2em;">当用户登录到FTP服务器, Xlight FTP服务器里将发送二次SQL查询到这个数据库, 验证他的口令和获得他的设置. 第一次SQL查询用这个用户名和口令, 在数据库查找符合记录, 并且获得基本的参数, 例如"home_path", "home_perm"等. 第一次SQL查询返回的"param_index"值为索引将用于第二次SQL查询. 如果第一次SQL查询不返回"param_index", Xlight FTP服务器将不会发送第二次SQL查询. 第二次SQL查询将查询数据库表“acct_param_table”获得此用户的更多参数.</p> ===在Xlight FTP服务器使用数据库存储过程=== <p style="text-indent:2em;">许多数据库系统支持存储过程. 我们使用MySQL数据库作为例子. 使用MySQL之前, 你必须下载最新的 MySQL ODBC Driver - 3.51.16 或者更高版本. 否则,因为[[MySQL]]的Bug #27544, 第二次SQL查询将会失败. 其他类型的数据库,你也最好升级数据库相应的ODBC Driver到最新版本.</p> <p style="text-indent:2em;">在使用存储过程之前必须设置数据库ODBC数据源. 你可以参考这里的设置步骤.</p> <p style="text-indent:2em;">在本例中, 我们有一个表"account_info"在这个数据库里. 此表是其他数据库应用程序所使用, 它存储用户名, 口令和用户发表的文章数目(posts). 我们也创建了另一个表"acct_param_table", 它是Xlight FTP服务器中的一张数据库表, 用于存储用户参数. 我们没有创建Xlight FTP服务器的主要数据库表"acct_table ", 因为我们将使用存储过程模拟其功能.</p> [[Image:a1.jpg]] <p style="text-indent:2em;">下面代码是范例MySQL存储过程test () ,它接受2个参数, username_in和password_in.</p> DELIMITER $$ DROP PROCEDURE IF EXISTS test $$ CREATE PROCEDURE test(username_in VARCHAR(65), password_in VARCHAR(65)) main: BEGIN DECLARE user_name VARCHAR(65); DECLARE home_path VARCHAR(255); DECLARE home_perm VARCHAR(10); DECLARE num_posts, param_index INT(10); SELECT `account`, `Posts` INTO user_name, num_posts FROM account_info WHERE account = username_in AND password = password_in; IF user_name != username_in THEN LEAVE main; END IF; SET home_perm = 'LRS'; IF num_posts > 100 THEN SET param_index = 1; SET home_path = 'c:\\folder_1'; ELSEIF num_posts > 200 THEN SET param_index = 2; SET home_path = 'c:\\folder_2'; ELSE SET param_index = 0; SET home_path = 'c:\\folder_0'; END IF; SELECT home_path,home_perm,param_index; END $$ DELIMITER ; <p style="text-indent:2em;">存储过程test()接受明码文本口令的password_in参数. 你必须为[[虚拟服务器]]配置ODBC使用明码文本口令, 如下图所示</p> [[Image:a2.jpg]] <p style="text-indent:2em;">上面的存储过程test()将检查数据库account_info验证用户, 如果用户名或口令不符合, 将没有结果集返回Xlight FTP服务器,这个用户的验证将失败.</p> <p style="text-indent:2em;">在成功的用户认证以后, 这个程序将根据用户在"account_info"表里发表的文章数目(posts), 返回不同的param_index, home_path值. 最终test()程序将用语句"SELECT home_path,home_perm,param_index;"返回结果集到Xlight FTP服务器.</p> <p style="text-indent:2em;">因为test()程序替换"acct_table"的功能, 您应该放置"call test('$USER','$PASS');"在选项"替换第一条内部SQL查询语句"中,如下图所示.</p> [[Image:a3.jpg]] <p style="text-indent:2em;">$USER和$PASS是预定义参数, Xlight FTP服务期将用登录用户实际的用户名和密码自动替换它们. 如果需要查询支持的预定义参数, 请查阅帮助手册的[全局选项]->[高级]这一节.</p> <p style="text-indent:2em;">如果您想要解决数据库查询的问题,你可以选择这个选项"记录SQL查询错误到系统错误日志",你将能在系统错误日志中看到SQL查询错误.</p> ==参考来源== *http://www.xlightftpd.com/cn/ {{Xlight FTP导航}} [[category:Xlight FTP]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:Xlight FTP
(
编辑
)
模板:Xlight FTP导航
(
编辑
)