基於PHP的電子電工試驗教學網站設計

 

 

 

 

基於PHP的電子電工試驗教學網站設計

Design of Electrical and Electronic Lib Center Website on the Basis of Php

 

 

 

 

 

 

 

 

 

 

 

 

        03級電信工2     

             許家新            

指導教師         王洪君          

 

 

 

 

目錄

2 摘要----------------------------------------------------------4

3系統方案------------------------------------------------------4

3.1功能與指標----------------------------------------------4

3.2方案選擇與論證------------------------------------------4

系統組成框圖--------------------------------------------4

開發平臺介紹------------------------------------------------------------------4

服務器的選擇---------------------------------------------------------4

數據庫的選擇---------------------------------------------------------5

網站設計語言的選擇---------------------------------------------------------6

3.3系統實現--------------------------------------------6

3.3.1 網站結構設計-----------------------------------------6

3.3.2 平臺的搭建-----------------------------------------6

3.3.3新聞發佈網頁的實現-----------------------------------19

3.3.4實驗室預約網頁的實現

3.3.5論壇的實現

4 功能及性能測試

附錄:

參考書目

 

 

 

 

 

 

 

 

 

 

2 摘要

本設計在apache服務器上搭建了動態網站,具有新聞發佈功能並且集成了論壇系統。佈局條理,頁面清新,運行可靠。本設計在apache上安裝了MYSQL用來存儲動態網站的數據信息,並且編寫PHP代碼實現與瀏覽者的前臺交互。實現了新聞發佈實驗室預約等功能。

ABSTRACT 

On the basis of apache server, this website realizes the new's release,and integrates a forum.In this design I install a database called mysql on the server of apache.it can store the data in the dynamic website.The website is designed to communicate with the browser with the code of PHP.The browser can communicate in the forum and reserve the library.

關鍵詞:apache  mysql  PHP   動態網站 

3 系統方案

3.1實現功能與指標

對於工科專業,實踐是第一位的,建立電子電工實驗教學中心是老師和學生的迫切要求,而在信息時代,互聯網爲教學和學習提供了一個更加方便和廣闊的空間,爲此,需要設計一個爲老師和同學服務的電子電工實驗教學中心網站。本設計圍繞這個目的展開,製作了動態網站,爲師生提供了一個網上學習交流的平臺。在本網站上學院可以發佈新聞動態,老師可以提供課間下載,同學們可以預約實驗室、在論壇上討論問題,能夠形成一個互動的學習平臺。有利於教學和學習的進行。除上述功能外,本網站的性能具有如下特點:1.網站安全性高,能抵禦基本的網絡攻擊2.佔用服務器資源少3.運行速度快。

3.2方案選擇與論證

系統組成框圖:

Mysql

Apache服務器

 

Php網頁

LinuxWindows

開發平臺介紹

本網站使用Linux+Apache+MySQL+PHP的開發平臺,這是目前流行的動態網站設計平臺組合,有較高的效率和安全性。Linux平臺在安全性、穩定性都相當出色,適合做網站服務器的操作系統。Apache是應用最廣泛的服務器之一,它的特點是簡單、速度快、性能穩定,配合MySQLPHP 使用能夠獲得網站穩定性和效率的最佳結合。同時Apache+MySQL+PHP的開發平臺具有很好的移植性,相應的軟件也都有Windows下的版本。因此,本網站可以很輕鬆的移植到Windows NT下。

服務器的選擇:

Apache是世界使用排名第一的Web服務器。它可以運行在幾乎所有廣泛使用的計算機平臺上。

Apache源於NCSAhttpd服務器,經過多次修改,成爲世界上最流行的Web服務器軟件之一。Apache是自由軟件,所以不斷有人來爲它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,並可做代理服務器來使用。

本來它只用於小型或試驗Internet網絡,後來逐步擴充到各種Unix系統中,尤其對Linux的支持相當完美。到目前爲止Apache仍然是世界上用的最多的Web服務器,市場佔有率達60%左右。它的成功之處主要在於它的源代碼開放、有一支開放的開發隊伍、支持跨平臺的應用(可以運行在幾乎所有的UnixWindowsLinux系統平臺上)以及它的可移植性等方面。

