999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PHP的天津市地震局地震事件共享系統的設計與實現

2015-03-11 02:33:59孫路強栗連弟卞真付柳艷麗
山西地震 2015年2期

孫路強,劉 磊,栗連弟,卞真付,柳艷麗,朱 宏

(天津市地震局,天津 300201)

·技術交流·

基于PHP的天津市地震局地震事件共享系統的設計與實現

孫路強,劉磊,栗連弟,卞真付,柳艷麗,朱宏

(天津市地震局,天津300201)

摘要:利用PHP語言和MySql數據庫設計系統,設計天津市地震局地震事件共享系統。該系統具有地震事件的上傳、下載、查詢、繪制地震震中分布圖等功能,實現規范地震事件格式,改變數據存儲方法,便于局內科研人員通過瀏覽器方式對測震歷史數據進行檢索與下載,進一步提高共享信息的利用率。

關鍵詞:PHP語言;MySql數據庫;共享系統;測震歷史數據

0引言

隨著信息時代的不斷發展,不同部門、不同地區間的信息交流逐步增加,計算機網絡技術的發展為信息傳輸提供了保障。當大量的空間數據出現在網絡上,面對多種多樣的數據格式,如何運用是網絡數據共享與數據轉換的問題。實現數據共享可以使更多的人更充分地使用已有數據資源,減少資料收集、查詢、保管等工作,提高技術人員使用數據、分析數據的工作效率。天津市地震局地震事件共享系統利用PHP服務器端HTML嵌入式腳本描述語言,實現歷史地震事件的網絡共享,用戶可上傳、下載、查詢天津測震臺網歷史事件,分享上傳數據,分析產出結果。

1系統設計技術思路

對以光盤形式存儲的歷史事件文件運行整理,并對文件名按照程序上傳要求進行批處理修改,將修改后的事件文件統一存儲至服務器端目錄下。不斷產生的新數據和地震目錄可以通過系統提供的事件及目錄上傳功能完成事件和目錄的追加。平臺采用B/S結構(Browser/Server),在系統設計方面采用Smarty架構,使用PHP技術進行動態頁面的設計。PHP是一種服務器端、跨平臺、HTML嵌入式的腳本語言,是一種被廣泛應用的開源式的多用途腳本語言[1],尤其適合Web開發。服務器啟動后,用戶可以不使用客戶端軟件,只使用瀏覽器即可訪問,既保持圖形化用戶界面,又大大減少應用的維護量。利用此方法能夠將應用程序分成兩部分實現:視圖和邏輯控制,目的就是將用戶界面與PHP code分離,這樣,在修改程序時不會影響到頁面設計,而美工在重新設計或修改頁面時也不會影響到程序邏輯。

系統后臺數據庫選用MySQL數據庫,MySQL數據庫是目前運行速度最快的SQL語言數據庫,具有支持跨平臺、安全性高、存儲容量大等特點。天津市地震局“十五”測震系統軟件均采用該種數據庫,因此,研究選用MySQL數據庫作為后臺數據庫將有利于與現有數據庫數據進行交換。該系統地震事件目錄、文件存儲信息、用戶信息以及成果問題內容均存儲在MySQL數據庫中。

2系統設計

根據局內科研人員的要求,結合現有測震臺網地震事件的保存情況,研究設計的地震事件共享系統主要實現以下功能模塊:用戶權限管理、事件檢索、地震目錄事件上傳下載、成果展示反饋、震中分布圖自動繪制等功能,天津市地震局地震事件共享系統業務流程如第33頁圖1所示。

2.1 登錄權限管理

為達到在系統網站中方便管理地震事件及目錄的目的,可在用戶權限上進行設置。如果以管理員身份登錄,則可正常使用事件上傳功能;如果是普通用戶登錄,則不能使用事件上傳功能,其余模塊均能正常使用。該功能通過SESSION控制用戶訪問權限,初始化SESSION變量,通過$_POST[]方法獲取表單提交的用戶名和密碼[2],完成對用戶名和密碼的驗證。如果正確,則將用戶名和密碼賦值給SESSION變量,并通過JavaScript腳本跳轉到相應權限用戶的初始界面,其代碼如下:

圖1 事件共享系統業務流程Fig.1 Operation flow of event sharing system

session_start();

$A_name=$_POST[name];//接收表單提交的用戶名

$A_pwd=$_POST[pwd];//接收表單提交的密碼

………//省略部分代碼

function checkinput(){

include("conn/conn.php");//連接數據源

$sql=mysql_query("select * from tb_user where name='".$this->name."' and pwd='".

$this->pwd."'",$conn);

$info=mysql_fetch_array($sql);//檢索管理員名稱和密碼是否正確

if($info==false){//如果管理員名稱或密碼不正確,則彈出相關提示信息

echo "";

exit;

}

else{

if($this->name=="root" && $this->pwd=="rootme"){

echo "";

$_SESSION[admin_name]=$info[name];

$_SESSION[pwd]=$info[pwd];

}else{

echo "";

$_SESSION[admin_name]=$info[name];

$_SESSION[pwd]=$info[pwd];

}

2.2 事件查詢

在地震事件共享系統提供的事件查詢功能中,用戶可通過輸入要查詢事件的起始與終止時間來查詢地震目錄信息,包括發震時間、經緯度、深度、震級、地名等信息,查詢功能界面如圖2所示。

圖2 地震事件共享系統查詢界面Fig.2 Query interface of seismic event sharing system

對指定時間范圍內的數據進行查詢,可通過關鍵字between…and…實現,利用正則表達式對日期進行校正。正則式作為一種描述字符串結構模式的表達式,可用于驗證用戶輸入的數據和檢索大量文本,實現代碼如下:

if($_POST[sub]){

if($_POST[text1] == "" || $_POST[text1] == "輸入開始日期" || $_POST[text] == "" || $_POST[text] == "輸入結束日期"){

echo "";

}else{

if(preg_match("/([0-9]{3}[1-9][0-9]{2}[1-9][0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))/",$_POST[text])){

$conn = mysql_connect("localhost","root","rootme") or die("connect mysql false");

mysql_select_db("db_earthevt",$conn) or die("connect database false");

mysql_query("set names gb2312");

$rss = mysql_query("select * from tb_evt where evtdate between '$_POST[text1]' and '$_POST[text]' order by evtdate");

if (!$rss) echo "SQL錯誤:".mysql_error();

while($rst = mysql_fetch_array($rss)){

………//省略部分代碼

?>

2.3 事件上傳

管理員用戶通過事件上傳模塊,可將地震事件對應的地震目錄和文件名上傳至數據庫表tb_evt中,并將事件文件上傳至服務器端指定目錄下。根據系統設置統一了的文件命名,同時通過tb_evt表中的filename列,將地震目錄與服務器端下的事件文件進行匹配。事件文件上傳界面如圖3所示。

圖3 地震事件、目錄上傳界面Fig.3 Uploading interface of seismic event and earthquake catalogue

在PHP中,應用move_uploaded_file()函數實現將文件上傳到指定文件夾。在執行文件上傳之前,為防止潛在的攻擊對原本不能通過腳本交互的文件進行非法管理,可應用is_uploaded_file()函數判斷指定文件是否通過HTTP POST上傳,實現該功能的核心代碼如下:

header("content-Type: text/html; charset=gb2312");

include ("conn/conn.php"); //連接數據庫

$evtdate = $_POST["evtdate"]; //獲取表單中提交的數據

………//省略部分代碼

if($types==".seed"){

if($_FILES['file']['error']>0){//判斷文件是否可以上傳到服務器包括大小判定類型

………//省略部分代碼

if(!is_dir("D:/seed/")){//判斷指定目錄是否存在

mkdir("D:/seed/");//創建目錄

}

$path='D:/seed/'.$filename;//定義上傳文件名稱和存儲位置

if(is_uploaded_file($_FILES['file']['tmp_name'])){//判斷文件是否是HTPP POST上傳

echo $path;

if(!move_uploaded_file($_FILES['file']['tmp_name'],$path)){//執行上傳操作

echo "上傳失敗";

2.4 事件下載

作為地震事件共享系統最主要的功能是向技術人員提供歷史事件進行研究分析,因此,如何更便捷地向用戶提供事件下載功能,成為共享系統的重要功能之一。考慮到在同一時間段內可能會出現多個地震事件,在提供事件下載鏈接的同時,出現與此匹配的地震事件目錄,以便用戶在多個事件中下載正確事件。通過HTTP方式下載文件,主要應用header()函數,其作用是:以HTTP協議將HTML文檔的標頭送到瀏覽器[3],并指示瀏覽器具體怎么處理這個頁面,實現該功能的核心代碼如下:

………//省略部分代碼

$file_name = $row[8];

$file_dir = "D:/seed/";//下載文件存放目錄

if (!file_exists($file_dir . $file_name)) {//檢查文件是否存在

echo "文件找不到";

echo $file_dir . $file_name;

}else {

echo $file_dir . $file_name;//打開文件

$file = fopen($file_dir . $file_name,"r");

Header("Content-type: application/octet-stream");//文件流

Header("Accept-Ranges: bytes");

Header("Accept-Length: ".filesize($file_dir . $file_name));

Header("Content-Disposition: attachment; filename=" . $file_name);

readfile($file_dir . $file_name);

}

?>

2.5 問題反饋回復功能

在該模塊中,用戶可將應用事件文件產出的結果通過該模塊上傳,上傳內容包括文字、圖片,同時用戶可將自己在系統使用過程中遇到的問題發布在該模塊中,便于管理員解決問題。在此功能的實現過程中,主要解決的問題是圖片的數據庫存儲和顯示,選擇圖片數據庫存儲能夠方便維護,備份、恢復數據簡單;文件元數據檢索速度快,核心代碼如下:

if ($cover_type != ".jpg" && $cover_type != ".gif" && $cover_type !=

".JPG" && $cover_type != ".GIF" && $cover_type != ".bmp" && $cover_type !=

".BMP") { //判斷圖片的格式

echo "";

} else {

$cover=iconv("utf-8","gb2312",$cover);//設置字符串的編碼格式

$fp = fopen($cover, "rb");//以二進制形式打開圖片

$image = addslashes(fread($fp, filesize($cover)));//讀取二進制的數據

………//省略部分代碼

2.6 自動繪制震中分布圖

用戶通過輸入起始時間條件,點擊繪圖按鈕,WEB頁面會調用百度地圖URL API2.0接口及開源代碼庫,實現在地圖上添加Maker、比例尺、設置中心點坐標等[4]。由于存儲在MySQL數據庫中的事件經緯度信息的調用、讀取是通過PHP代碼實現的,并賦值于數組內。當javascript調用該參數時,需要通過JSON(JavaScript Object Notation)來實現,JSON是一種輕量級的數據交換格式,它基于JavaScript的一個子集實現數據在不同語言程序間的交換,震中分布繪制功能如第36頁圖4所示。

圖4 繪制地震震中分布圖Fig.4 Drawing of earthquake epicenter distribution map

實現該功能的核心代碼如下:

………//省略部分代碼

//百度地圖及lib庫調用

………//省略部分代碼

3數據庫的設計

本系統采用Apache+PHP+phpMyAdmin+MySQL5.0開發實現,利用MySQL構建地震事件共享數據庫db_earthevt以及相關數據表tb_evt、tb_problem、tb_user、tb_manager,利用公共模塊設計conn.php數據庫連接文件,在需要進行數據庫操作的程序中,通過include或者其他包含語句調用連接文件。

3.1 構建數據庫表空間

通過phpMyAdmin圖形化管理工具的主頁對數據庫表進行建設[5],字符編碼格式采用gb2312_chinese_ci,將主要數據表的創建結構列出(見第37頁表1、表2)。

表1 地震事件信息表

表2 問題反饋信息表

3.2 數據庫連接公共文件

公共文件就是將多個頁面都可能使用到的代碼寫成單獨的文件,在使用時,只要用include或require語句將文件包含進來即可。該系統各模塊與數據庫的連接便是通過公共文件conn.php來實現的,代碼如下:

$conn=mysql_connect("localhost","root","rootme") or die("數據庫連接錯誤".mysql_error());

mysql_select_db("db_earthevt",$conn) or die("數據庫訪問錯誤".mysql_error());

mysql_query("set names utf8");

?>

4軟件的應用與作用

天津市地震局地震事件共享系統自2014年4月投入使用,實現了地震事件與目錄信息的及時更新,歷史事件信息已更新至2011年11月,已于2014年8月前實現歷史事件的全部追加。技術人員使用數據正常,并通過該系統發布了應用數據產出的成果;通過震中分布圖自動繪制功能,技術人員能夠快速繪制出選擇時間、區間內的地震分布情況,并判斷地震活躍性;同時能夠利用該功能快速查詢地震事件發生的具體位置,便于地震應急工作的展開。

在數據庫建設與應用上,遵循標準和堅持開放是數據庫設計的基本原則,這樣選擇的數據庫平臺和構造的數據庫系統才具有先進性、靈活性、可擴展性和繼承性。在實際應用中,這一功能也顯現出來,查詢快速簡單。

5結束語

數據共享的程度反映了一個地區、一個國家的信息發展水平,數據共享程度越高,信息發展水平越高。要實現數據共享,首先應建立一套統一的、法定的數據交換標準、規范格式,天津市地震局地震事件共享系統正式利用該項技術,統一規范了地震事件的名稱格式、保存格式及存儲分類,改革現有的數據存儲方法,方便使用,基于歷史事件信息增加了地震分布圖功能,提高了共享信息的利用率。科研人員將自己產出的結果利用該系統的問題反饋功能共享給所有人員使用,破除了原有的部門之間的信息阻隔,有利于信息交流和防震減災事業的發展。

系統在研究、開發、論證階段,得到天津市地震局聶永安局長、監測預報中心王建國、應急信息中心李剛、信息中心劉磊的大力支持和幫助,在此深表感謝!

參考文獻:

[1]李剛,孫晶巖.MPLS VPN高速區域網絡在天津地震監測系統中的應用[J].震災防御技術,2012,7(1):92-99.

[2]李剛,王曉磊.基于Nagios軟件的綜合短信聯動告警系統在地震行業中的應用研究[J].地震研究,2012,35(1):133-138.

[3]李亞芳,陳述新.新疆測震臺網歷史數據共享平臺的設計與實現[J].內陸地震,2013,27(4):356-363.

[4]明日科技.PHP從入門到精通[M].北京:清華大學出版社,2008.

[5]徐濟惠,蔣寧.一個數據共享系統的實現[J].計算機系統應用,2014,23(4):38-43.

Design and Implementation of Seismic Event Sharing System of Earthquake Administration of Tianjin Municipality Based on PHP

SUN Lu-qiang, LIU Lei, LI Lian-di, BIAN Zhen-fu, LIU Yan-li, ZHU Hong

(Earthquake Administration of Tianjin Municipality, Tianjin 300201, China)

Abstract:Seismic event sharing system of Earthquake Administration of Tianjin Municipality is designed by using PHP language and MySql database design system. The system has the functions of uploading, downloading, ing and drawing the earthquake epicenter distribution map. It can regulate the format of seismic events and change method of data storage. Scientific research personnel in the administration can query and download the historical seismological data by using browser, which is helpful for information sharing.

Key words:PHP language; MySql database; Sharing system; Historical seismological data

作者簡介:第一孫路強(1985—),男,天津市人。2008年畢業于天津理工大學,工程師。

基金項目:中國地震局三結合課題(150205)、測震臺網青年骨干專項(20150402)聯合資助。

收稿日期:2014-09-15

中圖分類號:P315.99

文獻標志碼:A

文章編號:1000-6265(2015)02-0032-06

主站蜘蛛池模板: 国产经典在线观看一区| 国产精品观看视频免费完整版| 亚洲区第一页| 久久美女精品国产精品亚洲| 伊人色在线视频| 成人在线观看不卡| 亚洲AV无码乱码在线观看裸奔 | 免费高清自慰一区二区三区| 国产欧美日韩视频一区二区三区| 国产av剧情无码精品色午夜| 91九色国产porny| 国产迷奸在线看| Jizz国产色系免费| 亚洲精品无码日韩国产不卡| 26uuu国产精品视频| 欧美激情,国产精品| 97超碰精品成人国产| 日日噜噜夜夜狠狠视频| 亚洲福利网址| 成年人视频一区二区| 国产白浆视频| 中文无码精品A∨在线观看不卡| 无码一区二区波多野结衣播放搜索| 日本高清在线看免费观看| 久热re国产手机在线观看| 亚洲精品制服丝袜二区| 久久免费视频播放| 免费在线色| 在线精品亚洲国产| 亚洲AV成人一区二区三区AV| 国产国语一级毛片在线视频| 最新国产你懂的在线网址| 国产激情在线视频| 国产精品19p| 播五月综合| 国产91丝袜| 美女被狂躁www在线观看| 欧美精品在线免费| 国产一级视频久久| 欧美色视频在线| 欧美成人区| 国产在线观看成人91| 久久精品国产电影| 久久久受www免费人成| 国产白浆在线| 日本高清免费不卡视频| 色婷婷在线影院| 日韩在线第三页| 成年人视频一区二区| h网址在线观看| 99热国产这里只有精品9九| 精品亚洲国产成人AV| 成人综合在线观看| 亚洲无码高清免费视频亚洲| 国产地址二永久伊甸园| 五月丁香在线视频| 国产美女在线免费观看| 日本在线欧美在线| 国产精品一区在线麻豆| 91青青草视频在线观看的| 特级aaaaaaaaa毛片免费视频 | 日韩精品欧美国产在线| 日韩毛片基地| 日韩在线播放中文字幕| 伊人久久大香线蕉aⅴ色| 高清无码一本到东京热| 亚洲综合天堂网| 全部毛片免费看| 国产一区成人| 精品一区国产精品| 色综合久久无码网| 亚洲视频影院| 草逼视频国产| 91麻豆国产视频| 亚洲免费成人网| 日韩无码视频播放| 91久久精品国产| 国产导航在线| 国产成人精品一区二区三区| 97视频在线观看免费视频| 免费一级大毛片a一观看不卡| 欧美色视频在线|