APP下载

基于MySQL数据库的海上油田网络论坛设计

2019-07-11

中国海洋平台 2019年3期
关键词:帖子页面油田

(中海油能源发展股份有限公司 工程技术分公司, 天津300452)

0 引 言

由于海上油田生产环境的特殊性,现场工作人员需长期在远离陆地的海上平台工作,并且现场及陆地需要电气、仪表、机械、安全等各专业人员协同作业。目前,各专业工作人员与陆地管理人员的日常工作沟通只能依靠电话或邮件完成,不能实现在同一网络平台上的即时沟通,降低了工作时效,因此有必要基于MySQL数据库和计算机网络架设一个海上油田网络论坛,在确保信息安全的同时,为海上平台各专业协同工作和问题沟通提供开放、便捷、及时的交流环境。网络论坛是互联网上的一种电子信息服务系统,它提供一块公共的电子白板,每个用户都可以在其中发布信息或提出看法。像日常生活中的黑板报一样,网络论坛按不同的主题分成很多个布告栏,使用者可以阅读他人关于某个主题的最新看法,也可以将自己的想法毫无保留地贴到公告栏中。海上油田网络论坛就是一个基于数据库和互联网技术构建的用于海上油田与陆地日常工作和技术问题交流的网络平台。其软件结构形式就是基于数据库技术构建的一套具有交互功能的动态网页系统。目前,制作动态网页的主流技术有很多,如ASP、PHP、JSP等。本文主要介绍在Windows系统和Apache服务器环境下利用HTML语言、PHP技术和MySQL数据库进行海上油田网络论坛的设计以及快速搭建。

1 海上油田网络论坛开发环境

1.1 主要开发工具

论坛的设计环境在Windows操作系统下搭建,采用Apache服务器作HTTP服务器[1],花生壳软件作动态IP域名解析,域名主要为网上浏览作准备。论坛使用MySQL数据库作后台支持,使用phpMyAdmin软件作MySQL数据库的管理工具[2],使用FrontPage和Dreamweaver软件作论坛的HTML页面设计,使用UltraEdit软件作PHP程序编写[3],接着规划并设计海上油田生产工作的相关讨论版块,最终完成海上油田生产工作论坛的设计,在整体优化后,测试论坛并投入使用。

开发工具的具体信息如下:(1) PHP。一种在服务器端执行的嵌入HTML文档的脚本语言,版本号:5.1.2。(2)MySQL。一个数据库服务器软件,版本号:5.0.19。(3)Apache。一个HTTP服务器软件,版本号:2.0.55。(4)花生壳。一套集桌面式域名管理与动态域名解析等功能为一体的客户端软件,版本号:3.5。(5)phpMyAdmin。用于管理整个MySQL服务器,也可以管理单个数据库,版本号:2.8.0.1。(6)FrontPage。一款网页设计软件,版本号:2003。(7)Dreamweaver。一款网页设计软件,版本号:8.0。(8)UltraEdit。一个文本编辑器,可以直接编辑十六进制文件,版本号:12.00a。

1.2 开发环境

图1 论坛系统的基本结构框图

目前流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。这4个软件都遵循GPL的开放源码软件,使用这种方式可建立一个稳定的网站系统。需注意的是,论坛在设计之初须在计算机中安装并配置一个设计环境。在硬件方面仅需1台计算机,普通办公计算机的硬件配置即可满足要求,但必须能够接入公司网络。由于Windows系统更易于日常操作,因此本次设计在Windows+Apache+PHP+MySQL环境下完成。

2 海上油田网络论坛设计

2.1 海上油田网络论坛结构分析

分析海上油田作业人员的需求,将网络论坛分为用户管理、信息展示、编辑操作、数据统计等4个功能模块。图1为论坛系统的基本结构框图。

(1) 用户管理模块。针对海上油田生产作业人员的组织架构,将用户管理模块分为用户注册、登录、注销、在线状态等4个基本功能,可在论坛首页上查看人员在线或离线状态。注册信息包括姓名、职务岗位、所属专业、办公室、房间号、办公电话、邮箱等。注册信息示例如表1所示。

表1 注册信息示例

