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