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中插入当前时间
Apr 06 PHP
开源SNS系统-ThinkSNS
May 18 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
php表单处理操作
Nov 16 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
PHP 代码规范小结
2012/03/08 PHP
php jsonp单引号转义
2014/11/23 PHP
PHPMailer发送邮件
2016/12/28 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
python中list循环语句用法实例
2014/11/10 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
小学英语教师先进事迹
2014/05/28 职场文书
企业法人授权委托书
2014/09/25 职场文书
董事长致辞
2015/07/29 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL
idea下配置tomcat避坑详解
2022/04/12 Servers