(2) 信息展示模块。主要由单井作业项目、专业技术讨论、日常生产交流等3个子板块构成。单井作业项目板块以井号划分子板块,每个单井子版块包括钻完井、修井、措施作业等3个主题。当作业项目开始时,项目负责人可在该主题下发布相关作业信息,并将与该作业相关的专业人员列入此主题下的讨论组中,当此主题下有新消息发布时,直接在组内成员的论坛页面中发出新消息提醒,组内成员可直接点击消息进入该主题进行交流。专业技术讨论板块主要以各专业划分板块,包括安全、电气、仪表、机械、工艺流程、生产。各专业技术人员可针对日常工作中遇到的专业技术问题自由发布主题进行讨论交流,也可将一些专业知识文档上传到此板块供大家学习。日常生产交流板块是以平台为单位建立的工作板块,所有与该平台生产生活相关的工作人员都可在此板块发布信息。该板块主要用于发布一些通知公告、日常工作安排等信息,帮助油田管理者与各专业人员在日常生产生活中及时有效地沟通。

(3) 编辑操作模块。主要为所有论坛用户提供信息查询、发布、编辑修改等功能。在信息发布功能中还包括文档、图片、网址链接、邮箱链接等信息的上传发布。

(4) 数据统计模块。主要利用MySQL数据库对论坛用户信息、发布的信息提供存储和查询功能。

2.2 海上油田网络论坛功能设计

本论坛设计共编写17个网页文件,其中3个为html文件、14个为php文件。具体功能界面设计如下:

(1) 论坛界面。采用框架页方式进行设计。首页左侧为目录窗口,嵌入mulu.php文件,显示用户登录状态、论坛版块和功能选项等。论坛主版块按海上油田生产工作类别分为单井作业项目、专业技术讨论、日常生产交流,其中单井作业项目板块包括钻完井、修井、措施作业等3个主题,专业技术讨论板块包括安全、电气、仪表、机械、工艺流程和生产等6个主题。右侧为浏览窗口,嵌入window.php文件显示左侧目录的相应内容。

(2) 会员功能。会员功能包括用户的注册、登录、离开等。会员功能文件信息如表2所示。

表2 会员功能文件信息

(3) 用户登录状态显示。用户登录状态将在目录页中显示。

(4) 论坛数据统计。包括注册用户资料统计、帖子数量统计等。论坛数据统计文件为tongji.php。

(5) 分类版块显示模块。包括论坛的版块类别(mulu.php)、版块中的帖子主题显示(bantitle.php)、主题下的帖子内容显示(index.php)。

(6) 发帖、回复、修改。各功能文件信息如表3所示。

表3 发贴、回复、修改功能文件信息

(7) 论坛版权信息。显示论坛的版本及版权信息,包括论坛管理员的联系方式等。一个功能强大的论坛,不但需拥有一般论坛所应具有的基本功能,而且还应扩展一些辅助功能,如自定义风格界面、设立发帖积分等。

图2 论坛系统与数据库和服务器之间的关系图

2.3 MySQL数据库建设

论坛将存储大量的文字信息,数据库建设也是论坛设计的重点。论坛所有的资源可被有秩序地分类存储在数据库中,以便随时调用。通过数据库可有效管理论坛数据,方便进行数据的写入与读取,并且能够提高数据的读写效率。用户注册和发表帖子是对数据库资料进行写入和修改操作,登录和浏览帖子是对数据库资料进行查询和读取操作。论坛系统与数据库和服务器之间的具体关系如图2所示。本论坛采用MySQL数据库作支持。

图3 PhpMyadmin的主界面

论坛数据库设计可使用用户数据表“user”和帖子数据表“gbook”完成。使用phpMyAdmin可便捷地建立所需数据库和数据表,其步骤是:在浏览器中输入“http://localhost/phpmyadmin/”进入phpMyAdmin的主界面,如图3所示;在“创建一个新的数据库”下方空格输入所需创建的数据库名字,点击创建按扭,本论坛创建一个名为“data”的数据库;点击左侧目录栏中刚创建的数据库,继续创建数据表,在创建表的输入框中输入表的名称和“Number of fields”字段数目即可创建一个新表,本论坛一共创建两个数据表,分别是“user”表和“gbook”表;创建数据表后,还需为每个字段设置其所记录数据的类型、长度、属性等。

