WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機(jī)
Xlight FTP/使用數(shù)據(jù)庫存儲過程
使用Xlight FTP服務(wù)器數(shù)據(jù)庫存儲過程[ ]
Xlight FTP服務(wù)器可以配置使用數(shù)據(jù)庫存儲過程認(rèn)證ftp用戶. 它提供了靈活性以集成Xlight FTP服務(wù)器到其他類型數(shù)據(jù)庫應(yīng).
在我們開始存儲過程指南之前, 我們需要解釋一些關(guān)于ODBC功能如何在Xlight FTP服務(wù)器內(nèi)部運(yùn)作.
Xlight FTP服務(wù)器使用2個(gè)數(shù)據(jù)庫表存儲用戶設(shè)置. Xlight FTP服務(wù)器ODBC功能最主要的表是"acct_table", 它存儲一個(gè)用戶基本的設(shè)置, 例如host_id, host_port, 用戶名, 口令和他的組, 主目錄和主目錄權(quán)限等. 第二個(gè)表是"acct_param_table", 由在"acct_table"查詢返回的"param_index"列做索引. 它存儲用戶的其他設(shè)置, 這些設(shè)置可以作為所有用戶的參數(shù)模板.
當(dāng)用戶登錄到FTP服務(wù)器, Xlight FTP服務(wù)器里將發(fā)送二次SQL查詢到這個(gè)數(shù)據(jù)庫, 驗(yàn)證他的口令和獲得他的設(shè)置. 第一次SQL查詢用這個(gè)用戶名和口令, 在數(shù)據(jù)庫查找符合記錄, 并且獲得基本的參數(shù), 例如"home_path", "home_perm"等. 第一次SQL查詢返回的"param_index"值為索引將用于第二次SQL查詢. 如果第一次SQL查詢不返回"param_index", Xlight FTP服務(wù)器將不會發(fā)送第二次SQL查詢. 第二次SQL查詢將查詢數(shù)據(jù)庫表“acct_param_table”獲得此用戶的更多參數(shù).
在Xlight FTP服務(wù)器使用數(shù)據(jù)庫存儲過程[ ]
許多數(shù)據(jù)庫系統(tǒng)支持存儲過程. 我們使用MySQL數(shù)據(jù)庫作為例子. 使用MySQL之前, 你必須下載最新的 MySQL ODBC Driver - 3.51.16 或者更高版本. 否則,因?yàn)?a href="/wiki/MySQL" title="MySQL">MySQL的Bug #27544, 第二次SQL查詢將會失敗. 其他類型的數(shù)據(jù)庫,你也最好升級數(shù)據(jù)庫相應(yīng)的ODBC Driver到最新版本.
在使用存儲過程之前必須設(shè)置數(shù)據(jù)庫ODBC數(shù)據(jù)源. 你可以參考這里的設(shè)置步驟.
在本例中, 我們有一個(gè)表"account_info"在這個(gè)數(shù)據(jù)庫里. 此表是其他數(shù)據(jù)庫應(yīng)用程序所使用, 它存儲用戶名, 口令和用戶發(fā)表的文章數(shù)目(posts). 我們也創(chuàng)建了另一個(gè)表"acct_param_table", 它是Xlight FTP服務(wù)器中的一張數(shù)據(jù)庫表, 用于存儲用戶參數(shù). 我們沒有創(chuàng)建Xlight FTP服務(wù)器的主要數(shù)據(jù)庫表"acct_table ", 因?yàn)槲覀儗⑹褂么鎯^程模擬其功能.
下面代碼是范例MySQL存儲過程test () ,它接受2個(gè)參數(shù), username_in和password_in.
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 ;
存儲過程test()接受明碼文本口令的password_in參數(shù). 你必須為虛擬服務(wù)器配置ODBC使用明碼文本口令, 如下圖所示
上面的存儲過程test()將檢查數(shù)據(jù)庫account_info驗(yàn)證用戶, 如果用戶名或口令不符合, 將沒有結(jié)果集返回Xlight FTP服務(wù)器,這個(gè)用戶的驗(yàn)證將失敗.
在成功的用戶認(rèn)證以后, 這個(gè)程序?qū)⒏鶕?jù)用戶在"account_info"表里發(fā)表的文章數(shù)目(posts), 返回不同的param_index, home_path值. 最終test()程序?qū)⒂谜Z句"SELECT home_path,home_perm,param_index;"返回結(jié)果集到Xlight FTP服務(wù)器.
因?yàn)閠est()程序替換"acct_table"的功能, 您應(yīng)該放置"call test('$USER','$PASS');"在選項(xiàng)"替換第一條內(nèi)部SQL查詢語句"中,如下圖所示.
$USER和$PASS是預(yù)定義參數(shù), Xlight FTP服務(wù)期將用登錄用戶實(shí)際的用戶名和密碼自動(dòng)替換它們. 如果需要查詢支持的預(yù)定義參數(shù), 請查閱幫助手冊的[全局選項(xiàng)]->[高級]這一節(jié).
如果您想要解決數(shù)據(jù)庫查詢的問題,你可以選擇這個(gè)選項(xiàng)"記錄SQL查詢錯(cuò)誤到系統(tǒng)錯(cuò)誤日志",你將能在系統(tǒng)錯(cuò)誤日志中看到SQL查詢錯(cuò)誤.
參考來源[ ]
Xlight FTP使用手冊導(dǎo)航 |
---|