APP下载

用开源软件构建牵引电气安全检查信息交互系统

2014-12-23陈道琳

科技视界 2014年14期
关键词:邮件办公部门

陈道琳

(武汉铁路局 襄阳供电段,湖北 襄阳441001)

0 引言

当前电子办公在企业的应用热浪滔天, 在基层站段的管理体制中,引入一种利用信息平台来提升各级部门间信息交互的效率、节省办公成本、加速标准化管理进程的电子办公机制是一种促进管理的有效尝试。

本文对用PHP 和MySQL 两种开源软件来实现B/S 结构的信息交互系统展开论述。

1 需求分析

1.1 项目概述

本系统以Web 为载体, 允许单位内的各个部门 (通常是管理部门)发布信息,该信息可公开,也可只由指定的部门查看,还可以由相关部门对信息作出反馈,实现办公中的信息交互,便于各种信息的备案。

1.2 基本功能

(1)信息录入。 满足发布信息的部门和反馈信息的部门录入自己的信息。

(2)存取控制。对访问者的身份进行识别,为用户提供与他们的身份相符的存取权限。

(3)用户管理。 对系统中的用户信息和相关的权限进行管理。

(4)信息管理。 对已录入的信息(包括反馈信息)进行管理。

1.3 高级功能

(1)查找。 允许用户按标题或信息内容查找他们想查看的历史信息。

(2)指定反馈对象。 允许信息发布者对他们发布的信息专门指定应该作出反馈的部门。

(3)邮件通知。当指定反馈对象后,可以向指定应作出反馈的部门发出相关的提示邮件,通知用户应该对某个特定的信息作出反馈了。

(4)列表滚动显示尚未反馈完全的信息和尚未反馈信息的部门。

1.4 工具的选择

本系统基于B/S 结构,主要的事务逻辑放在服务器上实现。 采用PHP 作为开发语言,用MySQL 作为后台数据库。

PHP 是一种服务器端的HTML 嵌入式脚本语言, 它类似于ASP,然而它的不同之处在于PHP 的开放源码和跨平台特性。 PHP 语言类似于C 和Perl,具有强大的数据库操作功能,它还提供了面向对象特性,为快速开发和软件复用提供了很好的支持。

MySQL 是一个多用户、多线程、跨平台、开源的SQL 数据库服务器。与其它大型的数据库如Oracle、DB2、SQL Server 相比,MySQL 自有它的不足之处,如规模小,功能有限,但这丝毫也没有减少它受欢迎的程度,因为MySQL 的主要目标是快速、健壮和易用。

1.5 运行环境

本系统使用PHP 4.4.0 和MySQL 4.0.28 作为开发工具,理论上可以在任何支持PHP 和MySQL 的平台上运行, 这里我们在Windows 2000 Server 和Linux 上都做过测试,运行状态良好。

2 系统设计

2.1 系统结构设计

本系统分为前台用户端和后台管理端。 系统结构图如图1 所示。

图1

前台用户端主要显示已发布的信息列表,能为用户提供按类型显示已公布的信息的选择操作,对尚未反馈完的信息和尚未反馈的部门滚动显示。 后台管理端由管理员和信息的发布者使用,管理员和信息发布者拥有不同的权限, 信息发布者可以发布并修改自己发布的信息,还可以指定应作出反馈的部门;管理员还另外拥有用户及部门管理的权限。

2.2 数据库设计

根据2.1 中对系统结构的分析可知,整个系统需要存储的数据分为信息(包括反馈信息)数据、部门数据和用户数据三类。 其ER 图如图2。

图2

图2 中的ER 图并不是整个系统的完整的实体联系模型描述,因为关于用户信息的存储我们会用到php_lib_login (一个PHP 库) 库提供的关于用户信息,其中部门实体的登录名会和php_lib_login 库中的用户名关联,形成外部键。

3 系统实现

3.1 MySQL 数据库的结构

根据2.2 中对数据库逻辑结构的分析,可知在MySQL 数据库中我们需要建立能存储信息及其反馈信息、指定反馈记录、部门信息相关的表项,几个主要表的结构如下:

(1)maintext /* 信息记录*/

{

id varbinary, type tinyint, allow tinyint, time varbinary, ipaddr varbinary, plant tinyint, content blob

}

(2)slavetext /* 反馈信息记录*/

{

slaveid varbinary, id varbinary, plant tinyint, time varbinary,ipaddr varbinary, content blob

}

(3)plants /* 部门信息记录*/

{

sid tinyint, sname varbinary, pid tinyint, pname varbinary,loginuser varbinay, inuse tinyint default 1, priviledge tinyint

}

(4)feedback /* 指定反馈的记录*/

{

id varbinary, dept tinyint, plant tinyint, send tinyint default 0,back tinyint default 0

}

3.2 编程实现

本系统程序的几个主要代码片断如下:

(1)全局变量

需要被多个PHP 脚本共同使用的变量和常会被修改的变量放在config.php 文件中,几个主要的变量如下:

$database /* 数据库名*/

$title_page /* 每页显示的信息标题数*/

$login_space /* 用户登录后的最大的睡眠时间*/

$lenmax /* 信息内容的最大长度*/

$echomax /* 反馈信息内容的最大长度*/

$mailhost /* 邮件服务器地址*/

(2)身份识别

通过获取远程访问者的IP 地址,将这个IP 地址与系统中允许访问的IP 地址作比较,便能得知远程访问者是否在许可的范围以内。 代码片断如下:

$ips = get_allow_ip( ); //返回允许访问的IP 地址列表

$allow = check_ip($_SERVER[‘REMOTE_ADDR’], $ips);

(3)用户登录及部门权限

用户登录不只是验证用户名和口令,还包括对已登录用户进行记帐、对用户登录失败的次数的统计、对特定地址上的用户的禁止等操作。 PHP 另一个流行的原因是有很多高质量的免费的开源的PHP 库供我们使用,php_lib_login 就是这样一个包含了登录用户的许多特性的PHP 库。 使用php_lib_login 来实现用户登录的验证非常简单,只需调用一个php_lib_login 库函数即可:

lib_login_show_login_form($error);

当用户登录后,继续调用php_lib_login 的一个库函数:

$user = lib_login_protect_page( );

即可获取当前已登录用户的用户名并赋值给变量$user, 然后将$user 与plants 表中的loginuser 字段相关联即可获取当前登录用户所属部门的权限。

(4)发布信息与反馈

实现发布信息与反馈时要注意两点:

①当用户提交时要对