PHP+MySQL 制作简单的留言本


Posted in PHP onNovember 02, 2009

PHP+MySQL 制作简单的留言本

 

留言显示页面:比上一个例子增加了分页和留言回复的功能

PHP+MySQL 制作简单的留言本

主要代码:
install/index.php:程序安装页面

<?php 
if($_GET["action"]!=1) 
{ 
?> 
<form method="post" action="index.php?action=1"> 
<table border="1"> 
<tr> 
<td>MySQL主机名:</td> 
<td><input type="text" name="host" value="localhost"></td> 
</tr> 
<tr> 
<td>MySQL用户名:</td> 
<td><input type="text" name="user" value="root"></td> 
</tr> 
<tr> 
<td>MySQL密码:</td> 
<td><input type="password" name="password" value=""></td> 
</tr> 
<tr> 
<td>数据库名称:</td> 
<td><input type="text" name="database" value="ruizhi_messageboard"></td> 
</tr> 
<tr> 
<td>留言本每页记录数:</td> 
<td><input type="text" name="pagenum" value="10"></td> 
</tr> 
<tr> 
<td>管理员账号:</td> 
<td><input type="text" name="admin_name" value="admin"></td> 
</tr> 
<tr> 
<td>管理员密码:</td> 
<td><input type="text" name="admin_password" value="admin"></td> 
</tr> 
<tr> 
<td>留言本标题:</td> 
<td><input type="text" name="boardname" value="RUIZHINET留言本"></td> 
</tr> 
<tr> 
<td colspan="2" align="center"><input type="submit" name="submit" value="确定安装"> <input type="button" name="submit" value="关闭页面" onclick="window.close()"></td> 
<td></td> 
</tr> 
</table> 
</form> 
<?php 
}else{ 
@set_time_limit(1000); 
$lockfile = "install.lock"; 
$host="localhost"; 
$user="root"; 
$password=""; 
$database="ruizhi_messageboard"; 
$pagenum=10; 
$admin_name="admin"; 
$admin_password="123456"; 
$boardname="RUIZHINET留言本"; 
if($_POST["host"]!=""){ 
$host=$_POST["host"]; 
} 
if($_POST["user"]!=""){ 
$user=$_POST["user"]; 
} 
if($_POST["password"]!=""){ 
$password=$_POST["password"]; 
} 
if($_POST["database"]!=""){ 
$database=$_POST["database"]; 
} 
if($_POST["pagenum"]!=""){ 
$pagenum=$_POST["pagenum"]; 
} 
if($_POST["admin_name"]!=""){ 
$admin_name=$_POST["admin_name"]; 
} 
if($_POST["admin_password"]!=""){ 
$admin_password=$_POST["admin_password"]; 
} 
if($_POST["boardname"]!=""){ 
$boardname=$_POST["boardname"]; 
} 
if(file_exists($lockfile)){ 
exit("已经安装过了,如果要重新安装请先删除install/install.lock"); 
} 
$conn=mysql_connect($host,$user,$password); 
if($conn){ 
$sql_drop_database="DROP DATABASE IF EXISTS `".$database."`"; 
$sql_create_database="CREATE DATABASE `".$database."`"; 
$sql_create_table_messageboard="CREATE TABLE `messageboard` ( 
`id` int(11) NOT NULL auto_increment, 
`author` varchar(15) NOT NULL, 
`title` varchar(30) NOT NULL, 
`smiles` varchar(30) NOT NULL, 
`content` mediumtext, 
`photo` varchar(30) NOT NULL, 
`addtime` int(11) default NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1"; 
$sql_create_table_reply="CREATE TABLE `reply` ( 
`id` int(11) NOT NULL auto_increment, 
`msgid` int(11) NOT NULL, 
`content` mediumtext, 
`addtime` int(11) default NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1"; 
if(mysql_query($sql_drop_database,$conn)){ 
if(mysql_query($sql_create_database,$conn)){ 
mysql_select_db($database,$conn); 
if(mysql_query($sql_create_table_messageboard,$conn) && mysql_query($sql_create_table_reply,$conn)){ 
$config_file="../config.php"; 
$config_strings="<?php\n"; 
$config_strings.="\$boardname=\"".$boardname."\";\n"; 
$config_strings.="\$host=\"".$host."\";\n"; 
$config_strings.="\$user=\"".$user."\";\n"; 
$config_strings.="\$password=\"".$password."\";\n"; 
$config_strings.="\$database=\"".$database."\";\n"; 
$config_strings.="\$pagenum=\"".$pagenum."\";\n"; 
$config_strings.="\$admin_name=\"".$admin_name."\";\n"; 
$config_strings.="\$admin_password=\"".$admin_password."\";\n"; 
$config_strings.="\$conn=mysql_connect(\$host,\$user,\$password);\n"; 
$config_strings.="mysql_select_db(\$database,\$conn);\n"; 
$config_strings.="?>"; 
if($fp=fopen($config_file,"wb")){ 
if(fwrite($fp,$config_strings)){ 
if($fp2 = fopen($lockfile, 'w')) 
{ 
fwrite($fp2,'1212'); 
fclose($fp2); 
} 
echo "安装成功!配置文件为:config.php,您可以手工修改该文件"; 
echo "\n<a href='../index.php'>进入系统首页</a>"; 
}else{ 
exit("文件写入失败"); 
} 
fclose($fp); 
} 
}else{ 
exit("不能执行CREATE TABLE语句:".$sql_create_table); 
} 
}else{ 
exit("不能执行CREATE DATABASE语句:".$sql_create_database); 
} 
}else{ 
exit("不能执行DROP DATABASE语句:".$sql_drop_database); 
} 
}else{ 
exit("连接数据库失败,请检查MySQL主机名、用户名和密码"); 
} 
}