“user”表用于记录注册用户的资料,包含10个字段。表4为“user”表的各字段名称、类型、长度和功能。

表4 user表字段属性

“gbook”表用于记录论坛帖子的数据,包含10个字段。表5为“gbook”表的各字段名称、类型、长度和功能。

表5 gbook表字段属性

两个表中的“id”字段的额外设置均为“auto_increment”,表示自增。字段类型有容量不同的“INT”整数型、“VARCHAR”字符串型、“TEXT”文本型、“DATETIME”日期时间型等。至此,论坛数据库建立完成。

2.4 论坛首页及用户管理模块设计

图4 论坛首页

2.4.1 论坛首页设计

论坛首页index.htm文件采用框架页设计,并放置在网站根目录下,其他文件全部放置在网站根目录的“gb”文件夹内。论坛首页的左侧嵌入目录页,即mulu.php文件,目录页显示论坛各版块及各功能页面的链接,并且使用Cookie技术在目录页中显示用户的登录状态。首页界面设计如图4所示。

浏览器与Web服务器之间使用HTTP协议进行通信,当某个用户发出页面请求时,Web服务器只进行简单响应,然后关闭与该用户的连接。 当一个请求发送到Web服务器时,无论其是否是第一次来访,服务器都会将其当作第一次来访对待。为了弥补这个缺陷,Netscape开发了Cookie工具保存某个用户的识别信息。Cookie是一种Web服务器通过浏览器在访问者的硬盘上存储信息的手段[4]。Netscape Navigator使用一个名为cookies.txt的本地文件保存从所有站点接收的Cookie信息;IE浏览器把Cookie信息保存在 “C:windowscookies”目录下。当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,以识别这个用户。Cookie给网站和用户带来的便利很多:

(1) Cookie能使站点跟踪特定访问者的访问次数、最后访问时间以及访问者进入站点的路径。

(2) Cookie能告诉在线广告商广告被点击的次数,从而可以更精确地投放广告。

(3) Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。

(4) Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务。

在PHP中使用“setcookie(‘ncookie’,"$name")”函数可将登录的用户名设置成名为ncookie的Cookie,这样在需要用到Cookie的页面中使用“$ncookie=$_cookie[‘ncookie’]”便可调用已被设置的Cookie。

论坛首页的右侧嵌入浏览窗口页window.php,其中包含论坛登录页面welcome.htm和论坛帖子主题页面bantitle.php,页面嵌套采用require()函数实现。

2.4.2 用户注册页面设计

用户的注册需要两个文件实现,即注册页面和执行页面。注册页面是一个HTML表单页面,命名为zhuce.htm,表单主要包括:姓名、密码、性别、QQ或MSN、Email。HTML表单语句是,所有表单语句都需放在这之间[5];例如:

,其中action的值为表单内容的传递位置,input为1个表单,type为表单属性,常见的有文本text、密码password、提交submit、重置reset等。

所有表单内容被传递到zhuceinput.php文件中进行处理。zhuceinput.php文件需对表单内容的字符长度、用户名是否被注册、密码输入是否一致等作判断。判断字符串长度需使用计算字符串长度的函数strlen()和if…else语句;判断用户名是否被注册需查询数据库的“user”表中的“name”字段,并使用while循环语句进行逐项查询。当用户输入内容无误时,将资料写入数据库的“user”表中,其中包括非输入内容,如注册IP和注册时间等信息。由于以后将有很多文件需要查询和写入数据库,因此可将连接数据库的程序写入1个php文件,即连接数据库的头文件,命名为db_data.inc.php,方便以后直接在程序中调用。

2.4.3 用户登录页面设计

用户登录页面文件被命名为welcome.htm,其主要内容为一个输入用户名和密码的表单,登录页面被包含在论坛首页中。用户所输入的用户名和密码将被传递到denglu.php文件中作处理。denglu.php文件需对用户名是否已经登录、用户名是否是已注册用户和密码输入是否正确作判断。这里仍需使用if…else语句和while语句,并且需查询“user”表中的“name”字段,在检查用户名是否已经登录时需检查Cookie是否存在。如果用户登录成功则需设定Cookie值,并刷新左侧目录页以显示刚刚登陆的用户名的在线状态,用“”实现,该刷新语句并不是PHP语言,其中contents为将被自动刷新的框架页名称。

2.4.4 用户注销处理

当正在登录状态的用户点击离开论坛时,论坛需对用户做注销处理,设计一个名为exit.php的文件。用户点击离开则链接到exit.php文件,只需要将Cookie的值清空并自动刷新目录页即可,清空Cookie用“setcookie(‘ncookie’)”实现,其中ncookie为登录时设置的Cookie名称。

2.5 主题及帖子内容显示模块设计

图5 主题显示界面

(1) 帖子主题显示页面设计。帖子主题显示页面文件被命名为bantitle.php,主要显示:主题的标题、主题的作者、最后回复者、发表新帖的链接,并且实现最后发表的帖子和最新被回复帖子的置顶。与帖子有关的显示内容都从数据库中的“gbook”表查询。主题显示界面如图5所示。

(2) 帖子内容显示页面设计。帖子内容显示页面文件被命名为index.php,主要显示:帖子标题、帖子的作者、回复帖子的链接。帖子的标题、内容、作者信息都需从数据库中的“gbook”表查询,将回复的帖子和所回复的主题帖子内容显示在同一个页面的实现方法:在回复帖子时,将所回复的主题帖子的“idp”字段内容转存入回复帖子的“titleid”字段,这样只需查询并显示“idp”字段值和“titleid”值均为主题帖的“idp”字段的内容即可。帖子还有修改功能,但只允许修改当前登录用户所写的帖子,此时只需判断Cookie 与帖子的“name”字段是否一致即可。

2.6 发表回复及修改帖子模块设计

(1) 发表帖子和回复帖子页面设计。发表帖子和回复帖子的页面基本相同,首先判断用户是否登录。页面只需要两个表单,即帖子主题和帖子内容。两个页面的主要不同是发表帖子将“gbook”表中的“titleid”字段值设置为0,回复帖子将“titleid”字段设置为所回复主题的“idp”字段值。这样就可以将“titleid”值作为查询数据库的依据以区别主题帖与回复帖。发表帖子文件被命名为liuyan.php,回复帖子文件被命名为huifu.php。

(2) 发表帖子和回复帖子处理程序设计。发表帖子和回复帖子均使用input.php文件,这个文件首先将传递来的“titleid”值写入相应帖子的“titleid”字段,然后通过“titleid”字段的值判断帖子是发表的新主题帖还是回复帖,再作相应处理。如果是发表的新帖子,主要将此帖的“id”字段值写给“idp”字段保存。如果是回复的帖子,先将此帖的“id”字段值写给“idp”字段保存,然后将此回复帖的“id”字段值加1后写给所回复的主题帖子的“id”字段,这样保证刚刚回复的主题帖子的“id”值最大,主题帖按照“id”字段值由大到小排列,解决回复后主题置顶的问题。

(3) 修改帖子的页面及处理程序设计。修改帖子页面也是一个表单页面,只需将数据库查询出的信息设置为表单的初值,修改后提交,程序连接到修改处理程序,进行数据库资料的修改。修改帖子页面文件命名为xiugai.php,修改处理程序文件命名为xiugaiok.php。

3 结 论

海上油田网络论坛设计为海洋石油平台工作人员构建了公司内部的网络信息交流平台,在确保信息安全的同时实现了多用户同时在线即时交流。在系统设计之初的环境搭建过程中,需注意软件的正确设置,并且在编程过程中需随时注意所用语句和语法的正确性,否则不但会降低程序执行效率,而且会增加查错难度。本论坛设计能够实现海上油田各专业人员的日常工作沟通所需的基本功能,包括用户注册、登录、发帖、回帖、修改帖等。帖子回复置顶、用户登陆认证等问题也通过程序得到了有效解决。用户在此论坛上能够找到与各自在海上油田生产工作相关的讨论版块,随时进行问题讨论。

猜你喜欢

帖子页面油田
刷新生活的页面
答案
我国海上油田新发现
让Word同时拥有横向页和纵向页
油田工人
暴力老妈
中小型油田修井机效率提升改造及应用
光泽or油光?向夏日“大油田”sayno
高手是这样拍马屁的
我是怎样在坛子里堕落的