數據庫的選擇

MySQL是一個多用戶、多線程的SQL輕量級數據庫。SQL (Structured Query Language結構化查詢語言)是目前使用最廣的並且是標準的數據庫語言。SQL語言使得存取或更新信息變得十分容易。MySQL的快速和靈活性足以滿足一個網站的信息管理工作。使用PHPMySQL這兩樣東西加在一起,對於開發數據驅動的網站這項工作而言是最佳組合。

網站設計語言的選擇

PHP 是一種流行的開放源代碼的編程語言,主要用於開發服務器端應用程序及動態網頁。PHP是一種嵌入HTML頁面中的腳本語言。 PHPWeb服務器上運行,當PHP腳本被客戶端請求時,被請求的程序開始執行,並把執行的結果返回給客戶端的網頁瀏覽器。發送給客戶端瀏覽器的內容是普通的HTML文本,不包含PHP代碼。這是與嵌入HTML的客戶端腳本(例如JScript/VBScript等)的最主要的區別。

3.4系統軟件實現

3.3.1 網站結構設計

根據需求,網站設計成具有如下的板塊:

中心介紹:主要介紹中心的概況

實驗平臺:包括學院的各個實驗室的師資隊伍,課程介紹,實驗設備,規章制度

網絡課堂:包括平臺資料,教學課件,教學視頻,疑難解析,電子書籍,應用軟件,芯片手冊。

科技創新:創新要聞,學生作品,創新文章

實驗室預約:用戶填表提交即可預約

師生論壇

 

3.4.2 平臺的搭建

   1LinuxLinux+Apache+MySQL+PHP平臺搭建

Fedora Core4上安裝了Apache+Mysql+PHP,大體經過了以下的3個步驟:  

安裝apache2

下載官方推薦的穩定版本httpd-2.2.3.tar.gz 輸入如下的命令進行安裝:

#./configure --prefix=/usr/local/apache2 --enable-module=alias  --enable-module=most --enable-module=vhost_alias --enable-shared=vhost_alias --enable-module=so --enable-shared=max
  # make;

make install

安裝MySQL

下載目前最新穩定版本mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
無需安裝,解壓後移至/usr/local/mysql.輸入如下命令進行相應的配置:

# groupadd mysql #建立mysql

# useradd mysql -g mysql #建立mysql用戶並且加入到mysql組中

# cd /usr/local/mysql

然後設置權限

# chown -R root . #設定root能訪問/usr/local/mysql

# chown -R mysql data #設定mysql用戶能訪問/usr/local/mysql/data ,裏面存的是mysql的數據庫文件

# chown -R mysql data/. #設定mysql用戶能訪問/usr/local/mysql/data下的所有文件

# chown -R mysql data/mysql/. #設定mysql用戶能訪問/usr/local/mysql/data/mysql下的所有文件

# chgrp -R mysql . #設定mysql組能夠訪問/usr/local/mysql

運行mysql:

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

修改root密碼,默認爲空:

/usr/local/mysql/bin/mysqladmin -u root password 'newpassword'

MySQL安裝完成

安裝PHP
下載最新穩定版本php-5.1.6.tar.gz

1. 安裝zlib (安裝libpnggd前需要先安裝zlib)

 # tar zxvf zlib-1.2.3.tar.gz

# cd  zlib-1.2.3

# ./configure

# make;make install

2.安裝libpng,安裝步驟如下:

# tar zxvf libpng-1.2.12.tar.gz

# cd libpng-1.2.12

# ./configure

# make;make install

3. 安裝freetype

# tar zxvf freetype-2.2.1.tar.gz

# cd freetype-2.1.10

# ./configure --prefix=/usr/local/freetype

# make;make install

4. 爲了支持php頁面的jpeg圖片的顯示,必須安裝jpeg

 # tar zxvf jpegsrc.v6b.tar.gz

# cd jpeg-6b

# mkdir /usr/local/jpeg
# mkdir /usr/local/jpeg/bin

# mkdir /usr/local/jpeg/lib

# mkdir /usr/local/jpeg/include

# mkdir /usr/local/jpeg/man

# mkdir /usr/local/jpeg/man/man1

# ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static

# make;make install

5. 正式安裝php

# tar zxvf php-5.1.6.tar.gz

# cd php-5.1.6

#./configure--prefix=/usr/local/php5--with-apxs2=/usr/local/apache2/bin/apxs--with-mysql=/usr/local/mysql--with-gd --with-zlib --with-png--with-jpeg --with-freetype--enable-sockets --with-iconv--enable-mbstring --enable-track-vars--enable-force-cgi-redirect--with-config-file-path=/usr/local/php5/etc

6.整合phpapache,輸入如下命令進行整合:

cp php.ini-dist  /usr/local/php5/etc/php.ini

vi /usr/local/php5/etc/php.ini

extension=php_mysql.dll前面的#去掉

7. 安裝ZendOptimizer

 # tar zxvf ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.0.1-linux-glibc21-i386
# ./install.sh
安裝操作: [ok] -> [EXIT] -> [YES] -> [/httpd/zend] ->[/httpd/apache/conf] -> [yes] -> [OK] -> [OK] -> [NO]
在平臺的搭建過程中遇到的一些錯誤,查閱了相關的資料解決這些問題:
1.php5
configure時提示:configure: error: mysql configure failed.,發現是configure命令的參數不正確去掉--with-mysql參數可以安裝,php5將無法連接mysql,頁面提示爲:Fatal error: Calltoundefined function mysql_connect()。查閱了一下,發現是mysql5對應的版本不對導致的,換個版本就可以了。

2.重裝mysql後啓動出錯,提示:
Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/xmcncn.pid
061103 15:25:32  mysqld ended

輸入瞭如下命令後問題得到解決:
touch /tmp/mysql.sock
killall -9 mysqld
/usr/local/mysql/bin/mysqld_safe -user=mysql &
成功啓動

2WindowsApache+MySQL+PHP平臺搭建

Linux上的Apache中運行PHP效率很高但是需要Linux軟件安裝的相關知識,而且LinuxApacheMySQLPHP的版本有任意兩者不匹配就會造成平臺無法工作。因此很多人選擇在Windows下進行PHP的開發與調試,成功之後再將其部署到Linux上面。本設計最終要移植到Windows NT平臺上,所以進行了Windows下的平臺搭建。

需要安裝的各個軟件的版本爲:

apache_2.2.4-win32-x86-no_ssl

mysql-essential-5.1.15-beta-win32

php-5.2.1-Win32

ZendOptimizer-3.2.2-Windows-i386.exe

到軟件的官方網站上下載各種軟件

安裝配置Apache

Apache默認監聽80端口,要防止與其他的WEB服務器發生衝突,如果服務器上有IIS服務器,就應該檢查兩個服務器監聽的端口是否衝突。

安裝配置Mysql

  與普通Windows下的應用程序一樣運行EXE文件進行安裝。安裝後要對Mysql進行配置,運行Mysql Server Instance Configuration Wizard.需要鉤選上“Include Bin Directory in Windows PATH ,表示把MysqlBIN目錄設置到PATH環境變量中。而且默認選中“Install as Windows Service”。

安裝配置PHP

將下載的php-5.2.1-Win32.zip解壓並且拷貝到C盤。產生php.ini文件並且部署相應的dll文件:找到PHP文件夾下的php.ini-dist文件改名爲php.ini並複製到Windows系統目錄下。將php目錄下的php5ts.dll 拷貝到system32文件夾下。 要使ApachePHP的組合能夠使用必須修改http.conf文件,這是在Windows下搭建該開發平臺比較複雜的一步,步驟如下:

http.conf文件中將DocumentRoot改成我設計的網站的根目錄。

