孙路强 刘 磊 朱 宏 栗连弟 卞真付 柳艳丽
天津市地震局地震事件共享系统的设计与实现[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上传,实现该功能核心代码如下: