PHP+MySQL 制作简单的留言本

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秒钟返回首页";

  }

  }

  ?>