基于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

 

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