新闻管理系统试验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
校园新闻管理系统的设计与实现实验报告
班级:10网工三班学生姓名:谢昊天学号:1215134046
项目实训目的:
本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,同时使学生掌握基于PHP、Mysql、HTML以及JavaScript等B/S模式的应用程序开发技能,为学生将来的就业提供了很好的时间锻炼的机会。
项目实训内容:
该系统的目的是设计一个B/S(浏览器/服务器)交互式的校园新闻管理系统网站。
要求网站不要脱离数据库而独立存在,完成前台Web设计和后台数据库的设计,要体现出交互性,其中系统前台用户可以完成的功能是:浏览新闻;查看新闻评论;对新闻发表评论;后台管理员可以完成的功能是管理员管理;新闻类别管理;新闻管理;评论管理等。
需求分析描述:
功能需求:
本系统的目的是实现新闻发布系统的基本功能。
本新闻发布系统提供了不同类型新闻(如校园新闻、体育新闻、娱乐新闻、国内新闻和国际新闻等)
满足不同用户需求;系统将用户分为:普通用户,系统管理员和新闻管理员。
普通用户能在本系统中进行新闻浏览,阅读,新闻搜索。
每条新闻的标题被做成一个链接,用户点击它们就能跳转页面进行新闻阅读;新闻阅读页面,每条新闻的详细信息将被取出,包括内容、标题等;用户能根据自己的需要搜索新闻,如可以通过新闻标题或新闻内容对新闻进行搜索这样可以快速地找到符合条件的新闻,并输出搜索结果;用户能对新闻进行被评论(允许匿名评论)。
系统管理员可以进行新闻分类管理、添加新闻、修改新闻、新闻审核和删除新闻,同时系统管理员能完成用户管理如包括系统用户管理、添加用户和更改账号。
新闻管理
员拥有添加新闻和更改账号的权限。
根据用户不同,给予不同权限,这样加强系统的管理,同时加强系统的安全性。
性能需求:
根据新闻系统的需求进行开发设计,主要实现如下目标:
1.界面设计友好、美观、数据要准确、安全、可靠。
2.强大查询功能,方便用户浏览网站的所有信息。
3.设计会员登陆功能,保证新闻留言的安全性。
4.实现对信息、比赛项目等信息的添加、修改、删除,便于更新网站内容。
5.系统最大限度地实现易维护性和易操作性。
操作的简易实用性本系统是新闻发布系统针对的用户大多数是学生,教师等等。
因此操作的简易实用性就体现的尤其重要。
在此系统的开发中就很好的体现了这一点,系统的界面美观,典雅,充满了人性化;用户操作起来也容易上手。
对于一个新闻发布系统而言新闻信息是很多的,而且使用人数较多,所以对系统的安全性有比较高的要求:对于数据库,
要设置不同用户的权限,数据的修改必须由合法用户操作。
功能需求:
本系统给用户提供了一个合理管理WEB 新闻的平台。
也提供了快速浏览新闻的平台。
系统管理员的主要功能要求:
1.用户管理模块,包括用户删除,修改,添加。
2.新闻栏目管理模块,包括栏目删除,修改,添加。
3.新闻录入模块。
4.新闻管理模块,包括新闻删除,新闻修改。
新闻浏览的主要功能要求:
1.新闻列表模块,包括按时间显示列表,按类别显示列表。
2.新闻浏览模块。
3.新闻搜索和查找模块,包括按作者查询、按标题查询等。
用户界面需求:
网站界面是用户直接访问的页面,所以必须要让用户一访问就能看出来这个网站的主题思想是什么,一下就能体现出这个网站的中心内容。
并且首页的模块之间要联系紧密,更好的让用户理解明白。
在这个页面上我们要做到所有查看消息的功能都能实现,或者说有能实现查询信息功能的连接。
新闻发布系统前台功能结构图
新闻发布系统后台功能结构图
流程图:
新闻发布系统顶层数据流程图
新闻发布系统中层数据流程图
新闻信息管理底层数据流程图
系统结构设计:
本系统给用户提供了一个合理管理WEB 新闻的平台。
也提供了快速浏览新闻的平台。
系统管理员的主要功能要求:
1、用户管理模块,包括用户删除,修改,添加。
2、新闻栏目管理模块,包括栏目删除,修改,添加。
3、新闻录入模块。
4、新闻管理模块,包括新闻删除,新闻修改。
新闻浏览的主要功能要求:
1、新闻列表模块,包括按时间显示列表,按类别显示列表。
2、新闻浏览模块。
3、新闻搜索和查找模块,包括按作者查询、按标题查询等。
新闻发布系统前台功能结构:
1、前台登录;
2、新闻列表分页显示;
3、新闻信息模糊查询;
4、新闻详细信息显示;
5、发布新闻评论。
新闻发布系统后台功能结构:
1、新闻类别管理
类别添加
类别编辑
类别删除
2、后台用户注销
3、新闻信息管理
新闻添加
新闻编辑
新闻删除
4、评论管理
评论审核
评论删除
实验结果:
1、实现字符串翻转功能页面test1.php运行结果如下所示,此页面实现了英文和中文的字符翻转功能。
2、实现中文字符串截取功能页面test2.php运行结果如下所示,功能已经实现。
3、实现中文字符比较功能页面test3.php运行结果如下所示,功能已经实现。
4、实现HTML字符串过滤功能页面test4.php运行结果如下所示,各个字符出来函数处理的结果不相同,各个各的用处。
实验总结:
经过两周的课程设计,是我综合运用了PHP表达式、PHP函数编
写、PHP数组、PHP数据采集、PHP会话控制等这学期所学习的知识,不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
通过本学期对PHP网络编程的学习、使我对PHP编程有了更深层次的理解和运用。
在本次课程设计中中,回顾书本上的理论知识,巩固了我的知识。
也检验了这学期的学习成果。
系统实现过程:
新闻发布系统实施
设计界面后,在将系统移交给用户的一系列活动叫做系统实施。
新闻发布系统涉及新闻浏览,评价浏览,新闻发布等功能.
1.文件组织结构:
在“c:\wamp\www”目录下创建”111”目录,在“111“目录下创建,如图所示:
2.数据库的实施
在“c:\wamp\www\n111”目录下创建news.sql脚本文件,news.sql脚本文件首先设置存储引擎为InnoDB,然后设置字符集为gbk,接着创建news数据库,并在数据库中创建category表news表review表user表。
SQL语句如下:
set table_type=InnoDB;
show variables like 'table_type';
set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_database=gbk;
set character_set_results=gbk;
set character_set_server=gbk;
set collation_connection=gbk_chinese_ci;
set collation_database=gbk_chinese_ci;
set collation_server=gbk_chinese_ci;
show variables like 'character%';
show variables like 'collation%';
create database news;
use news;
create table category(
category_id int auto_increment primary key,
name char(20) not null
)
create table users(
user_id int auto_increment primary key,
name char(20) not null,
password char(32)
)
create table news(
news_id int auto_increment primary key,
user_id int,
category_id int,
title char(100) not null,
publish_time datetime,
content text,
clicked int,
attachment char(100),
constraint FK_news_user foreign key (user_id) references users(user_id),
constraint FK_news_category foreign key (category_id) references category(category_id)
)
create table review(
review_id int auto_increment primary key,
news_id int,
content text,
publish_time datetime,
state char(10),
ip char(15),
constraint FK_review_news foreign key (news_id) references news(news_id)
)
启动Navicat Lite for MySQL软件
本地连接数据库:点击连接—点击确定
在右边空白处右击鼠标,文件:数据库news文件的地址---点击开始—刷新
完成数据库的连接,在各个表中输入相应的信息,保存SQL语句。
7.1代码设计
新闻管理和评价管理功能的实施
新闻管理(新闻发布,新闻浏览,修改新闻等)和评价管理(添加评价,评价浏览,删除评价,审查)的核心。
(1)编制MYSQL服务器连接函数和上传文件上传函数。
在“c:\wamp\www\news\functions”目录下创建database.php文件程序用于实现MYSQL服务器连接的开启和关闭。
database.php代码如下:
<?php
$database_connection = null;
function get_connection(){
$hostname = "localhost";
$database = "news";
$username = "root";
$password = "";
global $database_connection;
$database_connection = @mysql_connect($hostname,$username,$password) or die(mysql_error());
mysql_query("set names 'UTF8'");
@mysql_select_db($database,$database_connection) or die(mysql_error());
}
function close_connection(){
global $database_connection;
if($database_connection){
mysql_close($database_connection) or die(mysql_error());
}
}
?>
(2)向数据库中添加测试数据库的程序news_init.php。
在“c:\wamp\www\news”目录下创建news_init.php文件程序负责向向用户表user 中添加一个管理员用户,向新闻类别表中添加
news_init.php代码如下:
<?php
include_once("functions/database.php");
get_connection();
mysql_query("insert into category values(null,'娱乐')");
mysql_query("insert into category values(null,'财经')");
$password = md5(md5("admin"));
mysql_query("insert into users values(null,'admin','$password')");
close_connection();
echo "成功添加初始化数据";
?>
打开浏览器,输入http://localhost/111/init.php 进行数据库初始化。
(3)创建新闻添加news_add.php
在“c:\wamp\www\news”目录下创建news_add.php
文件,该文件中包括添加form表单为浏览器用户提供输入数据界面。
news_add.php代码如下:
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
?>
<form action="news_save.php" method="post" enctype="multipart/form-data">
标题:<input type="text" size="60" name="title" /><br />
内容:<textarea name="content" type="text" rows="16" cols="60"></textarea><br /> 类别:
<select name="category_id" size="1">
<?php
include_once("functions/database.php");
get_connection();
$result_set = mysql_query("select * from category");
close_connection();
while($row = mysql_fetch_array($result_set)){
?>
<option value="<?php echo $row['category_id'];?>"><?php echo $row['name'];?></option>
<?php
}
?>
</select><br />
附件:<input type="file" name="news_file" size="50" />
<input type="hidden" name="MAX_FILE_SIZE" value="10485760" /><br />
<input type="submit" value="提交" /><input type="reset" value="重置" />
</form>
(4)创建文件管理页面file_system.php
在C:\wamp\www\news\functions目录下创建file_system.php文件,file_system.php 文件中提供了实现文件上传功能uploads()函数和下载功能download()函数。
file_system.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件管理页面</title>
</head>
<body>
<?php
function upload($file,$file_path){
$error = $file['error'];
switch($error){
case 0:
$file_name = $file['name'];
$file_temp = $file['tmp_name'];
$destination = $file_path."/".$file_name;
move_uploaded_file($file_temp,$destination);
return "文件上传成功!";
case 1:
return "上传附件超过了php.ini中upload_max_filesize选项限制的值";break;
case 2:
return "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";break;
case 3:
return "附件只有部分被上传!";break;
case 4:
return "没有上传附件!";break;
}
}
function download($file_dir,$file_name){
if(!file_exists($file_dir.$file_name)){//检查文件是否存在
exit("文件不存在或已删除");
}else{
$file = fopen($file_dir.$file_name,"r");//打开文件
header("Content-Disposition:attachment;
filename=".$file_name);
//输出文件内容
echo fread($file,filesize($file_dir.$file_name));
fclose($file);
exit;
}
}
?>
</body>
</html>
(4)创建新闻信息保存页面news_save.php
在C:\wamp\www\news\目录下创建news_save.php文件,该程序实现的功能依次为:登录后访问,采集新闻的标题,内容,设置新闻的发布时间为WEB服务器时间,设置新闻的浏览次数为0 ,设置新闻的发布者ID为1,上传新闻的附件到uploads目录,附件上传成功后将新闻信息添加到数据库表中,将页面重定向到新闻标题列表页面news_list.php,并向news_list.php页面传递附件上传消息。
news_save.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>新闻信息保存页面</title>
</head>
<body>
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/file_system.php");
if(empty($_POST)){
$message = "上传的文件超过了php.ini中post_max_size选项限制的值";
}else{
//$user_id = 1;
$user_id = $_SESSION["user_id"];
$category_id = $_POST["category_id"];
$title = $_POST["title"];
$content = $_POST["content"];
$currentDate = date("Y-m-d H:i:s");
$clicked = 0;
$file_name = $_FILES["news_file"]["name"];
$message = upload($_FILES["news_file"],"uploads");
$sql = "insert into news values
(null,$user_id,$category_id,'$title','$currentDate','$content','$clicked','$file_name')";
if($message=="文件上传成功!"||$message=="没有上传附件!"){ include_once("functions/database.php");
get_connection();
mysql_query($sql);
close_connection();
}
}
header("Location:news_list.php?message=$message");
?>
</body>
</html>
(5)创建新闻标题列表显示页面news_list.php
在C:\wamp\www\news\目录下创建news_list.php文件,该程序实现的功能依次为:显示上传的状态信息,提供一个新闻模糊查询的form表单,按照新闻发布时间降序显示新闻的标题以及编辑和删除超链接,当点击新闻标题的超链接时进入新闻的详细信息页面news_detail.php,查看新闻详细信息,当点击编辑超链接时进入新闻编辑界面news_edit.php,实现的新闻的编辑,当点击删除超链接时进入新闻删除页面news_delete.php,实现对新闻的删除。
实现分页。
news_list.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>新闻浏览</title>
</head>
<body>
<?php
include_once("functions/database.php");
include_once("functions/page.php");
include_once("functions/is_login.php");
session_start();
if(isset($_GET["message"])){
//echo $_GET["message"]."<br/>";
}
//构造查询所有新闻的sql语句
$search_sql = "select * from news order by news_id desc";
//进行模糊查询,取得模糊查询的关键字keyword
$keyword = "";
if(isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
$search_sql = "select * from news where title like '%$keyword%' or content like '%$keyword%' order by news_id desc";
}
?>
<form action="news_list.php" method="get">
请输入关键字:<input name="keyword" type="text" value="<?php echo $keyword?>" />
<input type="submit" value="搜索" />
</form>
<br />
<table>
<?php
get_connection();
//分页的实现
//分页的实现
$result_news = mysql_query($search_sql);
$total_records = mysql_num_rows($result_news);
$page_size = 3;
if(isset($_GET["page_current"])){
$page_current = $_GET["page_current"];
}else{
$page_current=1;
}
$start = ($page_current-1)*$page_size;
$result_sql = "select * from news order by news_id desc limit $start,$page_size";
if(isset($_GET["keyword"])){
$keyword =trim($_GET["keyword"]);
//构造模糊查询新闻的SQL语句
$result_sql = "select * from news where title like '%$keyword%' or content like '%$keyword%' order by news_id desc limit $start,$page_size";
}
$result_set = mysql_query($result_sql);
close_connection();
if(mysql_num_rows($result_set)==0){
exit("暂无记录!");
}
while($row = mysql_fetch_array($result_set)){
?>
<tr>
<td><a href="news_detail.php?keyword=<?php echo $keyword?>&news_id=<?php echo $row['news_id']?>"><?php echo
mb_strcut($row['title'],0,40,"gbk")?></a></td><!-- mb_strcut截取字符串--> <!--管理员登录显示如下信息-->
<?php if(is_login()){?>
<td><a href="news_edit.php?news_id=<?php echo $row['news_id']?>">编辑</a></td>
<td><a href="news_delete.php?news_id=<?php echo $row['news_id']?>" onclick="return confirm('确定删除?');">删除</a></td>
<?php }?>
</tr>
<?php
}
?>
</table>
<?php
$url = $_SERVER['PHP_SELF'];//获取当前页面
page($total_records,$page_size,$page_current,$url,$keyword);
?>
</body>
</html>
(6)创建新闻信息的修改页面news_edit.php。
在C:\wamp\www\news\目录下创建news edit.php文件,该程序的功能是:当点击新闻标题列表页面news_list.php中的编辑超链接时,news_edit.php页面从数据库中查询指定新闻的详细信息并显示在编辑页面news_edit.php中,新闻内容进入编辑状态。
news_edit.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>新闻编辑页面</title>
</head>
<body>
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/database.php");
$news_id = $_GET["news_id"];
get_connection();
$result_news = mysql_query("select * from news where news_id = $news_id");
$result_category = mysql_query("select * from category");
close_connection();
$news = mysql_fetch_array($result_news);
?>
<form action="news_update.php" method="post">
标题:<input type="text" size="68" name="title" value="<?php echo $news['title']?>"/><br />
内容:<textarea name="content" type="text" rows="16" cols="60"><?php echo $news['content']?
></textarea><br />
类别:<select name="category_id" size="1">
<?php
while($category = mysql_fetch_array($result_category)){
?>
<option value="<?php echo $category['category_id'];?>" <?php echo ($news ['category_id']==$category['category_id'])?"selected":""?>><?php echo $category['name'];?>
</option>
<?php
}
?>
</select><br />
<br />
<input type="hidden" name="news_id" value="<?php echo $news_id?>" />
<input type="submit" value="修改" />
<input type="button" value="取消" onclick="window.history.back();"
</form>
</body>
</html>
(7)创建新闻信息的修改页面news_update.php。
在C:\wamp\www\news\目录下创建news_update.php,该文件的功能:单机news_edit.php页面修改按钮时,修改指定新闻的信息,然后将页面重定向到news_update.php页面,并向news_list.php页面传递“新闻信息修改成功!”信息。
news_update.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/database.php");
$news_id = $_POST["news_id"];
$category_id = $_POST["category_id"];
$title = $_POST["title"];
$content = $_POST["content"];
$sql = "update news set category_id = $category_id,title = '$title',content = '$content' where news_id = $news_id";
get_connection();
mysql_query($sql);
close_connection();
$message = "新闻信息修改成功!";
header("Location:news_list.php?message=$message");
?>
</body>
</html>
(8)创建新闻信息的删除页面news_delete.php
在C:\wamp\www\news\目录下创建news_delete.php,该页面实现的功能:登录后才可访问,单击news_list.php页面中的删除超链接时,从数据库中删除指定新闻然后重定向新闻标题列表页面news_list.php,并向news_list.php页面传递“新闻及相关评论信息删除成功!”消息。
news_delete.php代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>新闻删除页面</title>
</head>
<body>
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/database.php");
$news_id = $_GET["news_id"];
$sql1 = "delete from review where news_id=$news_id";
$sql2 = "delete from news where news_id=$news_id";
get_connection();
mysql_query($sql1);
mysql_query($sql2);
close_connection();
$message = "新闻及相关评论信息删除成功!";
header("Location:news_list.php?message=$message");
?>
</body>
</html>
(10)创建查看新闻详细信息页面news_detail.php
打开新闻标题列表显示news_list.php后,单击新闻标题的超链接后可以查看该新闻的详细信息。
在C:\wamp\www\news\目录下创建news_detail.php,该页面实现的功能:
news_detail代码如下:
<?php
include_once("functions/database.php");
$news_id = $_GET["news_id"];
//构造3条sql语句
$sql_news_update = "update news set clicked=clicked+1 where news_id=$news_id";
$sql_news_detail = "select * from news where news_id = $news_id";
$sql_review_query = "select * from review where news_id = $news_id and state = 'ok'";
//执行3条sql语句
get_connection();
mysql_query($sql_news_update);
$result_news = mysql_query($sql_news_detail);
$result_review = mysql_query($sql_review_query);
//取出结果集中的新闻条数
$count_news = mysql_num_rows($result_news);
//取出结果集中该新闻“已审核”的评论条数
$count_review = mysql_num_rows($result_review);
if($count_news==0){
echo "该新闻不存在或已被删除!";
exit;
}
//根据新闻信息中的user_id查询对应的用户信息
$news = mysql_fetch_array($result_news);
$user_id = $news["user_id"];
$sql_user = "select * from users where user_id=$user_id";
$result_user = mysql_query($sql_user);
$user = mysql_fetch_array($result_user);
//根据新闻信息中的category_id查询对应的新闻类别信息
$category_id = $news["category_id"];
$sql_category = "select * from category where category_id=$category_id";
$result_category = mysql_query($sql_category);
$category = mysql_fetch_array($result_category);
close_connection();
mysql_free_result($result_user);
mysql_free_result($result_category);
mysql_free_result($result_news);
mysql_free_result($result_review);
//关键字加粗斜体显示
$title = $news['title'];
$content = $news['content'];
if(isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
$replacement = "<b><i>".$keyword."</b></i>";
$title = str_replace($keyword,$replacement,$title);
$content = str_replace($keyword,$replacement,$content);
}
//显示新闻详细信息
?>
<table>
<tr><td width="180">标题:</td><td><?php echo $news['title'];?></td></tr> <tr><td width="180">内容:</td><td><?php echo $news['content'];?></td></tr> <tr><td width="180">附件:</td><td><a href="download.php?attachment=<?php echo urlencode($news['attachment']);?>"><?php echo $news['attachment'];?></a></td></tr>
<tr><td width="180">发布者:</td><td><?php echo $user['name'];?></td></tr> <tr><td width="180">类别:</td><td><?php echo $category['name'];?></td></tr>
<tr><td width="180">发布时间:</td><td><?php echo $news['publish_time'];?></td></tr>
<tr><td width="180">点击次数:</td><td><?php echo $news['clicked'];?></td></tr>
</table>
<?php
if($count_review>0){
echo "<a href='review_news_list.php?news_id=".$news['news_id']."'> 共有".$count_review."条评论</a><br/>";
}else{
echo "该新闻暂无评论!<br/>";
}
?>
<br />
<form action="review_save.php" method="post">
添加评论:<textarea name="content" cols="50" rows="5"></textarea><br />
<input type="hidden" name="news_id" value="<?php echo $news['news_id'];?>" /> <input type="submit" value="评论" />
</form>
</body>
</html>
(11)、制作文件下载函数download。
由于文件下载是web系统中较为常用的功能。
有必要将下载功能的php代码封装成函数。
Download函数的代码如下:<?php
function upload($file,$file_path){
$error = $file['error'];
switch($error){
case 0:
$file_name = $file['name'];
$file_temp = $file['tmp_name'];
$destination = $file_path."/".$file_name;
move_uploaded_file($file_temp,$destination);
return "文件上传成功!";
case 1:
return "上传附件超过了php.ini中upload_max_filesize选项限制的值";break;
case 2:
return "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";break;
case 3:
return "附件只有部分被上传!";break;
case 4:
return "没有上传附件!";break;
}
}
function download($file_dir,$file_name){
if(!file_exists($file_dir.$file_name)){//检查文件是否存在
exit("文件不存在或已删除");
}else{
$file = fopen($file_dir.$file_name,"r");//打开文件
header("Content-Disposition:attachment;
filename=".$file_name);
//输出文件内容
echo fread($file,filesize($file_dir.$file_name));
fclose($file);
exit;
}
}
?>
</body>
</html>
(12)、文件下载功能的实现。
在在C:\wamp\www\news\目录下创建download.php文件,负责下载服务器/news/uploads/目录下的某个文件。
Download.php代码如下:
</head>
<body>
<?php
include_once("functions/file_system.php");
$file_name = $_GET["attachment"];
download("uploads/","$file_name");
?>
</body>
</html>
(13)、创建保存新闻评论页面review_save.php。
实现普通用户在new_detail.php 页面中输入指定新闻评论信息,单击评论后会将信息添加到数据库中。
Review_save.php代码如下:
<?php
include_once("functions/database.php");
$news_id = $_POST["news_id"];
$content = htmlspecialchars($_POST["content"]);
$currentDate = date("Y-m-d H:i:s");
$ip = $_SERVER["REMOTE_ADDR"];
$state = "no";
$sql = "insert into review values(null,$news_id,'$content','$currentDate','$state','$ip')";
get_connection();
mysql_query($sql);
close_connection();
$message = "该新闻的评论信息成功添加到数据库中!";
header("Location:news_list.php?message=$message");
?>
</body>
</html>
(14)、创建查看评论信息页面reviewlist.php。
代码如下:
<?php
include_once("functions/database.php");
include_once("functions/page.php");
$sql = "select * from review";
get_connection();
//分页的实现
$result_news = mysql_query($sql);
$total_records = mysql_num_rows($result_news);
$page_size = 3;
if(isset($_GET["page_current"])){
$page_current = $_GET["page_current"];
}else{
$page_current = 1;
}
$start = ($page_current-1)*$page_size;
$result_sql = "select * from review order by review_id desc limit $start,$page_size";
$result_set = mysql_query($result_sql);
close_connection();
echo "新闻发布系统的所有评论信息如下:<br/>";
while($row = mysql_fetch_array($result_set)){
echo "评论内容:".$row["content"]."<br/>";
echo "日期:".$row["publish_time"]." ";
echo "IP地址:".$row["ip"]." ";
echo "状态:".$row["state"]."<br/>";
echo "<a href='review_delete.php?review_id=".$row["review_id"]."'>删除</a>";
echo " ";
if($row["state"]=="no"){
echo "<a href='review_verify.php?review_id=".$row["review_id"]."'>审核</a>";
}
echo "<hr/>";
}
//分页的实现
$url = $_SERVER['PHP_SELF'];
page($total_records,$page_size,$page_current,$url,"");
?>
</body>
</html>
(15)、创建评论的审核页面review_verify.php。
代码如下:
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/database.php");
$review_id = $_GET["review_id"];
$sql = "update review set state='ok' where review_id=$review_id";
get_connection();
mysql_query($sql);
close_connection();
header("Location:review_list.php");
?>
</body>
</html>
(16)、创建指定新闻评论列表页面review_news_list.php。
代码如下:
<?php
include_once("functions/database.php");
$news_id = $_GET["news_id"];
$sql = "select * from review where news_id=$news_id and state='ok' order by review_id desc";
get_connection();
$result_set = mysql_query($sql);
close_connection();
echo "该新闻的评论如下:<br/>";
while($row = mysql_fetch_array($result_set)){
echo "评论内容:".$row["content"]."<br/>";
echo "评论日期:".$row["publish_time"]."<br/>";
echo "评论IP地址:".$row["ip"]."<hr/>";
}
?>
</body>
</html>
(17)、创建删除评论页面review_delete.php。
代码如下:<body>
<?php
include_once("functions/is_login.php");
session_start();
if(!is_login()){
echo "请您登录系统后,再访问此页面!";
return;
}
include_once("functions/database.php");
$news_id = $_GET["news_id"];
$sql1 = "delete from review where news_id=$news_id";
$sql2 = "delete from news where news_id=$news_id";
get_connection();
mysql_query($sql1);
mysql_query($sql2);
close_connection();
$message = "新闻及相关评论信息删除成功!";
header("Location:news_list.php?message=$message"); ?>
</body>
</html>。