陳道琳
(武漢鐵路局 襄陽供電段,湖北 襄陽441001)
當(dāng)前電子辦公在企業(yè)的應(yīng)用熱浪滔天, 在基層站段的管理體制中,引入一種利用信息平臺來提升各級部門間信息交互的效率、節(jié)省辦公成本、加速標(biāo)準(zhǔn)化管理進程的電子辦公機制是一種促進管理的有效嘗試。
本文對用PHP 和MySQL 兩種開源軟件來實現(xiàn)B/S 結(jié)構(gòu)的信息交互系統(tǒng)展開論述。
本系統(tǒng)以Web 為載體, 允許單位內(nèi)的各個部門 (通常是管理部門)發(fā)布信息,該信息可公開,也可只由指定的部門查看,還可以由相關(guān)部門對信息作出反饋,實現(xiàn)辦公中的信息交互,便于各種信息的備案。
(1)信息錄入。 滿足發(fā)布信息的部門和反饋信息的部門錄入自己的信息。
(2)存取控制。對訪問者的身份進行識別,為用戶提供與他們的身份相符的存取權(quán)限。
(3)用戶管理。 對系統(tǒng)中的用戶信息和相關(guān)的權(quán)限進行管理。
(4)信息管理。 對已錄入的信息(包括反饋信息)進行管理。
(1)查找。 允許用戶按標(biāo)題或信息內(nèi)容查找他們想查看的歷史信息。
(2)指定反饋對象。 允許信息發(fā)布者對他們發(fā)布的信息專門指定應(yīng)該作出反饋的部門。
(3)郵件通知。當(dāng)指定反饋對象后,可以向指定應(yīng)作出反饋的部門發(fā)出相關(guān)的提示郵件,通知用戶應(yīng)該對某個特定的信息作出反饋了。
(4)列表滾動顯示尚未反饋完全的信息和尚未反饋信息的部門。
本系統(tǒng)基于B/S 結(jié)構(gòu),主要的事務(wù)邏輯放在服務(wù)器上實現(xiàn)。 采用PHP 作為開發(fā)語言,用MySQL 作為后臺數(shù)據(jù)庫。
PHP 是一種服務(wù)器端的HTML 嵌入式腳本語言, 它類似于ASP,然而它的不同之處在于PHP 的開放源碼和跨平臺特性。 PHP 語言類似于C 和Perl,具有強大的數(shù)據(jù)庫操作功能,它還提供了面向?qū)ο筇匦?,為快速開發(fā)和軟件復(fù)用提供了很好的支持。
MySQL 是一個多用戶、多線程、跨平臺、開源的SQL 數(shù)據(jù)庫服務(wù)器。與其它大型的數(shù)據(jù)庫如Oracle、DB2、SQL Server 相比,MySQL 自有它的不足之處,如規(guī)模小,功能有限,但這絲毫也沒有減少它受歡迎的程度,因為MySQL 的主要目標(biāo)是快速、健壯和易用。
本系統(tǒng)使用PHP 4.4.0 和MySQL 4.0.28 作為開發(fā)工具,理論上可以在任何支持PHP 和MySQL 的平臺上運行, 這里我們在Windows 2000 Server 和Linux 上都做過測試,運行狀態(tài)良好。
本系統(tǒng)分為前臺用戶端和后臺管理端。 系統(tǒng)結(jié)構(gòu)圖如圖1 所示。
圖1
前臺用戶端主要顯示已發(fā)布的信息列表,能為用戶提供按類型顯示已公布的信息的選擇操作,對尚未反饋完的信息和尚未反饋的部門滾動顯示。 后臺管理端由管理員和信息的發(fā)布者使用,管理員和信息發(fā)布者擁有不同的權(quán)限, 信息發(fā)布者可以發(fā)布并修改自己發(fā)布的信息,還可以指定應(yīng)作出反饋的部門;管理員還另外擁有用戶及部門管理的權(quán)限。
根據(jù)2.1 中對系統(tǒng)結(jié)構(gòu)的分析可知,整個系統(tǒng)需要存儲的數(shù)據(jù)分為信息(包括反饋信息)數(shù)據(jù)、部門數(shù)據(jù)和用戶數(shù)據(jù)三類。 其ER 圖如圖2。
圖2
圖2 中的ER 圖并不是整個系統(tǒng)的完整的實體聯(lián)系模型描述,因為關(guān)于用戶信息的存儲我們會用到php_lib_login (一個PHP 庫) 庫提供的關(guān)于用戶信息,其中部門實體的登錄名會和php_lib_login 庫中的用戶名關(guān)聯(lián),形成外部鍵。
根據(jù)2.2 中對數(shù)據(jù)庫邏輯結(jié)構(gòu)的分析,可知在MySQL 數(shù)據(jù)庫中我們需要建立能存儲信息及其反饋信息、指定反饋記錄、部門信息相關(guān)的表項,幾個主要表的結(jié)構(gòu)如下:
(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
}
本系統(tǒng)程序的幾個主要代碼片斷如下:
(1)全局變量
需要被多個PHP 腳本共同使用的變量和常會被修改的變量放在config.php 文件中,幾個主要的變量如下:
$database /* 數(shù)據(jù)庫名*/
$title_page /* 每頁顯示的信息標(biāo)題數(shù)*/
$login_space /* 用戶登錄后的最大的睡眠時間*/
$lenmax /* 信息內(nèi)容的最大長度*/
$echomax /* 反饋信息內(nèi)容的最大長度*/
$mailhost /* 郵件服務(wù)器地址*/
(2)身份識別
通過獲取遠程訪問者的IP 地址,將這個IP 地址與系統(tǒng)中允許訪問的IP 地址作比較,便能得知遠程訪問者是否在許可的范圍以內(nèi)。 代碼片斷如下:
$ips = get_allow_ip( ); //返回允許訪問的IP 地址列表
$allow = check_ip($_SERVER[‘REMOTE_ADDR’], $ips);
(3)用戶登錄及部門權(quán)限
用戶登錄不只是驗證用戶名和口令,還包括對已登錄用戶進行記帳、對用戶登錄失敗的次數(shù)的統(tǒng)計、對特定地址上的用戶的禁止等操作。 PHP 另一個流行的原因是有很多高質(zhì)量的免費的開源的PHP 庫供我們使用,php_lib_login 就是這樣一個包含了登錄用戶的許多特性的PHP 庫。 使用php_lib_login 來實現(xiàn)用戶登錄的驗證非常簡單,只需調(diào)用一個php_lib_login 庫函數(shù)即可:
lib_login_show_login_form($error);
當(dāng)用戶登錄后,繼續(xù)調(diào)用php_lib_login 的一個庫函數(shù):
$user = lib_login_protect_page( );
即可獲取當(dāng)前已登錄用戶的用戶名并賦值給變量$user, 然后將$user 與plants 表中的loginuser 字段相關(guān)聯(lián)即可獲取當(dāng)前登錄用戶所屬部門的權(quán)限。
(4)發(fā)布信息與反饋
實現(xiàn)發(fā)布信息與反饋時要注意兩點:
①當(dāng)用戶提交時要對
②對正要錄入的信息和反饋的信息進行檢查,不能讓用戶輸入附帶有PHP 腳本的內(nèi)容,因為這可能會對系統(tǒng)造成毀滅性破壞。 我們通過PHP 提供的strip_tags( )函數(shù)來剝離其中的PHP 標(biāo)簽后再將信息插入數(shù)據(jù)庫。
(5)郵件發(fā)送
每個部門對應(yīng)的電子郵件地址存儲在php_lib_login 庫的tbl_users 表中,我們可從中獲取我們需要的郵件地址。
類似于php_lib_login, 我們通過引入一個第三方的PHP 庫——PHPMailer 來發(fā)送電子郵件通知被指定的部門對指定的信息作出反饋。 發(fā)送郵件的代碼片斷如下:
$mail = new PHPMailer; //建立一個新的PHPMailer 對象
$mail->IsSMTP( ); //使用SMTP 發(fā)送郵件
$mail->Host = $mailhost; //設(shè)置郵件服務(wù)器
$mail->Subject = $title; //設(shè)置郵件標(biāo)題
$mail->IsHTML(true); //使用HTML 格式
$mail->Body = html_body( ); //設(shè)置郵件內(nèi)容
$mail->send( ); //發(fā)送郵件
本系統(tǒng)在我們單位已經(jīng)穩(wěn)定運行了五個月,現(xiàn)在主要為安全管理部門發(fā)布在檢查工作中發(fā)現(xiàn)的關(guān)于安全問題的信息,并督令相關(guān)部門整改作出回應(yīng)而使用。這是用信息手段改進傳統(tǒng)的安全檢查通報工作的一個有益的嘗試,簡化了作業(yè)流程,節(jié)約了辦公成本,提高了辦公效率。
[1]Luke Welling, Laura Thomson. PHP 與MySQL Web 開發(fā)權(quán)威指南[M].中國電力出版社,2002.
[2]Bryan Pfaffenberger, Bill Karow. HTML 4 實用大全[M].中國水利水電出版社,2001.