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 相关文章推荐
用php和MySql来与ODBC数据连接
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
php self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
PHP查询网站的PR值
Oct 30 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
最新版本PHP 7 vs HHVM 多角度比较
Feb 14 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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 similar_text 字符串的相似性比较函数
2010/05/26 PHP
yii操作cookie实例简介
2014/07/09 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
Nodejs中自定义事件实例
2014/06/20 NodeJs
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
Flask框架配置与调试操作示例
2018/07/23 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
使用python接入微信聊天机器人
2020/03/31 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
涪陵白鹤梁导游词
2015/02/09 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
Redis性能监控的实现
2021/07/09 Redis