簡易的時數登錄系統CHC.RegTime

[緣起]
前天在學校的圖書室內,看到志工們辛苦的在抄寫記錄。
我覺得很奇怪,他們在幹嘛呢?
問了一下,原來是在在記錄每位志工的服務時數。
首先他們要逐位的登記誰今天有來,
誰今天沒來,然後再寫上當天的服務時數。
月末,再統計一份月總表,年末再統計為年統表,
一定的時數後,再由學校核發時數證明。

這樣的工作用電腦並不難做,但以他們而言
似乎花在登錄的時間還不少。
我看看後說,我寫個程式讓您們去記錄,
這樣就不用辛苦計算了。

最近關注了一些東西,例如NOSQL的概念,
也留意到了mongoDB這個東西,但思索一陣後,
覺得上述的 case 還是用較正規的SQL來當存放資料庫可能好些,
所以再將去年學習過的SQLite拿出來用。
目前用的大都是Ubuntu 10.04 及Ubuntu 10.10
這兩個版本與 SQLite 的搭配己經很全面了。

[SQLite的好處]
SQLite是個極小輕量的資料庫,它被廣泛的應用在各個角落。
瀏覽器火狐、蘋果的iPod、iPad、智慧手機、嵌入式系統等..
雖然它不如MySQL完整而強大,但在強調移動式環境的今天
它的出現、無疑是解決移動式環境對資料庫須求的大功臣。
換句話,您可以視為它是跨平台的 access。

它有趣的地方是,不像MySQL一樣,只要可以寫入的地方,
它就可以建立資料庫,換句話,它的資料庫位置是任意放置的。
有點像以前的計數器,或是一個文字檔,有個檔案讓它可以寫入就好了。
而且整個資料庫...就只有那個檔案。傑克  這太神奇了。
因此,對於較涉及隱私的資料,您不應該讓外面的人,
可以拿到那個檔案。

另外使用 SQLite 要注意的地方,基本上它是由誰建立的,它就該由誰可以存取。
因為在這個程式內,整個資料檔都由程式自動建立,
所以它的擁有者及屬性在Debain的環境下則是 644 與 www-data
當您將那個程式產生的資料檔,要移到別的機器時,就得注意這一點。

[程式的配置與安全]
一樣的,為求開發快速程式碼分離,Smarty是不可少的,因此在這組程式內,
我將 Smarty3 直接置放在 目錄的libs內,因此連網頁在內
全部不到 100K 大小的程式 。有了 900 多K的大小了。
程式的架構如下:(如附圖)
attachments/201102/5306308747.png
因為用到 Smarty 我們須要給它一個寫編譯檔的地方,
而SQLite3,也要有一個地方讓它可以透過程式建立資料庫產生資料表。
因此您要建立一個data的目錄讓它放上面的資料,
它的權限是必須可由apache寫入的。

而這個目錄您可以基於安全考量,將它移到Web之外,
讓這些資料不至於直接暴露在網路上,可以直接被存取。
或更簡單些,也可以直接放在校內的虛擬IP機器上。

除此之外,若一定放在Web之下時,您也可以
利用apache 的存取控制保護,在 data 的目錄下
置放一個.htaccess的檔案,內容僅一行
deny from all
利用這樣的作法,也可以保護這個檔案不被下載。
這樣的作法您須確定apache 的設定檔內
必須有 AllowOverride All 的設定,
否則.htaccess的設定就沒用了。

[安裝與設定]
A.下載了這個套件包後,在Web的任意目錄下,將它解開。
tar zxvf RegTime.tar.gz

B.先修改設定檔。

要改的地方頂多就三個,但要小心Win下的文字編輯器(記事本),
因為它們容易為您亂加料,保險一點您可以用vim
直接在伺服器上修改,否則可以找一下
madedit/Notepad++/PSPad
這些都是值的您信賴的自由軟體下的文字編輯器。
這樣就可以保證這些UTF-8的PHP程式,
不會被加入檔頭的BOM。
如果在Linux桌面環境,那就放心了,
因為預設都是不帶BOM的。

// 1.簡易認證
$Admin['User']="aaa";//管理帳號
$Admin['Pass']="aaa";//管理密碼


// 2.可寫入目錄(放置資料庫檔及暫存區用)
define('__SiteData', dirname(__file__).'/data/');
------------------------------
修改提示:如果放在web之外,您可以像下面這樣設定
define('__SiteData', '/home/webadmin/data/');
但注意,這目錄權限要777,讓程式可以自動建立相關對映的
資料夾及資料庫檔案。

// 3.資料庫檔名(將自動建立)
$DB='時數管理.sqlite3';
------------------------------
基本上資料庫檔名並不須修改,除非您看它不順眼。
這檔案將會自動建立在第2項設定的目錄下,
因此您不須再將它加上路徑。

C.從瀏覽器執行。
打開火狐,輸入程式網址,
您會先看到下面畫面
attachments/201102/9163933778.png

1.接著您須要先按【志工登錄
讓它自動建好人員資料表。
它會出現如下圖,您不用管它。
attachments/201102/0510269981.png
2.接著按下【無法建立資料表
返回程式,這時它就己經自動建好了。

3.同樣的過程,再去按【時數登錄
讓它自動建好時數記錄表。

4.開始加入人員資料。
加入人員資料後,就可以開始去登錄時數了。

[一些自訂與修改]
如果您要利用這組程式,再進行一些創作,
也許使用的表格就不符您的須要,
程式建表的地方在【時數登錄】及【志工登錄】
這兩個檔案內。您可以參照修改。
標題修改則在目錄下的 head.htm

另外月份統計是開放的
而【時數登錄】及【志工登錄】
則用簡易認證加以保護。

程式下載處

標籤: PHP Ubuntu
評論: 9 | 引用: 0 | 閱讀: 7231
  • 1 
困惑者 [ 2013-04-15 13:56 網址 ]
簡易的時數登錄系統CHC.RegTime
換了主機,重新安裝程式後,原舊有的歷史資料如何轉移至新主機?
村仔 [ 回復於2013-04-18 16:27 ]
您應將原有的資料夾整個備份下來移到新主機去...
再看看權限對不對就可以了
newone [ 2011-12-10 14:58 網址 ]
新增志工填好送出之後出現了以下訊息
Fatal error: Call to undefined function filter_var() in /var/www/html/RegTime/man.php on line 121
村仔 [ 回復於2011-12-24 17:09 ]
PHP版本過舊沒有那個函數
換新的版本吧
wenchi [ 2011-09-20 11:21 網址 ]
紀老師,好久不見
還是那麼有心在網管上
小弟早已忘光光了
有空到彰工來喝杯茶吧!

汶祺
村仔 [ 回復於2011-11-25 11:35 ]
一定喔..我記下了
哈...上次一直要回..忘了密碼
直到今天才想到...
村仔 [ 2011-04-20 00:15 ]
明天再..再電話連絡..
祐祐 [ 2011-04-18 18:52 網址 ]
作者你好,我是神洲青年志工團的團長,我們志工團屬於全國性的所以各縣市都會有分團,所以志工人數會蠻多的,然後因為我們也剛好需要有類似的志工時數根基本資料的網站可以登入等等,布之作者是否可以協助我們這部分相關的是宜?請和我聯絡0920327100黃崇祐
神洲青年志工團台南總團長
祐祐 [ 2011-04-18 18:39 網址 ]
該內容只有管理員可見
  • 1