Asteroid 網路報名系統
Version 1.15
這是個開放原始碼 (Open Source) 的 PHP-scripts,透過這個網頁程式可以提供報名者經由網際網路報名,並將資料存放於 MySQL 資料庫,方便使用者透過網路管理報名資料及活動。
Asteroid 報名系統自開始撰寫就選擇採用 PREPARE 的 MySQLi 語法,並且限定必須是可以使用 InnoDB Engine 的 MySQL 資料庫。
版權 Copyright
Copyright (C) 2012-2013 Freeman Li and Karen Liao
許可 License
本程式是自由軟體,您可以遵照自由軟體基金會 (Free Software Foundation) 出版的 GNU 通用公共許可證條款 (GNU General Public License) 第二版來修改和重新發佈這一程式,或者自由選擇使用任何更新的版本。
發佈這一程式的目的是希望它有用,但沒有任何擔保。甚至沒有適合特定目的而隱含的擔保。更詳細的情況請參閱 GNU 通用公共許可證。
您應該已經和程式一起收到一份 GNU 通用公共許可證的副本。如果還沒有請見下列網址:
http://www.gnu.org/licenses/
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see
http://www.gnu.org/licenses/
系統需求 Requirements
- PHP 5.3 or later
- MySQL 5.0 or later
- SMTP account
- a web-browser (doh!)
本程式已測試過相容於以下的系統環境,系統管理部分僅使用過 Chrome 和 Firefox 瀏覽器測試,無法保證其他瀏覽器是否正常操作。
- Windows 2003 + IIS + php 5.3.x (5.4.x) + MySQL 5.1.X (5.5.x)
- Windows 7 + Apache 2.4.4 + MySQL 5.6.11 + php 5.5.3
- Debian + Apache2 + MySQL 5.x + php 5.3.x ~ 5.4.x
下載 Download
您可以透過下列版本歷程中的下載網址下載本報名系統或是透過下列網址取得最新版:
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_latest.7z
已知的問題 Known Issue
- 極少部分使用 IE 10 報名的使用者表示,在第一次填寫報名表時顯示身分證字號錯誤。這個是前臺使用 jquery 檢查身分證字號時所發生,建議使用者不理這個錯誤也是可以送出到系統,系統會再做一次正確的檢查。但是建議該使用者重新開啟瀏覽器後卻恢復正常,而且僅在第一次發生,再加上不是每一臺電腦都會發生,所以無法理解錯誤產生的真正原因。
- 當報名錄取的正取者只有一位時,無法寄送郵件。幸好這個狀況不會發生,所以不修了! ^_^
安裝 Installation
- 請先確認上述系統需求是否都完備,並已安裝完成。
- 下載本系統程式,下載完後,請解開壓縮檔。
- 請使用 phpmyadmin 或其他軟體在 MySQL 建立一個 資料庫(Schema) 它的預設語言為 utf8 (或是utf8_general_ci) 。
- 請使用 phpmyadmin 或其他軟體建立一個可以使用這個 資料庫(Schema) 的帳號與密碼,本系統不會自行建立。
- 請在 SMTP 郵件伺服主機中建立(或使用已有的)一個可供本系統寄發郵件的帳號與密碼,本系統不會自行建立。
- 請修改 config 資料夾下的 config.bak.php 檔案,依其內說明完成修改後,將其檔案名稱改為 config.ini.php 。
- 如不修改 install/admin.php 其中的內容,預設的管理員帳號為 Admin,密碼為 111111 。
- 然後將整個資料夾上傳至 web server。
- 透過瀏覽器執行 install/creater.php,若執行順利表示系統已經完成建置,請注意這個程式會摧毀 資料庫(Schema) 下的資料表。
- 刪除掉 install 資料夾及其下所有檔案。
- 以系統管理者的密碼登入後儘速設定單位的組室資料並修改管理者的密碼,建議是建立一個新的管理者帳號,刪除掉原本的 Admin 帳號。
- 修改 uploads 資料夾的屬性,使一般網頁瀏覽者具有修改及寫入的權限,其下的pid資料夾應透過Web Server 的 IIS 或 Apache 限制能瀏覽的ip。
- 測試新增活動群組後再新增活動,如一切順利,Enjoy!
更新 Update
- 請先確認上述系統是否已經安裝舊版。
- 下載本系統程式,下載完後,請解開壓縮檔。
- 然後將整個資料夾上傳至 web server 覆蓋掉原本的檔案。
- 重新修改 config 資料夾下的 config.bak.php 檔案,依其內說明完成修改後,先刪除原本的 config.ini.php,然後將 config.bak.php 改為 config.ini.php 。
- 透過瀏覽器執行 install/updatedb.php,若執行順利表示系統已經完成更新資料庫(這個資料庫更新程式,不會更動活動及活動報名者的資料表)。
- 刪除掉 install 資料夾及其下所有檔案。
- 重新登入系統。
- 測試新增活動群組後再新增活動,如一切順利,Enjoy!
版本歷程 ChangeLog
Version 1.15
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_latest.7z
- 修正問題設計使用特殊字元時(如 雙引號("), 單引號('), 反斜線(\)),會造成客戶端的javascript停止回應。
- 修正規則五 Rule 5 的小錯誤。
- 修正因為不同報名者同時報名時,會造成亂數排序的儲存資料錯置問題。如果需要使用這個功能者,請務必更新至此版。
- 修正因為不採用亂數排序的報名審核所造成的混亂排序問題,改成採用報名時間的順序排序,方便管理使用。
- 2014.6.18 釋出。
Version 1.14
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_1.14.7z
- 此版開始開始採用 OWASP ZAP 檢測系統的弱點,加強首頁與報名頁輸入參數的的安全性檢查語法,以避免被有心者用來盜取報名者的個資。
- 另外為加強系統的安全性,增加使用者記錄表(userlog),記錄使用者登入情形,以及記錄系統所偵測到報名者可能是使用 Injection 攻擊的相關參數,目的是方便管理者檢查是否有不明的IP來源意圖取得報名資料。
- 上述記錄置放於 userlog 的 memo 欄位,請注意您必須自己檢查這語法是否真的是 Injection 或是 XSS 還是只是單純的按錯鍵盤,目前這部份的內容仍必須透過 phpmyadmin 等資料庫軟體來觀看。
- 為避免被使用暴力攻擊(Brute-force attack)猜測使用者的帳密,當使用者在「登入持續時間」登入失敗的次數超過「允許失敗次數」,那麼接下來的登入都會被認定為失敗,即使後來猜到正確的帳密。
- 修改系統管理使用 AJAX 上傳資料的語法,修正系統管理的安全性。
- 鑑於一些照片網站都提供很大的伺服器空間並可提供外掛於其他網頁的語法,所以修改活動照片資料表,新增能採用嵌入式語法的架構。
- 首頁及報名頁改採用網頁壓縮方式傳送。
- 修正一些頁面使用 HTML 語法的小錯誤。
- 2013.11.21 釋出。
Version 1.13
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_1.13.7z
- 修正因為活動名稱包含 EXCEL 標題所不允許的字元,造成輸出學員 EXCEL 報表檔時產生錯誤的問題。
- 修正因為部分系統製造 JSON 時產生多餘的 slash 造成程式判讀錯誤的問題。
- 修正親朋人數只有一位時,報名人員在填寫報名表時,會對表格的說明語法產生誤解的問題。
- 修正關於 Asteroid 報名系統讀我檔案(也就是這個檔案)的顯示方式。
- 修正活動記錄表的錯誤。
- 實驗性質的更動,將原本 $mysqli->insert_id 改為 $stmt->insert_id
- 2013.10.10 釋出。
Version 1.12
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_1.12.7z
- 修改附件附檔名大小寫的問題,增加上傳檔案設定的選項,可自行定義附件照片上傳的檔案類型,以及調整附件上傳檔案大小。
- 修改活動照片的顯示方式。
- 修正 TinyMCE 顯示說明時文字過小的問題。
- 修正因為部分 Sever 的 php.ini 預設是將 output_buffering 關閉的設定,導致系統無法重新導向的問題。
- 修正 js 與 css 版本控制的方法。
- 修改寄出郵件編碼的方式為 Base64
- 修正因為活動名稱包含不允許的字元,造成Excel輸出學員報表產生的問題。
- 2013.9.28 釋出。
Version 1.11
http://ticket-app.tam.gov.tw/activity/uploads/asteroid_1.11.7z
- 修正報名查詢時部分活動排序所發生的錯誤問題。
- 修正系統的安全性包含前台報名查詢,取消報名,修改/更換,驗證資料時顯示學員所填資料的輸出方式以及後台處理學員填表項目的方式。
- 基於安全性的理由,建議您如使用本系統,請儘速下載更新至1.11版以上。
- 2013.7.21 釋出。
Version 1.10
- 修正亂數排序儲存時因為變數超過 max_input_vars 預設的 1000 個時,系統會不儲存過多的變量,改採用 JSON 格式上傳亂數排序後資料。
- 為避免系統寄件時產生上述同樣的問題,一併修正寄信時上傳的資料也採用 JSON 格式。
- 修正上傳驗證資料時檢查圖檔的語法錯誤。
- 修正研考資料的顯示方式。
- 修正當採用Mail伺服器驗證時,當Mail伺服器故障時,會導至無法進入報名系統管理,改為暫時採用系統經過 SHA512 編碼後預存的使用者資料進行驗證。
- 修正及測試採用https時的相容性問題。
- 2013.6.18 釋出。
Version 1.9
- 新增及修改活動學員填寫「檢查正則表示」欄位時(Rule 5 如[通關密碼])時進行重複性檢查。
- 上述設計的原則是一起報名者可共用一個正則表示(優先檢查),並且同一種類的活動只能使用一次。
- 新增及修改 tinyupload 伺服器端的程式,外掛於 tinymce 並相容於 Windows 的伺服器系統,使活動說明及電子郵件通知的內容可以文圖並茂。
- 修正如果不使用 tinymce 時的錯誤訊息。
- 新增報名人員的簡易統計,包含簡單的月報,日報,及各時段報名人數統計,方便給研考人員統計用。
- 新增輸出所有報名人員報名紀錄。
- 修正 logact 的順序錯置。
- 修正部分程式內容,使報名者在正常操作下不會出現 PHP Notice 及 Warning 的訊息。
- 此版開始相容於IPv6 的環境。
- 2013.4.17 釋出。
Version 1.8a
- 修正相容性,相容於具有 mysqli 卻不使用MySQL Native Drive (mysqlnd) 的 php 系統。
- 修正部分系統使用 str_getcsv 函式處理 UTF8 碼時的判斷錯誤。
- 修正安裝程式的相容性判斷語法。
- 修正個別活動上傳附件檔案的顯示錯誤。
- 修正匯出 Excel 檔案時遇到 Null 值的錯誤。
- 允許修改個別活動所屬的活動種類。
- 增加匯出學員的資料的檔案類型。
- 2013.3.27 釋出。
Version 1.7a
- 修改活動報名者列表,除了報名者姓名欄位不可排序外,其餘欄位均可排序。
- 修改個人資料保護專區的顯示問題。
- 修改後台的審核管理,加入tablesorter 方便排序管理。
- 修改新增及修改活動時javascript的檢查機制。
- 修正電子郵件的程式碼,允許使用SSL等傳輸協定。
- 修改安裝程式,加入正確的環境檢查條件,以及測試系統環境是否可以安裝及正確執行。
- 修正些許小錯誤。
- 此版(含以前)不相容於具有 mysqli 卻不使用 MySQL Native Drive (mysqlnd) 的 php 系統。
- 2013.3.17 釋出。
Version 1.6
- 修正後台列表因為活動名稱過長造成顯示錯誤。
- 修正上傳檔案副檔名為大寫時無法上傳。
- 修正學員年齡人數計算的錯誤。
- 修正許多小錯誤。
- 2013.3.6 釋出。
Version 1.5
- 修正Client端的程式,改為採用jquery, jquery ui 以及 Timepicker的 API。
- 加入TableKit將輸出的表格進行排序。
- 修正許多小錯誤。
- 2013.2.9 正式上線服務。
Version 1.0
外掛程式 Plugins
- PHPExcel from http://www.codeplex.com/PHPExcel
- TableKit from http://www.millstream.com.au/view/code/tablekit
- TinyMCE - Javascript WYSIWYG Editor from http://www.tinymce.com/
- PHPMailer - PHP email class from https://code.google.com/a/apache-extras.org/p/phpmailer/
- jQuery
- jQueryUI (with datepicker and slider wigits)
- Timepicker
- tablesorter from http://tablesorter.com/docs/
- tinyupload from http://sourceforge.net/p/tinymce/plugins/140/
支援 Support
您可以將所遇到的問題以及錯誤寄信給我,但因我時間有限,沒有義務一定得回覆或是必須修正某個錯誤。
Please, don't send me emails with question like "How do I compile PHP with MySQL-support". I just don't have the time to be your free help desk.
聯繫作者 (Contact the Author)
In honor of my father
僅將此系統獻給我天上的父親,
感謝詹佩菁、「台灣從鈴開始傳藝推廣協會」...等協助測試。還有感謝我大學時的電腦老師崔大山,雖然我在他叫我學習資料庫時,就決定先溜了,沒想到繞了一圈,發現我大部分的時間還是在處理資料庫。
Enjoy!