徐楚媚 劉東
摘要:針對(duì)開發(fā)網(wǎng)站的經(jīng)驗(yàn)和收獲進(jìn)行介紹。UDFiles網(wǎng)站的開發(fā)是基于web的文檔管理系統(tǒng),用PHP語言實(shí)現(xiàn)的。用戶有注冊(cè)登錄后實(shí)現(xiàn)文檔的管理和文檔共享的功能,管理員還可以管理用戶的賬號(hào)、密碼和權(quán)限。
關(guān)鍵詞:基于web;文檔管理;PHP;上傳下載;開源
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)13-2993-03
1 概述
UDFiles網(wǎng)站是用PHP語言實(shí)現(xiàn)的類似網(wǎng)盤的文檔管理系統(tǒng)。什么是網(wǎng)盤?網(wǎng)盤又稱網(wǎng)絡(luò)U盤或網(wǎng)絡(luò)硬盤,給用戶提供文件的存儲(chǔ)、訪問、共享、備份等文件管理的功能。用戶可以把網(wǎng)盤理解為一個(gè)放在網(wǎng)絡(luò)上的U盤或硬盤,無論你在家、單位或者其他地方,只要你連接到因特網(wǎng),你都可以管理或者編輯網(wǎng)盤里的文件。相對(duì)于U盤和硬盤的好處是無須隨身攜帶帶來的方便,更不必害怕文件丟失引起的泄密。
2 UDFiles的功能介紹
該系統(tǒng)由系統(tǒng)理論觀點(diǎn)的可觀可測(cè)性可分為以下幾個(gè)功能:
1)文件夾同步:在電腦上選擇你所需要的文件夾,然后把服務(wù)器和它同步起來,這樣文件夾的內(nèi)容就會(huì)在所有設(shè)備上保持一致。
2)文件夾和文件共享:只要選擇一個(gè)文件夾或文件,然后點(diǎn)擊共享,那么就能實(shí)現(xiàn)分享的功能。
3)文件上傳和下載:能實(shí)現(xiàn)多文件的上傳,不同方式下載的功能。
4)文件管理(新建文件夾存儲(chǔ)或刪除或恢復(fù)):可新建一個(gè)文件夾存儲(chǔ)上傳的文件;若文件刪除了可到回收站恢復(fù)文件或者徹底刪除文件。
5)登錄:只有登錄后才能進(jìn)行文件管理。
6)注冊(cè):用戶可自定義注冊(cè)自己想要的賬號(hào),管理員可添加或刪除用戶賬號(hào),即實(shí)現(xiàn)了用戶和管理員均可注冊(cè)的功能。
7)文件搜索:只要在搜索框輸入相關(guān)的關(guān)鍵詞即可搜索自己想要的文件,在文件較多時(shí)便可快速查找文件。
8)管理員管理用戶的存儲(chǔ)空間:管理員可設(shè)定用戶的存儲(chǔ)空間,但不超過2G。
9)權(quán)限管理:管理員可以管理用戶的權(quán)限。
3 UDFiles開發(fā)的經(jīng)驗(yàn)和收獲
對(duì)于剛接觸網(wǎng)站開發(fā)、只有一點(diǎn)html和css的基礎(chǔ)的作者來說,有比較大的難度。然而PHP這門腳本語言在WEB領(lǐng)域上對(duì)于初學(xué)者來說有著學(xué)習(xí)資料多、類庫(kù)多、上手容易等特點(diǎn)。于是,作者利用一個(gè)暑假的時(shí)間自學(xué)PHP語言,作者對(duì)php語言有了大概的了解,但不算精通。
對(duì)于一個(gè)編程初學(xué)者來說,要自己寫一個(gè)網(wǎng)盤這種功能較為復(fù)雜的網(wǎng)站,確實(shí)比較困難。一開始,為了想證明自己能把PHP語言學(xué)好,自己就嘗試把網(wǎng)站所有功能都自己制作。于是作者參考了百度網(wǎng)盤的架構(gòu)設(shè)計(jì),后來發(fā)生了種種的問題,導(dǎo)致嘗試失敗。作者這時(shí)才發(fā)現(xiàn)自己對(duì)PHP語言的掌握還沒過關(guān),還得要繼續(xù)學(xué)習(xí)。
時(shí)間飛逝,經(jīng)過一段時(shí)間的多方面嘗試,作者認(rèn)識(shí)到整個(gè)自己重新從零開始制作這樣一個(gè)功能復(fù)雜的網(wǎng)盤網(wǎng)站,是很不現(xiàn)實(shí)的。后來作者認(rèn)識(shí)到,在軟件工程行業(yè),重復(fù)造輪子(reinvent the wheel)是一件十分愚蠢的事情,為什么作者不能學(xué)習(xí)牛頓,嘗試站在巨人的肩膀上呢?況且,通過二次開發(fā),不僅能使學(xué)習(xí)到別人優(yōu)秀的軟件設(shè)計(jì)思想,還能鍛煉自己,提高自主開發(fā)能力。
在這個(gè)情況下,Owncloud進(jìn)入了作者的視野。它的出現(xiàn)讓作者對(duì)UDFiles的開發(fā)有了新的希望。Owncloud是一套自由且開源并兼顧移動(dòng)性和安全性的個(gè)人云存儲(chǔ)解決方案,提供了一套強(qiáng)大的并能二次開發(fā)的網(wǎng)盤系統(tǒng)解決方案,免費(fèi)使用,開發(fā)便利。作者進(jìn)行二次開發(fā)時(shí),開發(fā)環(huán)境為Windows 7、Apache 2.2.22、PHP 5.3.13、MYSQL 5.5.24、phpmyadmin 3.5.1。首先,瀏覽器打開Owncloud的下載頁面(https://owncloud.com/download),然后下載ownCloud 5.0.15 Server版本的安裝包,接著把它解壓到本地服務(wù)器的www目錄,接下來在瀏覽器輸入http://localhost/install.php,你將會(huì)看到頁面需要輸入相關(guān)信息,設(shè)置網(wǎng)站初始用戶名和密碼、輸入數(shù)據(jù)庫(kù)用戶名、密碼、數(shù)據(jù)庫(kù)名和數(shù)據(jù)庫(kù)主機(jī)地址,只要按提示操作就能完成安裝。
此時(shí),進(jìn)入的界面就是管理員界面。然而Owncloud管理員或者用戶登錄后進(jìn)入主頁管理自己的文件,普通用戶要通過管理員添加后才能登錄。并沒有實(shí)現(xiàn)用戶注冊(cè)功能,基于web的文檔管理系統(tǒng)UDFiles需要用戶自行注冊(cè)而不是管理員手動(dòng)添加用戶。于是,作者便結(jié)合Owncloud的API接口,獨(dú)自寫了一個(gè)注冊(cè)功能,具體思路如下:用一個(gè)insert.php文件和register.html文件來實(shí)現(xiàn)用戶自行注冊(cè)。用戶只要訪問register.html頁面注冊(cè)并確定提交后,頁面就會(huì)自動(dòng)跳轉(zhuǎn)到insert.php,而insert.php會(huì)開始驗(yàn)證用戶名是否已注冊(cè),并把注冊(cè)成功或失敗的結(jié)果及時(shí)反饋給用戶,同時(shí)把注冊(cè)信息存入數(shù)據(jù)庫(kù),這樣就實(shí)現(xiàn)了用戶自行注冊(cè)的功能。
首先是insert.php文件,在這個(gè)功能文件里,首先寫了一個(gè)功能語句來判斷owncloud是否已安裝,如果未安裝,則提示“命令必須在owncloud安裝后方被能執(zhí)行”。接下來,開始檢查用戶的注冊(cè)時(shí)填寫的用戶名是否已被注冊(cè),此時(shí)用一個(gè)語句進(jìn)入到數(shù)據(jù)庫(kù)讀取前綴為“users”及“preferences”的表,在里面尋找所有已注冊(cè)的用戶名,如果填寫的用戶名已存在,則輸出一段Javascript腳本來提示“用戶名已存在,請(qǐng)重新注冊(cè)”。
//query1查詢的用戶為已注冊(cè)但未登錄;query2查詢的用戶為已注冊(cè)并且登陸過。
$email = $_POST['email'];
$query1 = OC_DB::prepare('SELECT * FROM `*PREFIX*users` WHERE `uid` = ?' );endprint
$query2 = OC_DB::prepare('SELECT * FROM `*PREFIX*preferences` WHERE `userid` = ?' );
$values1=$query1→execute(array($email))→fetchAll();
$values2=$query2→execute(array($email))→fetchAll();
$existing_email1=(count($values1)>0);
$existing_email2=(count($values2)>0);
if ( $existing_email1 || $existing_email2) {
echo "";
require_once 'register.html';
}
else{
OC_user::createUser($_POST['email'], $_POST['password']);
echo "";
}
此外,UDFiles并不需要Owncloud的部分功能,在熟悉了Owncloud的架構(gòu)后,作者把冗余的代碼刪除以免造成代碼冗余拖慢頁面瀏覽速度和空間浪費(fèi),例如:owncloud的詳細(xì)教程和第三插件等。期間閱讀Owncloud源代碼是作者學(xué)習(xí)的一個(gè)過程,它對(duì)未來的編程有較大的幫助。另外,為了使UDFiles有自己的特色,作者就把網(wǎng)站界面做了些調(diào)整和修改,把登錄位置做了較大的調(diào)整,并把全部的頁面都進(jìn)行了美化,讓用戶看起來更舒適美觀。除此之外,為了讓用戶能有較好的體驗(yàn),作者用Javascript腳本語言在用戶注冊(cè)、登錄過程中可能會(huì)出現(xiàn)的成功或失敗情況,都做了些相應(yīng)的消息彈出框提示。然后,如果產(chǎn)品想要有自己的特色,一個(gè)鮮明的logo是必不可少的,于是作者為此設(shè)計(jì)了一個(gè)logo,名為UDFiles,意思是Upload And Download Files(上傳和下載文件)。
最后,作者認(rèn)真地修改了一些細(xì)節(jié)性的東西,例如:網(wǎng)站的Favicon、具體位置細(xì)調(diào)、原版中部分未翻譯的英文翻譯成中文(目的是讓用戶能更加了解具體功能的用法)等,最終效果如圖1和圖2所示。
圖1 UDFiles登錄/注冊(cè)界面
4 結(jié)束語
不積跬步何以至千里,如果沒有在一個(gè)又一個(gè)小困難中學(xué)習(xí)進(jìn)步,作者又如何最終能完成這個(gè)項(xiàng)目呢?忙碌了一個(gè)學(xué)期,UDFiles網(wǎng)站終于告一段落了。這段時(shí)間很感謝老師的認(rèn)真負(fù)責(zé),對(duì)作者的悉心教導(dǎo),讓作者能夠很好的掌握并運(yùn)用所學(xué)的專業(yè)知識(shí),真是感到受益匪淺。在這個(gè)項(xiàng)目的策劃和實(shí)踐中,作者的策劃能力、全局分析、設(shè)計(jì)能力、抗壓能力以及團(tuán)結(jié)協(xié)作的能力都有了質(zhì)的飛躍。
參考文獻(xiàn):
[1] 劉欣,李慧.PHP開發(fā)典型模塊大全[M].3版.北京:人民郵電出版社,2012.
[2] 高洛峰.細(xì)說PHP[M].2版.北京:電子工業(yè)出版社,2012.
[3] 專屬云網(wǎng)盤-Owncloud[EB/OL].http://www.everitsm.com/product/Owncloud/.
[4] 搭建私有云Owncloud,作者的云,作者做主[EB/OL].http://blog.icodex.org/2013/06/搭建私有云Owncloud-作者的云-作者做主.
[5] Owncloud主頁[EB/OL].https://Owncloud.com/.
$query2 = OC_DB::prepare('SELECT * FROM `*PREFIX*preferences` WHERE `userid` = ?' );
$values1=$query1→execute(array($email))→fetchAll();
$values2=$query2→execute(array($email))→fetchAll();
$existing_email1=(count($values1)>0);
$existing_email2=(count($values2)>0);
if ( $existing_email1 || $existing_email2) {
echo "";
require_once 'register.html';
}
else{
OC_user::createUser($_POST['email'], $_POST['password']);
echo "";
}
此外,UDFiles并不需要Owncloud的部分功能,在熟悉了Owncloud的架構(gòu)后,作者把冗余的代碼刪除以免造成代碼冗余拖慢頁面瀏覽速度和空間浪費(fèi),例如:owncloud的詳細(xì)教程和第三插件等。期間閱讀Owncloud源代碼是作者學(xué)習(xí)的一個(gè)過程,它對(duì)未來的編程有較大的幫助。另外,為了使UDFiles有自己的特色,作者就把網(wǎng)站界面做了些調(diào)整和修改,把登錄位置做了較大的調(diào)整,并把全部的頁面都進(jìn)行了美化,讓用戶看起來更舒適美觀。除此之外,為了讓用戶能有較好的體驗(yàn),作者用Javascript腳本語言在用戶注冊(cè)、登錄過程中可能會(huì)出現(xiàn)的成功或失敗情況,都做了些相應(yīng)的消息彈出框提示。然后,如果產(chǎn)品想要有自己的特色,一個(gè)鮮明的logo是必不可少的,于是作者為此設(shè)計(jì)了一個(gè)logo,名為UDFiles,意思是Upload And Download Files(上傳和下載文件)。
最后,作者認(rèn)真地修改了一些細(xì)節(jié)性的東西,例如:網(wǎng)站的Favicon、具體位置細(xì)調(diào)、原版中部分未翻譯的英文翻譯成中文(目的是讓用戶能更加了解具體功能的用法)等,最終效果如圖1和圖2所示。
圖1 UDFiles登錄/注冊(cè)界面
4 結(jié)束語
不積跬步何以至千里,如果沒有在一個(gè)又一個(gè)小困難中學(xué)習(xí)進(jìn)步,作者又如何最終能完成這個(gè)項(xiàng)目呢?忙碌了一個(gè)學(xué)期,UDFiles網(wǎng)站終于告一段落了。這段時(shí)間很感謝老師的認(rèn)真負(fù)責(zé),對(duì)作者的悉心教導(dǎo),讓作者能夠很好的掌握并運(yùn)用所學(xué)的專業(yè)知識(shí),真是感到受益匪淺。在這個(gè)項(xiàng)目的策劃和實(shí)踐中,作者的策劃能力、全局分析、設(shè)計(jì)能力、抗壓能力以及團(tuán)結(jié)協(xié)作的能力都有了質(zhì)的飛躍。
參考文獻(xiàn):
[1] 劉欣,李慧.PHP開發(fā)典型模塊大全[M].3版.北京:人民郵電出版社,2012.
[2] 高洛峰.細(xì)說PHP[M].2版.北京:電子工業(yè)出版社,2012.
[3] 專屬云網(wǎng)盤-Owncloud[EB/OL].http://www.everitsm.com/product/Owncloud/.
[4] 搭建私有云Owncloud,作者的云,作者做主[EB/OL].http://blog.icodex.org/2013/06/搭建私有云Owncloud-作者的云-作者做主.
[5] Owncloud主頁[EB/OL].https://Owncloud.com/.
$query2 = OC_DB::prepare('SELECT * FROM `*PREFIX*preferences` WHERE `userid` = ?' );
$values1=$query1→execute(array($email))→fetchAll();
$values2=$query2→execute(array($email))→fetchAll();
$existing_email1=(count($values1)>0);
$existing_email2=(count($values2)>0);
if ( $existing_email1 || $existing_email2) {
echo "";
require_once 'register.html';
}
else{
OC_user::createUser($_POST['email'], $_POST['password']);
echo "";
}
此外,UDFiles并不需要Owncloud的部分功能,在熟悉了Owncloud的架構(gòu)后,作者把冗余的代碼刪除以免造成代碼冗余拖慢頁面瀏覽速度和空間浪費(fèi),例如:owncloud的詳細(xì)教程和第三插件等。期間閱讀Owncloud源代碼是作者學(xué)習(xí)的一個(gè)過程,它對(duì)未來的編程有較大的幫助。另外,為了使UDFiles有自己的特色,作者就把網(wǎng)站界面做了些調(diào)整和修改,把登錄位置做了較大的調(diào)整,并把全部的頁面都進(jìn)行了美化,讓用戶看起來更舒適美觀。除此之外,為了讓用戶能有較好的體驗(yàn),作者用Javascript腳本語言在用戶注冊(cè)、登錄過程中可能會(huì)出現(xiàn)的成功或失敗情況,都做了些相應(yīng)的消息彈出框提示。然后,如果產(chǎn)品想要有自己的特色,一個(gè)鮮明的logo是必不可少的,于是作者為此設(shè)計(jì)了一個(gè)logo,名為UDFiles,意思是Upload And Download Files(上傳和下載文件)。
最后,作者認(rèn)真地修改了一些細(xì)節(jié)性的東西,例如:網(wǎng)站的Favicon、具體位置細(xì)調(diào)、原版中部分未翻譯的英文翻譯成中文(目的是讓用戶能更加了解具體功能的用法)等,最終效果如圖1和圖2所示。
圖1 UDFiles登錄/注冊(cè)界面
4 結(jié)束語
不積跬步何以至千里,如果沒有在一個(gè)又一個(gè)小困難中學(xué)習(xí)進(jìn)步,作者又如何最終能完成這個(gè)項(xiàng)目呢?忙碌了一個(gè)學(xué)期,UDFiles網(wǎng)站終于告一段落了。這段時(shí)間很感謝老師的認(rèn)真負(fù)責(zé),對(duì)作者的悉心教導(dǎo),讓作者能夠很好的掌握并運(yùn)用所學(xué)的專業(yè)知識(shí),真是感到受益匪淺。在這個(gè)項(xiàng)目的策劃和實(shí)踐中,作者的策劃能力、全局分析、設(shè)計(jì)能力、抗壓能力以及團(tuán)結(jié)協(xié)作的能力都有了質(zhì)的飛躍。
參考文獻(xiàn):
[1] 劉欣,李慧.PHP開發(fā)典型模塊大全[M].3版.北京:人民郵電出版社,2012.
[2] 高洛峰.細(xì)說PHP[M].2版.北京:電子工業(yè)出版社,2012.
[3] 專屬云網(wǎng)盤-Owncloud[EB/OL].http://www.everitsm.com/product/Owncloud/.
[4] 搭建私有云Owncloud,作者的云,作者做主[EB/OL].http://blog.icodex.org/2013/06/搭建私有云Owncloud-作者的云-作者做主.
[5] Owncloud主頁[EB/OL].https://Owncloud.com/.