Posted in PHP onNovember 02, 2009
留言显示页面:比上一个例子增加了分页和留言回复的功能
主要代码:
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 制作简单的留言本
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@