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 已经成熟
Dec 04 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
PHP类型约束用法示例
Sep 28 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
DISCUZ 分页代码
2007/01/02 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Python查看微信撤回消息代码
2018/06/07 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python制作exe文件简单流程
2019/01/24 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
python判断链表是否有环的实例代码
2020/01/31 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
毕业实习个人鉴定范文
2013/12/10 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
运动会广播稿500字
2014/01/28 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers