PHP FORUM
1.index.php
<html>
<!--功能:php论坛标题部分-->
<head>
<meta
http-equiv="content-type" content="text/html;
charset=gb2312">
<title>论坛首页</title>
<style
type="text/css" media="all">
body { margin:0px; padding:0px;
font:12px verdana, arial, helvetica, sans-serif;}
td, legend{
font-size:14px; line-height:16px;}
p {
font-size:12px;}
<!-- HTML头样式 -->
#Header { margin:10px
0px 10px 0px; padding:10px 8px 8px 20px; border-style:solid;
border-color:green; background-color:#eee; font-size:14px;
height:14px;
}
<!--HTML正文内容样式 -->
#Content {
margin:5px; width:100%;
padding:10px;}
</style>
</head>
<body>
<center>
<h1>论坛首页</h1>
</center>
<!--
头开始 -->
<div id="Header">
<?php
include
"config.inc.php";
//判断用户是否登录,从而显示不同的导航界面
if($_SESSION[‘username‘])
{
?>
<!-- 用户登录后的导航条
-->
<strong><?php echo $_SESSION[‘username‘];
?>,欢迎登录</strong> |
<a
href="main_forum.php">主页</a> |
<a
href="edit_profile.php">个人资料</a> |
<a
href="logoff_user.php">退出论坛</a>
<?php } else {
?>
<!-- 用户未登录的导航条 -->
<a
href="main_forum.php">主页</a> |
<a
href="create_user.php">注册</a> |
<a
href="logon_forum.php">登录</a>
<?php
}//判断结束
?>
<br>
</div>
<!-- 头结束
-->
<!-- 正文内容开始 -->
<div id="Content">
2.main_forum.php
<?php
//**************************************
//* 功能:论坛主页面
//**************************************
require(‘config.inc.php‘);
//取得当前页数
$page=$_GET[‘page‘];
//每页最多显示的记录数
$each_page =
EACH_PAGE;
//计算页面开始位置
if(!$page || $page ==
1)
{
$start = 0;
}else{
$offset = $page - 1;
$start = ($offset *
$each_page);
}
?>
<h2>
论坛主页
<a
href="edit_profile.php">个人资料</a>
<a
href="logoff_user.php">注销用户</a>
<form
action="main_search.php" method="post">
<input type="text"
name="keys">
<input type="submit" name="subs" value="Search
Topic">
</form>
</h2>
<?php
//检索记录,按照置顶标记和时间排序
$sql = "SELECT *
FROM forum_topic
ORDER BY sticky DESC,
datetime DESC LIMIT $start, $each_page";
$result =
mysql_query($sql);
?>
<table width="100%" border="0"
align="center"
cellpadding="3" cellspacing="1"
bgcolor="#111">
<tr bgcolor="#E6E6E6">
<td
width="60%"
align="center"><strong>帖子</strong></td>
<td
width="8%"
align="center"><strong>访问量</strong></td>
<td
width="8%"
align="center"><strong>回复数</strong></td>
<td
width="24%"
align="center"><strong>日期</strong></td>
</tr>
<?php
//循环输出输出记录列表
while($rows=mysql_fetch_array($result))
{
?>
<tr bgcolor="#FFFFFF">
<td>
<?php
//如果是“置顶”的记录
if
($rows[‘sticky‘] == "1")
{
?><img
src="sticky.jpg" alt="置顶" border="0"><?php
}
//如果是“锁定”的记录
if
($rows[‘locked‘] == "1")
{
?><img
src="lock.jpg" alt="锁定"
border="0"><?php
}
?>
<a
href="view_topic.php?id=<?php echo $rows[‘id‘];
?>"><?php echo $rows[‘topic‘]; ?></a>
</td>
<td align="center">
<?php
echo $rows[‘view‘];
//浏览量
?>
</td>
<td
align="center">
<?php
echo
$rows[‘reply‘]; //回复量
?>
</td>
<td align="center">
<?php
echo $rows[‘datetime‘];
//日期
?>
</td>
</tr>
<?php
}
//退出while循环
?>
<tr>
<td colspan="5"
align="right" bgcolor="#E6E6E6">
<input type="button"
onClick="location.href=‘create_topic.php‘"
value="创建新帖子">
</td>
</tr>
</table>
<?php
//计算前一页
if($page > 1)
{
$prevpage = $page - 1;
}
//当前记录
$currentend = $start + EACH_PAGE;
//取得所有的记录数
$sql = "SELECT COUNT(*) FROM
forum_topic";
$result = mysql_query($sql);
$row
= mysql_fetch_row($result);
$total = $row[0];
//计算后一页
if($total>$currentend)
{
if(!$page){
$nextpage =
2;
}else{
$nextpage = $page +
1;
}
}
?>
</p>
<p
style="text-align: right;">
<?php
//判断分页并输出
if ($prevpage || $nextpage)
{
//前一页
if($prevpage)
{
echo
"<a href=\"?page={$prevpage}\"><< 前一页</a>
";
}else{
echo
" ";
}
//后一页
if($nextpage)
{
echo
"<a href=\"?page={$nextpage}\">后一页 >></a>
";
}else{
echo
" ";
}
}
?>
</p>
<h3
align="right">标志</h3>
<p align="right">
<img
src="sticky.jpg" alt="Sticky" border="0" align="absmiddle">
置顶的帖子<br/><br/>
<img src="lock.jpg" alt="Locked"
border="0" align="absmiddle">
锁定的帖子<br/><br/>
<?php
//检索在线用户
$sql
= "SELECT COUNT(*) FROM forum_user";
$result =
mysql_query($sql);
$row =
mysql_fetch_row($result);
$total_user =
$row[0];
?>
共有<b><?php echo $total_user
?></b>位注册的用户。</p>
<?php
//公用尾部页面
include(‘footer.inc.php‘)
?>
3.main_search.php
<?php
session_cache_limiter(‘private,
must-revalidate‘);
require "config.inc.php";
if(!empty($_POST[‘keys‘])){
$w="`topic` like
‘%".$_POST[‘keys‘]."%‘";
}else{
$w=1;
}
$sear="select
* from `forum_topic` where $w order by id desc limit
10";
$query=mysql_query($sear);
if($w!=1){
while($rs=mysql_fetch_array($query)){
echo
"Post Man: ".$rs[‘name‘]."<br/>";
echo
"Topic: ";
?>
<a
href="view_topic.php?id=<?php echo $rs[‘id‘]; ?>"><?php
echo $rs[‘topic‘]; ?></a>
<?php
echo
"<br/>"."<br/>";
}
}else{
echo "<a
href=‘main_forum.php‘>go back</a>";
}
?>
4.view_profile.php
<?php
include "config.inc.php";
include
"header.inc.php";
$id=$_GET[‘id‘];
$sql="select username,email,realname,regdate from forum_user
where
username=‘$id‘";
$rs=mysql_query($sql);
$row=mysql_fetch_array($rs);
if(isset($row)){
echo
"username: ".$row[‘username‘]."<br/>";
echo
"email: ".$row[‘email‘]."<br/>";
echo
"realname: ".$row[‘realname‘]."<br/>";
echo
"register
date: ".$row[‘regdate‘]."<br/>";
echo
"<a href=‘main_forum.php‘><font size=‘5‘>go
back</font></a>";
}else{
echo
"查询数据库出错!";
}
?>
5.logoff_user.php
<?php
session_start();
//从session中获取登录用户名
$username=$_SESSION["username"];
//删除所有Session的变量
$_SESSION=array();
//判断是否是使用基于Cookie的Session,删除包含Session
ID的Cookie
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),‘‘,time()-42000,‘/‘);
}
//彻底销毁Session
session_destroy();
?>
<html>
<head>
<title>退出论坛</title>
</head>
<body>
<p><?php echo
$username?> Bye!</p>
<p>请点击<a
href="index.php">这里</a>注销并退出。</p>
</body>
</html>
6.view_topic.php
<?php
//**************************************
//* 功能:文章详细页面
//**************************************
require(‘config.inc.php‘);
//根据ID取得贴子记录
$id=$_GET[‘id‘];
$sql="SELECT *
FROM forum_topic WHERE id=‘$id‘";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
//记录不存在
if
(!$rows)
{
ExitMessage("该贴记录不存在!",
"main_forum.php");
}
//置顶标记
$sticky=$rows[‘sticky‘];
?>
<?php
include(‘header.inc.php‘); ?>
<h2><? echo
$rows[‘topic‘]; ?></h2>
<em
class="info">
<a href="view_profile.php?id=<?php
echo $rows[‘name‘]; ?>">
<? echo $rows[‘name‘];
?></a> 于 <? echo $rows[‘datetime‘];
?>
创建
</em>
<p>
<?php
//输出整理好的内容
echo
nl2br(htmlspecialchars($rows[‘detail‘]));
?>
</p>
<?php
if ($rows[‘locked‘]) { $locked = 1; } ?>
<hr size=1
/>
<dl>
<?php
//获取回复内容
$sql
="SELECT * FROM forum_reply WHERE topic_id=‘$id‘";
$result = mysql_query($sql);
$num_rows =
mysql_num_rows($result);
if ($num_rows)
{
//循环取出记录内容
while($rows=mysql_fetch_array($result))
{
?>
<dt>
<a href="view_profile.php?id=<?php echo $rows[‘reply_name‘];
?>">
<? echo
$rows[‘reply_name‘]; ?>
</a>
- <em><?php echo
$rows[‘reply_datetime‘];
?></em>
</dt>
<dd>
<p><?php
//输出整理好的内容
echo
nl2br(htmlspecialchars($rows[‘reply_detail‘]));
?></p>
</dd>
<?
}//结束循环
}else{
echo
"<p><strong>没有跟贴记录。</strong></p>";
}
//浏览量加1
$sql = "UPDATE forum_topic set
view=view+1 WHERE id=‘$id‘";
$result =
mysql_query($sql);
?>
</dl>
<!--内容回复表单,开始-->
<fieldset>
<legend>贴子回复</legend>
<?php
//判断用户是否已经注册
if (!$_SESSION[‘username‘])
{
echo
‘<p>请先<a
href="create_user.php">注册</a>,
或者<a
href="logon_forum.php">登录</a>或后进行操作。<br> </p>‘;
}
else {
//帖子已经被锁定
if ($locked == 1)
{
echo
‘<p><strong>该贴是被锁定的,无法回帖</strong><br> </p>‘;
}else{
?>
<form
name="form1" method="post" action="add_reply.php"
id="reply">
<input name="id" type="hidden"
value="<? echo $id; ?>">
<table>
<tr>
<td> </td>
<td>
<textarea name="reply_detail"
cols="45" rows="10"></textarea>
</td>
</tr>
</table>
<br
/>
<input type="submit"
name="Submit" value="回复该帖" class="button" />
<input
type="reset" name="Reset" class="button"
/>
</form>
<?php }
?>
</fieldset><br>
<!--内容回复表单,结束-->
<?php
//如果是管理员用户,则输出“置顶”、“锁定”和“删除”按钮
if
($_SESSION[‘username‘] == ADMIN_USER)
{
?>
<!--管理员操作表单,开始-->
<fieldset>
<legend>管理员操作</legend>
<!--显示锁定操作按钮-->
<?php if ($locked == 0) {
?>
<form name="lock" method="post"
action="lock_topic.php">
<input type="hidden"
name="id" value="<?php echo $id; ?>">
<input
type="submit" name="Submit" value="锁定该贴"
class="button">
将该贴锁定,其他用户无法回复
</form>
<?php }else{
?>
<form name="unlock" method="post"
action="unlock_topic.php">
<input type="hidden"
name="id" value="<?php echo $id; ?>">
<input
type="submit" name="Submit" value="解除锁定"
class="button">
解除锁定,其他人可以回复
</form>
<?php }
?>
<!--显示置顶操作按钮-->
<?php if ($sticky
== 0) { ?>
<form name="stick" method="post"
action="stick_topic.php">
<input type="hidden"
name="id" value="<?php echo $id; ?>">
<input
type="submit" name="Submit" value="置顶该贴"
class="button">
将该贴置于顶端
</form>
<?php } else {
?>
<form name="unstick" method="post"
action="unstick_topic.php">
<input type="hidden"
name="id" value="<?php echo $id; ?>">
<input
type="submit" name="Submit" value="取消置顶"
class="button">
取消该贴置顶
</form>
<?php } ?>
<!--显示删除操作按钮-->
<form
name="delete" method="get" action="del_topic.php">
<input type="hidden" name="id" value="<?php echo $id;
?>">
<input type="submit" name="Submit"
value="删除帖子" class="button">
删除该帖与回复内容
</form>
</fieldset>
<!--管理员操作表单,结束-->
<?php
}
}
?>
<?php
include(‘footer.inc.php‘);
?>
7.update_profile.php
<?php
//**************************************
//* 功能:用户资料修改页面
//**************************************
require(‘config.inc.php‘);
if
(!$_SESSION[‘username‘])
{
ExitMessage("请<b>登录</b>后执行该请求 ",
"logon_form.php");
}
//用户名
$username=$_SESSION[‘username‘];
//电子邮件
$email=ClearSpecialChars($_POST[‘email‘]);
//真实姓名
$realname=ClearSpecialChars($_POST[‘realname‘]);
//用户密码
$password=$_POST[‘password‘];
if
(!$password)
{
//如果密码为空,则密码项不予更新
$sql="UPDATE forum_user
SET email = ‘$email‘,
realname = ‘$realname‘
WHERE username = ‘$username‘";
} else
{
//如果输入了新的密码,则密码项也予以更新
//$password =
md5($password);
$sql="UPDATE forum_user
SET password = ‘$password‘,
email = ‘$email‘,
realname = ‘$realname‘
WHERE username = ‘$username‘";
}
$result=mysql_query($sql);
if($result){
?>
<h2>个人资料更新成功</h2>
<p>
您的个人资料已经被成功更新
请<a
href="main_forum.php">返回</a>论坛主页
</p>
<?php
}
else {
ExitMessage("记录不存在!");
}
?>
8.unstick_topic.php
<?php
//**************************************
//* 功能:取消“置顶”操作
//**************************************
require(‘config.inc.php‘);
//判断是否为管理员
if ($_SESSION[‘username‘] == ADMIN_USER)
{
//取得文章ID
$id=$_POST[‘id‘];
//取消“置顶”的SQL语句
$sql
= "UPDATE forum_topic SET sticky=‘0‘ WHERE
id=‘$id‘";
$result=mysql_query($sql);
if($result)
{
//跳转页面
header("Location:
view_topic.php?id=$id");
}
else
{
ExitMessage("数据库操作错误!");
}
}
else {
ExitMessage("你没有管理权限!");
}
?>
9.unlock_topic.php
<?php
//**************************************
//* 功能:取消“锁定”操作
//**************************************
require(‘config.inc.php‘);
//判断是否为管理员
if ($_SESSION[‘username‘] == ADMIN_USER)
{
//取得文章ID
$id=$_POST[‘id‘];
//取消“锁定”的SQL语句
$sql
= "UPDATE forum_topic SET locked=‘0‘ WHERE
id=‘$id‘";
$result=mysql_query($sql);
if($result)
{
//跳转页面
header("Location:
view_topic.php?id=$id");
}
else
{
ExitMessage("数据库操作错误!");
}
}
else {
ExitMessage("你没有管理权限!");
}
?>
10.stick_topic.php
<?php
//**************************************
//* 功能:设置“置顶”操作
//**************************************
require(‘config.inc.php‘);
//判断是否为管理员
if ($_SESSION[‘username‘] == ADMIN_USER)
{
//取得文章ID
$id=$_POST[‘id‘];
//设置“置顶”的SQL语句
$sql
= "UPDATE forum_topic SET sticky=‘1‘ WHERE
id=‘$id‘";
$result=mysql_query($sql);
if($result)
{
//跳转页面
header("Location:
view_topic.php?id=$id");
}
else
{
ExitMessage("数据库操作错误!");
}
}
else {
ExitMessage("你没有管理权限!");
}
?>
11.logon_forum.php
<?php
//**************************************
//* 功能:用户登录程序
//**************************************
require(‘config.inc.php‘);
if($_POST[‘submit‘])
{
//用户名
$username=ClearSpecialChars($_POST[‘username‘]);
$password=$_POST[‘password‘];
//密码,需要进行MD5加密
//$password=md5($_POST[‘password‘]);
//从数据库中检索用户名,密码是否匹配
$sql
= "SELECT * FROM forum_user
WHERE
username=‘$username‘ AND password=‘$password‘";
$result =
mysql_query($sql);
$num_rows =
mysql_num_rows($result);
if($num_rows ==
1)
{
//获得用户名
$row =
mysql_fetch_assoc($result);
//将用户名存入SESSION中
$_SESSION[‘username‘]
=
$row[‘username‘];
//跳转到论坛主页面
header("Location:
main_forum.php");
}
else
{
ExitMessage("用户名或者密码错误!",
"logon_forum.php");
}
}
else{
//公用头部页面
//include(‘header.inc.php‘);
?>
<h2>用户登录</h2>
<fieldset>
<form
method="post"
action="logon_forum.php">
<table>
<tr>
<td>用户名:</td>
<td><input name="username"
type="text"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input
name="password" type="password"></td>
</tr>
</table>
<input type="submit"
name="submit" value="登录"
class="button">
</form>
</fieldset>
<?php
}
//公用尾部页面
include(‘footer.inc.php‘);
?>
12.lock_topic.php
<?php
//**************************************
//* 功能:设置“锁定”操作
//**************************************
require(‘config.inc.php‘);
//判断是否为管理员
if ($_SESSION[‘username‘] == ADMIN_USER)
{
//取得文章ID
$id=$_POST[‘id‘];
//锁定的SQL语句
$sql
= "UPDATE forum_topic SET locked=‘1‘ WHERE
id=‘$id‘";
$result=mysql_query($sql);
if($result)
{
//跳转页面
header("Location:
view_topic.php?id=$id");
}
else
{
ExitMessage("数据库操作错误!");
}
}
else {
ExitMessage("你没有管理权限!");
}
?>
13.header.inc.php
<?php
//* 初始化程序
*
//*******************
//开启SESSION
session_start();
//打开数据库连接
$db
= mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$db)
{
die(‘<b>数据库连接失败!</b>‘);
exit;
}
//选择数据库
mysql_select_db
(DB_NAME);
?>
14.footer.inc.php
<!---功能:共用尾部页面-!>
<!-- 正文内容结束 -->
<!-- 版权信息 -->
<style
type="text/css">
<!--
.STYLE1 {color:
#FF0000}
-->
</style>
<center>
<table
border=0>
<tr>
<td><span
class="STYLE1">版权所有</span>:KARMA</td>
</tr>
</center>
</table>
</body>
</html>
15.edit_profile.php
<?php
//******************************************
//* 功能:用户资料修改页面
//******************************************
require(‘config.inc.php‘);
//用户名
$id =
$_SESSION[‘username‘];
//如果用户没有登录
if
(!$_SESSION[‘username‘]) {
ExitMessage("请登录后执行该请求。",
"logon_forum.php");
}
?>
<h2>编辑个人资料</h2>
<?php
//查询用户资料
$sql="SELECT * FROM forum_user WHERE username =
‘$id‘";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<fieldset>
<legend>个人资料</legend>
<form
method="post"
action="update_profile.php">
<table>
<tr>
<td>登录用户:</td>
<td><b><? echo $rows[‘username‘];
?></b></td>
</tr>
<tr>
<td>
更新密码:</td><td><input
name="password" type="password">
</td>
</tr>
<tr>
<td>电子邮件:</td>
<td><input
name="email" type="text"
value="<?php echo
$rows[‘email‘]; ?>"></td>
</tr>
<tr>
<td>真实姓名:</td>
<td><input
name="realname" type="text"
value="<?php
echo $rows[‘realname‘]; ?>"></td>
</tr>
</table>
<br><br>
<input
type="submit" name="submit" value="更新个人资料" class="button">
</form>
</fieldset>
<?php
include(‘footer.inc.php‘);?>
16.del_topic.php
<?php
//**************************************
//* 功能:删除文章内容操作
//**************************************
require(‘config.inc.php‘);
//判断是否为管理员
if ($_SESSION[‘username‘] == ADMIN_USER)
{
//
get data that sent from form
$id=$_GET[‘id‘];
//删除文章
$sql = "DELETE
FROM forum_topic WHERE
id=$id";
$result=mysql_query($sql);
//删除回复内容
$sql2
= "DELETE FROM forum_reply WHERE
topic_id=$id";
$result2=mysql_query($sql2);
if($result AND
$result2)
{
//页面跳转
header("Location:
main_forum.php");
}
else
{
ExitMessage("数据库操作错误!");
}
}
else {
ExitMessage("你没有管理权限!");
}
?>
17.create_user.php
<?php
//**************************************
// 功能:生成用户注册页面
//**************************************
require(‘config.inc.php‘);
include(‘header.inc.php‘);
?>
<h2>注册新用户</h2>
<fieldset>
<form
method="post" action="add_user.php">
<table>
<tr>
<td>用户名:</td>
<td><input
name="username" type="text"></td>
</tr>
<tr>
<td>密
码:</td>
<td><input
name="password" type="password"></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input name="email"
type="text"></td>
</tr>
<tr>
<td>真实姓名:</td>
<td><input
name="realname" type="text"></td>
</tr>
</table>
<input type="submit"
name="Submit" value="提交注册" class="button"/>
<input
type="reset" name="Submit2" value="清空"
class="button"/>
</form>
</fieldset>
<?php
//公用尾部页面
include(‘footer.inc.php‘);
?>
18.create_topic.php
<?php
//***********************************
//* 功能:发表文章页面
//***********************************
require(‘config.inc.php‘);
include(‘header.inc.php‘);
?>
<h2>创建新贴</h2>
<?php
if
(!$_SESSION[‘username‘])
{
//如果用户未登录,显示错误信息
?>
<h3>未注册的用户</h3>
<p>对不起,请<a
href="create_user.php">注册</a>新用户,
或者进行<a
href="logon_forum.php">登录</a>
</p>
<?php
}else{
//如果用户登录,显示输入表单
?>
<h3>发言注意事项</h3>
<ul>
<li>所有项目必须填写。</li>
<li>在标题和正文中不能使用HTML代码。</li>
</ul>
<form
method="post" action="add_topic.php"
id="postComment">
<table>
<tr>
<td>话题</td>
<td><input
name="topic" type="text" id="topic"
size="50"><td>
</tr>
<tr>
<td>正文</td>
<td><textarea
name="detail" cols="50" rows="10"
id="detail"></textarea></td>
</tr>
</table>
<?php
//如果是管理员,将显示“置顶”和“锁定”功能
if ($_SESSION[‘username‘] ==
ADMIN_USER)
{
?>
<br>将帖子置顶 <input
type="checkbox" name="sticky"
value="on">
<br>锁定该帖子 <input type="checkbox"
name="locked" value="on">
<?php
}
?>
<br><br>
<input
type="submit" name="Submit" value="立即发布"
class="button">
<input type="reset" name="Submit2"
class="button">
</form>
<?php } ?>
<?php
//公用尾部页面
include(‘footer.inc.php‘);
?>
19.add_reply.php
<?php
//**************************************
//* 功能:回复文章保存页面
//***************************************
require(‘config.inc.php‘);
//判断用户是否登录
if (!$_SESSION[‘username‘])
{
ExitMessage("请<b>登录</b>后执行该请求。",
"logon_form.php");
}
//回帖的ID
$id=$_POST[‘id‘];
//验证帖子已经存在,未被锁定
$sql = "SELECT
* from forum_topic WHERE id=‘$id‘";
$result =
mysql_query($sql);
$topic_info =
mysql_fetch_array($result);
if (!$topic_info)
{
ExitMessage("帖子记录不存在!", "main_forum.php");
}
if ($topic_info[‘locked‘] == 1)
{
ExitMessage("该贴已经被锁定,无法进行回复。");
}
//取得用户信息
$username = $_SESSION[‘username‘];
$sql
= "SELECT * from forum_user WHERE username=‘$username‘";
$result = mysql_query($sql);
$user_info =
mysql_fetch_array($result);
//取得提交过来的数据
$reply_name=$_SESSION[‘username‘];
$reply_email=$user_info[‘email‘];
$reply_detail=filterBadWords($_POST[‘reply_detail‘]);
if
(!$reply_detail)
{
ExitMessage("没有回贴记录!",
"main_forum.php");
}
//取得reply_id的最大值
$sql = "SELECT Count(reply_id) AS MaxReplyId
FROM
forum_reply WHERE topic_id=‘$id‘";
$result=mysql_query($sql);
$rows=mysql_fetch_row($result);
//将reply_id最大值+1,如果没有该值,则设置为1。
if ($rows)
{
$Max_id = $rows[0]+1;
}
else
{
$Max_id = 1;
}
//插入回复数据
$sql="INSERT INTO forum_reply (topic_id, reply_id, reply_name,
reply_email, reply_detail,
reply_datetime)
VALUES(‘$id‘, ‘$Max_id‘,
‘$reply_name‘,
‘$reply_email‘, ‘$reply_detail‘,
NOW())";
$result=mysql_query($sql);
if($result)
{
//更新reply字段
$sql="UPDATE
forum_topic SET reply=‘$Max_id‘ WHERE
id=‘$id‘";
$result=mysql_query($sql);
//页面跳转
header("Location:
view_topic.php?id=$id");
}
else
{
ExitMessage("记录不存在");
}
?>
20.add_topic.php
<?php
//**************************************
//* 功能:发表文章程序
//**************************************
require(‘config.inc.php‘);
if
(!$_SESSION[‘username‘])
{
//如果用户未登录,显示错误信息
include(‘header.inc.php‘); //头文件
?>
<h2>创建新贴</h2>
<h3>未注册的用户</h3>
<p>对不起,请<a
href="create_user.php">注册</a>新用户
或者进行<a
href="logon_forum.php">登录</a>。
</p>
<?php
include(‘footer.inc.php‘); //尾文件
}
else {
//获得用户信息
$username =
$_SESSION[‘username‘];
$sql = "SELECT * from forum_user
WHERE username=‘$username‘";
$result =
mysql_query($sql);
$info =
mysql_fetch_array($result);
//取得传递来的值
//标题
$topic =
filterBadWords($_POST[‘topic‘]); //标题的脏字过滤
//正文
$detail =
filterBadWords($_POST[‘detail‘]); //正文的脏字过滤
//发帖人
$name =
$_SESSION[‘username‘];
//电子邮件地址
$email =
$info[‘email‘];
//是否置顶
$sticky =
$_POST[‘sticky‘];
//是否锁定
$locked =
$_POST[‘locked‘];
//数据合法性检查
if
(!$topic)
{
ExitMessage("请输入标题!");
}
if
(!$detail)
{
ExitMessage("请输入正文!");
}
//判断是否为锁定状态
if
($locked == "on" && $name == ADMIN_USER) {
$locked = 1;
}
else
{
$locked = 0;
}
//判断是否置顶状态
if ($sticky == "on"
&& $name == ADMIN_USER) {
$sticky =
1;
}
else {
$sticky =
0;
}
//将数据插入数据库
$sql="INSERT INTO
forum_topic(topic, detail, name, email, datetime, locked,
sticky)
VALUES(‘$topic‘, ‘$detail‘, ‘$name‘,
‘$email‘,NOW(), ‘$locked‘,
‘$sticky‘)";
$result=mysql_query($sql);
if($result)
{
//成功后,跳转页面到论坛主页面
header("Location:
main_forum.php");
}
else
{
ExitMessage("数据库错误!");
}
}
?>
21.add_user.php
<?php
//**********************************
//* 功能:添加注册用户记录
//**********************************
require(‘config.inc.php‘);
//取得提交的数据,并做清理
//用户名
$username =
ClearSpecialChars($_POST[‘username‘]);
//密码
$password = $_POST[‘password‘];
//电子邮件地址
$email = ClearSpecialChars($_POST[‘email‘]);
//真实姓名
$realname =
ClearSpecialChars($_POST[‘realname‘]);
//检验数据的合法性
if (!$username) {
ExitMessage(‘请输入用户名!‘);
}
if
(!$password) {
ExitMessage(‘请输入密码!‘);
}
if (!$email) {
ExitMessage(‘请输入电子邮件地址!‘);
}
else
if(!checkEmail($email)){
ExitMessage(‘电子邮件地址格式错误!‘);
}
//对密码进行MD5加密
//$password=md5($_POST[‘password‘]);
//判断用户是否已经存在
$sql = "SELECT * FROM forum_user WHERE
username=‘$username‘";
$result =
mysql_query($sql);
$num_rows =
mysql_num_rows($result);
if ($num_rows > 0)
{
ExitMessage(‘该用户已经存在!‘);
}
//创建用户
$sql = "INSERT INTO forum_user (username, password,
email, realname, regdate)
VALUES(‘$username‘,
‘$password‘, ‘$email‘, ‘$realname‘, NOW())";
$result =
mysql_query($sql);
if($result)
{
?>
<h2>创建用户</h2>
<p>您的用户账号已经建立,请点击<a
href="logon_forum.php">这里</a>登录。</p>
<?php
}
else {
ExitMessage("数据库错误!");
}
?>
22.config.inc.php
<?php
//*******************
//
功能:数据库操作程序
//*******************
//连接数据库的定义
//用户名
define(‘DB_USER‘,
"root");
//密码
define(‘DB_PASSWORD‘,
"root");
//数据库主机地址
define(‘DB_HOST‘,
"localhost");
//数据库
define(‘DB_NAME‘,
"phpforum");
//管理员用户
define(‘ADMIN_USER‘, "admin");
//分页设置,每页最多显示的记录数
define(‘EACH_PAGE‘,
15);
//无效的字符,用于ClearSpecialChars()函数
$invalidchars
=
array(
"‘", //单引号
";", //分号
"=", //等号
"\\", //反斜线
"/" //斜线
);
//“脏字”数组,用于FilterBadWords()
$badwords=array
(
"fuck",
"shit", "wanker", "cunt", "gay",
"nigger", "bastard",
"tosser", "dipshit",
"homosexual", "nigga",
"gaylord", "retard",
"asshole", "slut", "prick",
"cock", "pussy",
"bitch", "wanking", "bollocks"
);
//*******************
//*
公共函数设置
*
//*******************
//功能:检查电子邮件地址格式是否正确
//输入:电子邮件地址
//输出:true或false
function
CheckEmail($email)
{
$check =
"/^[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+(\.[0-9a-zA-Z_-]+){0,3}$/";
if(preg_match
($check, $email)){
return
true;
}
else{
return
false;
}
}
//功能:显示错误信息和返回的链接地址,并终止程序执行
//输入:错误信息,
链接地址
//输出:字符串
function ExitMessage($message,
$url=‘‘)
{
echo ‘<p
class="message">‘;
echo
$message;
echo
‘<br>‘;
if($url){
echo ‘<a
href="‘.$url.‘">返回</a>‘;
}else{
echo ‘<a href="#"
onClick="window.history.go(-1);">返回</a>‘;
}
echo
‘</p>‘;
exit;
}
//功能:清除字符串中的特殊字符
//输入:字符串
//输出:字符串
function
ClearSpecialChars($str)
{
global
$invalidchars;
$str = trim($str);
$str
= str_replace($invalidchars,"",$str);
return
$str;
}
//功能:“脏字”处理程序
//输入:字符串
//输出:字符串
function
FilterBadWords($str)
{
global
$badwords;
//替代字数组
$replacements=array("[ensored]",
"***");
for($i=0;$i <
sizeof($badwords);$i++)
{
//随机函数发生器
srand((double)microtime()*1000000);
//生成随机代码
$rand_key
=
(rand()%sizeof($replacements));
$str=eregi_replace($badwords[$i],
$replacements[$rand_key],
$str);
}
return
$str;
}
/*******************/
/*
初始化程序
*/
/*******************/
//开启SESSION
session_start();
//打开数据库连接
$db
= mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$db)
{
die(‘<b>数据库连接失败!</b>‘);
exit;
}
//选择数据库
mysql_select_db
(DB_NAME);
?>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。