http.conf文件中DirectoryIndex index.html index.html.var後面添加上index.php使PHP文件也可以做默認頁面。

Apache中模塊化安裝PHP

http.conf文件中加入LoadModule ssl_modules/mod_ssl.soAddType application/x-http-php .php

這樣平臺的搭建工作就完成了。Apache服務器能夠正常解析我設計的網站根目錄下的PHP文件。

3.3.3新聞發佈網頁的實現

新聞發佈網頁大體包括幾個兩個部分:向數據庫中添加新聞的頁面和新聞顯示頁面。向數據庫中添加新聞的頁面主要爲網站維護者提供,用於添加新聞,必須通過帳號才能訪問。新聞顯示頁面供論壇訪問者瀏覽新聞。

在進行新聞發佈之前首先要創建一個數據庫和列表,在MySQL中輸入如下命令:

CREATE DATABASE `news` ;//創建一個名字爲“news”的數據庫

CREATE TABLE `dongtaixinxi` (

  `yd631_id` int(11) NOT NULL auto_increment,

  `yd631_title` varchar(50) default NULL,

  `yd631_time` date default NULL,

  `yd631_name` varchar(50) default NULL,

  `yd631_content` text,

  PRIMARY KEY  (`yd631_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;

創建名字爲“dongtaixinxi”的表,該表有五個field分別爲:

 `yd631_id`(整型非空自動遞增)

  `yd631_title` 50字的字符型,默認爲空)

  `yd631_time` (日期型,默認爲空)

  `yd631_name` 50字的字符型,默認爲空)

  `yd631_content` (文本型),

網站的新聞添加、編輯、刪除等操作就是對該表進行操作。

網站的主頁上列出了最近一個月發佈的新聞的標題,網頁中打開數據庫檢索新聞的主要代碼如下所示

  <td height="260" valign="top"><span class="style2"><span class="style3"><?php  $db=mysql_pconnect($servname,$sqlservname,$sqlservpws) or die("數據庫連接失敗");

    // mysql_select_db($sqlname,$db);

    $sql = "select * from $sqltable order by yd631_id desc ";

    $result =mysql_db_query($sqlname,$sql);

    $i=0;

    while(($rs =mysql_fetch_array($result))&&($i<8))

      {?>

          <br><div align="left" ><a href="news/content.php?id=<?=$rs[yd631_id]?>" class="t2">

<?echo&nbsp;&nbsp;$rs[yd631_title]&nbsp;&nbsp;";$i++;?><?=$rs[yd631_time]?></a></div>

     <?}?></span></span></td>

上述代碼實現將數據庫中的新聞標題顯示在主頁上並且設置標題的鏈接爲< a href="news/content.php?id=<?=$rs[yd631_id]?>,當點中了相應鏈接,就會以id爲參數顯示news/ content.php頁面,content.php主要實現將新聞的具體內容顯示出來。content.php頁面的主要代碼如下所示

<?php  $db=mysql_pconnect($servname,$sqlservname,$sqlservpws) or die("數據庫連接失敗");

   $sql = "select * from $sqltable where date=".$_GET["date"];

   $result =mysql_db_query($sqlname,$sql);

    while($resul =mysql_fetch_array($result))

   {

       echo "&nbsp;&nbsp;$resul[name]";

       echo "&nbsp;&nbsp;$resul[date]";

   }

?>

瀏覽者點擊鏈接將新聞的序號以參數的形式發送給content.php文件。該文件運行$sql = "select * from $sqltable where date=".$_GET["date"]從數據庫中將新聞檢索出來並用echo函數進行顯示。

點擊主頁上的“更多”會顯示/news/index.php頁面將所有的新聞以列表的形式分頁列舉出來,爲了頁面的美觀,新聞需要分頁顯示,每頁顯示十個新聞。分頁的機制用分頁函數來實現,分頁函數設計如下:

<?php

 function genpage(&$sql,$page_size=12)

 {

      global $prepage,$nextpage,$pages,$sums;  //out param

      $page = $_GET["page"];

      $eachpage = $page_size;

      $pagesql = strstr($sql," from ");

      $pagesql = "select count(*) as ids ".$pagesql;

      $result = mysql_query($pagesql) or die(mysql_error());

      if($rs = mysql_fetch_array($result)) $sums = $rs[0];

      $pages = ceil(($sums-0.5)/$eachpage)-1;

      $pages = $pages>=0?$pages:0;

      $prepage = ($page>0)?$page-1:0;

      $nextpage = ($page<$pages)?$page+1:$pages; 

      $startpos = $page*$eachpage;

    $sql .=" limit $startpos,$eachpage ";

 }

 //顯示分頁

function showpage()

{

    global $page,$pages,$prepage,$nextpage,$queryString; //param from genpage function

    $shownum =10/2;

    $startpage = ($page>=$shownum)?$page-$shownum:0;

    $endpage = ($page+$shownum<=$pages)?$page+$shownum:$pages;

  

    echo "".($pages+1).":&nbsp;";

    if($page>0)echo "<a href=$PHP_SELF?page=0&$queryString>首頁</a>";

    if($startpage>0)

        echo " ... <b><a href=$PHP_SELF?page=".($page-$shownum*2)."&$queryString>&laquo;</a></b>";

    for($i=$startpage;$i<=$endpage;$i++)

    {

        if($i==$page)    echo "&nbsp;<b>[".($i+1)."]</b>&nbsp;";

        else        echo "&nbsp;<a href=$PHP_SELF?page=$i&$queryString>".($i+1)."</a>&nbsp;";

    }

    if($endpage<$pages)

        echo "<b><a href=$PHP_SELF?page=".($page+$shownum*2)."&$queryString>&raquo;</a></b> ... ";

    if($page<$pages)

        echo "<a href=$PHP_SELF?page=$pages&$queryString>尾頁</a>";

 

}

?>

Genpage函數檢索各頁所需要顯示的新聞,showpage函數顯示所分的頁面數,當點擊了需要顯示的頁面數後本網頁就會運行Genpage計算出需要顯示的新聞標題並顯示出來。

向數據庫中添加新聞需要用戶先登錄,如果用戶輸入的帳號和密碼與global/include.php 文件中規定的相同就可以登錄編輯頁面對新聞進行添加刪除或修改。新聞編輯頁面將數據庫中的現有新聞以列表的形式列舉出來,設置了添加新聞按鈕,並在每個新聞後有編輯和刪除兩個按鍵,如果用戶點擊了“添加新聞”就會進行添加新聞操作,添加新聞操作主要通過“write.php”和“save.php”兩個頁面完成。Write.php界面的主要作用爲顯示新聞的文本框,用戶可以在其中添加新聞的標題作者和內容,在添加完新聞後如果點擊“提交”就會調用“save.php”對當前新聞進行保存,save.php頁面的主要代碼爲

<?php

include "../global/include.php";

$y_title = $_POST["y_title"];

$y_name = $_POST["y_name"];

$y_time = date("Y-m-d H:i:s");

$y_content = $_POST["y_content"];

if($y_title!="" && $y_name!="" && $y_content!=""){

$db=mysql_connect($servname,$sqlservname,$sqlservpws) or die("數據庫連接失敗,請檢查!");//打開數據庫

mysql_select_db($sqlname,$db);//選擇列表

$sql= "insert into $sqltable(yd631_title,yd631_name,yd631_time,yd631_content) values ('$y_title','$y_name','$y_time','$y_content')";//數據庫操作語言,添加條目

mysql_query($sql);

echo("<script type='text/javascript'> alert('添加成功!');location.href='yd631.php';</script>");

mysql_close();

exit;

}

else{

echo ("<script type='text/javascript'> alert('填寫資料不完整!');history.go(-1);</script>");

}

 

?>

上述頁面首先調用mysql_connect函數以“數據庫名稱”和“密碼”爲參數打開數據庫,然後用數據庫操作語言

insert into $sqltable(yd631_title,yd631_name,yd631_time,yd631_content) values ('$y_title','$y_name','$y_time','$y_content')write.php頁面傳遞來的新聞標題、作者和內容寫入數據庫。

新聞編輯主要通過“edi.php”和“edi_save.php”兩個頁面完成,如果用戶點擊了“編輯”就會鏈接到edi.php頁面,對應的新聞的id號以參數的形式傳遞給edi.php頁面。Edi.php頁面的主要代碼爲

<?php

//顯示新聞

$db=mysql_connect($servname,$sqlservname,$sqlservpws) or die("數據庫連接失敗");

mysql_select_db($sqlname,$db);

$sql="select * from $sqltable where yd631_id=".$_GET["id"];

$conn=mysql_db_query($sqlname,$sql);

 while($rs=mysql_fetch_array($conn)){

?>

 

<form name="form1" method="post" action="save_edi.php" onSubmit="return checkit(this);">

  <table width="400" height="298" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">

    <tr align="center" bgcolor="#999999">

      <td height="37" colspan="2"><span class="style1">修改新聞</span></td>

    </tr>

    <tr align="center" bgcolor="#999999">

      <td width="91" height="30" align="right"> 題:</td>

      <td width="306" align="left"><input name="y_title" type="text" id="y_title" value="<?=$rs[yd631_title]?>"></td>

    </tr>

    <tr align="center" bgcolor="#999999">

      <td height="43" align="right">發佈者:</td>

      <td align="left"><input name="y_name" type="text" id="y_name" value="<?=$rs[yd631_name]?>"></td>

    </tr>

    <tr align="center" bgcolor="#999999">

      <td align="right"> 容:</td>

      <td align="left"><textarea name="y_content" cols="30" rows="10" id="y_content"><?=$rs[yd631_content]?></textarea></td>

    </tr>

    <tr align="center" bgcolor="#999999">

      <td colspan="2"> <input type="submit" name="Submit" value="提交">  

        <input type="reset" name="Submit" value="取消">      

          <input type="hidden"  name="id" value="<?=$_GET["id"]?>">

        </td>

      </tr>

  </table>

</form>

以上代碼對要編輯的新聞的標題、作者、內容進行檢索,並顯示出來,用戶修改後點擊保存就會調用save_edi.php頁面進行保存,

3.3.4實驗室預約網頁的實現

試驗室預約功能的實現分爲兩個部分:學生進行預約,老師查看試驗室的預約情況。試驗室預約採用預約人填寫表格的方式,該表格包括預約人的學號真實姓名和EMAIL。該表格提交後會存儲在數據庫中,老師輸入密碼後可以查看試驗室的預約情況,並可以根據實際情況通知預約人預約的結果。

3.3.5論壇的實現

爲了方便師生的交流,論壇設置瞭如下版塊:硬件專區,軟件專區,疑難解析專區。論壇論壇的實現使用開放源碼的discuz5.5中文論壇系統。從discuz的官方網站,將其解壓到網站的根目錄下,然後再IE瀏覽器中打開論壇文件夾下的install.php,根據情況對網站進行設置。

四 功能及性能測試

在我的計算機上測試打開每個動態頁面的時間基本上在10毫秒以下,新聞發佈頁面,實驗室預約頁面和論壇都運行正常。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考書目:

PHP程序設計》(Rasmus Lerdorf & Kevin Tartroe等著)

PHPMySQL Web開發(附光盤原書第3) ()威利 等編著  機械工業出版社

精通PHP+MySQL應用開發(附光盤)王石,楊英娜編著

PHP網絡編程技術與實例(附光盤)曹衍龍,趙斯思 人民郵電出版社

PHPMySQL 5程序設計(2)()W.Jason Gilmore

人民郵電出版社

Learning PHP 5 作者:David Sklar

PHP Cookbook  作者:David Sklar, Adam Trachtenberg
Php 5 Fast & Easy Web Development
作者:Julie C. Meloni

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章