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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
php array_merge下进行数组合并的代码
Jul 22 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
PHP异步调用socket实现代码
Jan 12 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
php 静态属性和静态方法区别详解
Apr 09 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
PHP迭代器接口Iterator用法分析
Dec 28 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
PHP循环结构实例讲解
2014/02/10 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python shelve模块实现解析
2019/08/28 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
证婚人搞笑证婚词
2014/01/10 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
服装设计专业求职信
2014/06/16 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
详解jQuery的核心函数和事件处理
2022/02/18 jQuery