生成的config.php文件:
<?php 
$boardname="RUIZHINET留言本"; 
$host="localhost"; 
$user="root"; 
$password=""; 
$database="ruizhi_messageboard"; 
$pagenum="10"; 
$admin_name="admin"; 
$admin_password="admin"; 
$conn=mysql_connect($host,$user,$password); 
mysql_select_db($database,$conn); 
?>

index.php:程序显示页面
<?php 
if(!$_GET["page"]){ 
$page=1; 
}else{ 
$page=$_GET["page"]; 
} 
$sql="SELECT id FROM messageboard"; 
$result=mysql_query($sql,$conn); 
$row_num=mysql_num_rows($result); 
$page_count=ceil($row_num/$pagenum); 
echo "当前共有".$row_num."条留言"; 
echo "  共分".$page_count."页显示"; 
echo "  当前为第".$page."页"; 
?> 
<p> 
<?php 
if($row_num==0){ 
echo "暂时没有留言"; 
}else{ 
?> 
<table border="1" width="700"> 
<?php 
$offset=($page-1)*$pagenum; 
$sql2="SELECT * FROM messageboard ORDER BY id DESC LIMIT $offset,$pagenum"; 
$result2=mysql_query($sql2,$conn); 
while($row=mysql_fetch_array($result2)){ 
$offset++; 
echo "<tr>"; 
echo "<td align=left bgcolor=#CCCCFF>"; 
echo $offset.".<img src='smiles/".base64_decode($row[smiles])."'>"; 
echo base64_decode($row[title])." - ".base64_decode($row[author])." [".date("Y年m月d日",$row[addtime])."] "; 
if(isset($_SESSION["admin_name"]) && $_SESSION["admin_name"]!=""){ 
echo "<a href=del.php?id=".$row["id"].">删除 | </a>"; 
echo "<a href=reply.php?id=".$row["id"].">回复</a>"; 
} 
echo "</td></tr>"; 
echo "<tr><td align=left>".base64_decode($row["content"])."</td></tr>"; 
if($row["photo"]!="NONE") 
{ 
echo "<tr><td align=left><img src='upfile/".base64_decode($row["photo"])."'></td></tr>"; 
} 
$sql3="SELECT * FROM reply WHERE msgid=$row[id] ORDER BY id DESC"; 
$result3=mysql_query($sql3,$conn); 
while($row3=mysql_fetch_array($result3)){ 
echo "<tr><td align=left bgcolor=#99CCFF>回复:".date("Y年m月d日",$row3[addtime]); 
if(isset($_SESSION["admin_name"]) && $_SESSION["admin_name"]!=""){ 
echo "<a href=delreply.php?id=".$row3["id"].">删除</a>"; 
} 
echo "</td></tr>"; 
echo "<tr><td align=left>".base64_decode($row3[content])."</td></tr>"; 
} 
} 
?> 
<?php 
if($page_count>1){ 
$prev_page=$page-1; 
$next_page=$page+1; 
if($page<=1){ 
echo "第一页 | "; 
}else{ 
echo "<a href='index.php?page=1'>第一页</a> | "; 
} 
if($prev_page<1){ 
echo "上一页 | "; 
}else{ 
echo "<a href='index.php?page=".$prev_page."'>上一页</a> | "; 
} 
if($next_page>$page_count){ 
echo "下一页 | "; 
}else{ 
echo "<a href='index.php?page=".$next_page."'>下一页</a> | "; 
} 
if($page>=$page_count){ 
echo "最后一页"; 
}else{ 
echo "<a href='index.php?page=".$page_count."'>最后一页</a>"; 
} 
} 
?> 
</table> 
<?php 
} 
?> 
<?php 
if(isset($_SESSION["admin_name"]) && $_SESSION["admin_name"]!=""){ 
?> 
<p><a href="logout.php">退出管理</a></p> 
<?php 
}else{ 
?> 
<p><a href="login.php">登陆管理</a></p> 
<?php 
} 
?>

saveadd.php:保存留言
<?php 
if(!$_POST["author"] || !$_POST["content"]) 
{ 
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">\n"; 
echo "你没有填写留言姓名或内容,2秒钟返回首页"; 
exit(); 
}else{ 
$imgflag=0; 
function random($length) 
{ 
$hash = 'IMG-'; 
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz'; 
$max = strlen($chars) - 1; 
echo (double)microtime() * 1000000; 
for($i = 0; $i < $length; $i++) 
{ 
$hash .= $chars[mt_rand(0, $max)]; 
} 
return $hash; 
} 
function fileext($filename) 
{ 
return substr(strrchr($filename, '.'), 1); 
} 
if($_FILES["upfile"]["name"]!=""){ 
$uploaddir="upfile/"; 
$type=array("jpg","gif","bmp","jpeg","png"); 
if(!in_array(strtolower(fileext($_FILES['upfile']['name'])),$type)) 
{ 
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">\n"; 
$text=implode(",",$type); 
echo "您只能上传以下类型文件: ",$text,"<br>"; 
exit(); 
} 
else 
{ 
$filename=explode(".",$_FILES['upfile']['name']); 
do 
{ 
$filename[0]=random(10); 
$randname=implode(".",$filename); 
$uploadfile=$uploaddir.$randname; 
} while(file_exists($uploadfile)); 
if (move_uploaded_file($_FILES['upfile']['tmp_name'],$uploadfile)){ 
echo "上传图片成功"; 
$imgflag=1; 
} 
else{ 
echo "上传图片失败!"; 
$imgflag=0; 
} 
} 
} 
$author=base64_encode($_POST["author"]); 
$content=base64_encode(ereg_replace("\r\n","<br>",htmlspecialchars($_POST["content"]))); 
$smiles=base64_encode($_POST["smiles"]); 
if($_POST["title"]){ 
$title=base64_encode($_POST["title"]); 
}else{ 
$title=base64_encode("无标题"); 
} 
$addtime=time(); 
if($imgflag==1){ 
$photo=base64_encode($randname); 
}else{ 
$photo="NONE"; 
} 
//保存数据 
$sql="INSERT INTO messageboard(author,title,smiles,content,photo,addtime) VALUES('$author','$title','$smiles','$content','$photo',$addtime)"; 
mysql_query($sql,$conn); 
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">\n"; 
echo "谢谢您的留言,2秒钟返回首页"; 
} 
?> 
savereply.php:保存回复 
<?php 
if(isset($_SESSION["admin_name"]) && $_SESSION["admin_name"]!="") 
{ 
if(!$_POST["content"]) 
{ 
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">\n"; 
echo "你没有填写回复内容,2秒钟返回首页"; 
exit(); 
}else{ 
$msgid=$_POST["msgid"]; 
$content=base64_encode(ereg_replace("\r\n","<br>",htmlspecialchars($_POST["content"]))); 
$addtime=time(); 
//保存数据 
$sql="INSERT INTO reply(msgid,content,addtime) VALUES($msgid,'$content',$addtime)"; 
mysql_query($sql,$conn); 
echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">\n"; 
echo "谢谢您的留言,2秒钟返回首页"; 
} 
} 
?>
PHP 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
php中的时间显示
Jan 18 PHP
php代码把全角数字转为半角数字
Dec 10 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP文件上传操作实例详解
Sep 27 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
详解PHP归并排序的实现
Oct 18 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
PHP+XML 制作简单的留言本 图文教程
Nov 02 #PHP
php 调用远程url的六种方法小结
Nov 02 #PHP
PHP 程序员应该使用的10个组件
Oct 31 #PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 #PHP
php UTF8 文件的签名问题
Oct 30 #PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 #PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 #PHP
You might like
PHP实现今天是星期几的几种写法
2013/09/26 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
php文件包含的几种方式总结
2019/09/19 PHP
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JavaScript运算符小结
2015/06/03 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
深入解析Python中函数的参数与作用域
2016/03/20 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python妙用之编码的转换详解
2017/04/21 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
2015年八一建军节活动总结
2015/03/20 职场文书
小王子读书笔记
2015/06/29 职场文书
大学生暑期实践报告
2015/07/13 职场文书
教师旷工检讨书
2015/08/15 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
青岛市的收音机研制与生产
2022/04/07 无线电