孫路強 劉 磊 朱 宏 栗連弟 卞真付 柳艷麗
?
天津市地震局地震事件共享系統的設計與實現[1]
孫路強 劉 磊 朱 宏 栗連弟 卞真付 柳艷麗
(天津市地震局,天津 300201)
分析了天津市測震臺網歷史數據的使用現狀,并利用PHP語言和百度地圖API程序的二次開發,建立了天津市地震局地震事件共享系統。利用該系統實現了天津市地震局歷史地震事件的共享,用戶可通過共享系統查詢地震目錄和下載地震事件,通過MySql數據庫語言設計系統各功能模塊相關數據庫表單,保存地震目錄信息、用戶反饋信息相關圖片。該系統通過SESSION變量實現用戶權限管理,避免了事件文件誤傳的可能性。通過該系統平臺的投入使用,提升了系統原有地震事件保存方式,方便了用戶查詢使用事件文件的效率,使數據共享工作在天津市地震局得到了提升。
PHP語言 API程序 MySql數據庫 SESSION變量 數據共享
引言
隨著信息時代的不斷發展,不同部門、不同地區間的信息交流逐步增加,計算機網絡技術的發展為信息傳輸提供了保障。當大量的空間數據出現在網絡上,面對多種多樣的數據格式,如何利用它們是網絡數據共享與數據轉換的問題。實現數據共享可以使更多的人更充分地使用已有數據資源,減少資料收集、查詢、保管等工作,提高了技術人員使用數據、分析數據的工作效率。天津市地震局地震事件共享系統利用PHP這種服務器端HTML嵌入式腳本描述語言,實現了歷史地震事件的網絡共享,用戶可上傳、下載、查詢天津測震臺網歷史事件,同時分享上傳數據分析產出結果。
PHP是B/S體系結構,服務器啟動后用戶可以不使用客戶端軟件,只使用瀏覽器即可訪問,既保持了圖形化用戶界面,又大大減少了應用的維護量。
1 技術思路
對以光盤形式存儲的歷史事件文件進行整理,并對文件名按照程序上傳要求進行批處理修改,將修改后的事件文件統一存儲至服務器端目錄下。不斷產生的新數據和地震目錄可以通過系統提供的事件及目錄上傳功能完成事件和目錄的追加。平臺采用B/S結構(Browser/ Server),在系統設計方面采用Smarty架構,使用PHP技術進行動態頁面的設計,PHP是一種服務器端、跨平臺、HTML嵌入式的腳本語言(武孔春等,2007),是一種被廣泛應用的開源式的多用途腳本語言,尤其適合Web開發,服務器啟動后用戶可以不使用客戶端軟件,只使用瀏覽器即可訪問,既保持了圖形化用戶界面,又大大減少了應用的維護量。利用該種方法能夠將應用程序分成兩部分實現:視圖和邏輯控制,目的就是將用戶界面與PHP code分離,這樣在修改程序時不會影響到頁面設計,而美工在重新設計或修改頁面時也不會影響到程序邏輯。
系統后臺數據庫選用MySQL數據庫,MySQL數據庫稱得上是目前運行速度最快的SQL語言數據庫,支持跨平臺、安全性高、存儲容量大等特點(李剛等,2012)。天津市地震局“十五”測震系統軟件均采用該種數據庫,因此本研究選用MySQL數據庫作為后臺數據庫將有利于與現有數據庫數據進行交換。該系統地震事件目錄、文件存儲信息、用戶信息以及成果問題內容均存儲在MySQL數據庫中。
2 系統設計
根據局內科研人員的要求,結合現有測震臺網地震事件保存情況,本研究設計的地震事件共享系統主要實現以下功能模塊:用戶權限管理、事件檢索、地震目錄事件上傳下載、成果展示反饋、震中分布圖自動繪制等功能,天津市地震局地震事件共享系統業務流程如圖1。
2.1 登錄權限管理
為了達到在系統網站中方便管理地震事件及目錄的目的,在用戶權限上進行設置,如果以管理員身份登錄,則可正常使用事件上傳功能;如果是普通用戶登錄則不能使用事件上傳功能,其余模塊均能正常使用,該功能通過SESSION控制用戶訪問權限(李亞芳等,2013),初始化SESSION變量,通過$_POST[]方法獲取表單提交的用戶名和密碼,完成對用戶名和密碼的驗證,如果正確則將用戶名和密碼賦值給SESSION變量,并通過JavaScript腳本跳轉到相應權限用戶的初始界面。
2.2 事件查詢
在地震事件共享系統中提供事件查詢功能,用戶可通過輸入要查詢事件的起始與終止時間來查詢地震目錄,包括發震時間、經緯度、深度、震級、地名等信息,查詢功能界面見圖2。
對指定時間范圍內的數據進行查詢可通過關鍵字between…and…實現,利用正則表達式對日期進行校正,正則式作為一種描述字符串結構模式的表達式可用于驗證用戶輸入的數據和檢索大量文本。
2.3 事件上傳
管理員用戶通過事件上傳模塊,可將地震事件對應的地震目錄和文件名上傳至數據庫表tb_evt中,同時將事件文件上傳至服務器端指定目錄下,并根據系統設置統一了文件命名,通過tb_evt表中的filename列將地震目錄與服務器端下的事件文件進行匹配,事件文件上傳界面如圖3。
在PHP中,應用move_uploaded_file()函數實現將文件上傳到指定文件夾,在執行文件上傳之前,為防止潛在的攻擊對原本不能通過腳本交互的文件進行非法管理(明日科技,2008),可應用is_uploaded_file()函數判斷指定文件是否通過HTTP POST上傳,實現該功能核心代碼如下: