0

0

PHP+XML 制作简单的留言本 图文教程

php中文网

php中文网

发布时间:2016-06-13 12:20:21

|

893人浏览过

|

来源于php中文网

原创

1. 留言显示页面

2. 发布留言,并允许上传图片

3. 输入密码登录后可以删除留言。

1. 文件目录

 

upfile是保存上传图片的目录。

2. 主要界面

(1)首页,显示留言页面

 

 

 

(2)发表留言页面

 

3. XML文档格式,名称为data.xml

 

各字段的含义不多说,各元素的值看起来有点怪,是因为我使用了base64_encode对字符串进行了编码。

 

4 主要页面代码

(1)add.php

此页只是纯粹的HTML代码

action="saveadd.php" enctype="multipart/form-data" method="post" name="myform" onsubmit="return go(this)">

 
  
  
 
 
  
  
 
 
  
  
 
 
  
  
 
 
  
  
 
 
  
 
作者
标题
表情
   
   PHP+XML 制作简单的留言本 图文教程
  
内容
截图

(2)savadd.php

用于保存留言信息

if(!$_POST["author"] || !$_POST["content"]) 
{
 echo "\n";
 echo "你没有填写留言姓名或内容,2秒钟返回首页";
 exit();
}else{
 $imgflag=0;   //用于判断是否需要上传图片
 function random($length)   //此函数用于生成一个随机的图片文件名(不含扩展名),以防止与现有图片重复
 {
  $hash = 'IMG-';
  $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
  $max = strlen($chars) - 1; 
  for($i = 0; $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 "\n";
   $text=implode(",",$type);
   echo "您只能上传以下类型文件: ",$text,"
";
   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)){   //保存上传的图片到upfile文件夹
    echo "上传图片成功";
    $imgflag=1;
   }
   else{
    echo "上传图片失败!";
    $imgflag=0;
   }

动易网上商城管理系统 2006 Sp6 Build 1120 普及版
动易网上商城管理系统 2006 Sp6 Build 1120 普及版

将产品展示、购物管理、资金管理等功能相结合,并提供了简易的操作、丰富的功能和完善的权限管理,为用户提供了一个低成本、高效率的网上商城建设方案包含PowerEasy CMS普及版,主要功能模块:文章频道、下载频道、图片频道、留言频道、采集管理、商城模块、商城日常操作模块500个订单限制(超出限制后只能查看和删除,不能进行其他处理) 无订单处理权限分配功能(只有超级管理员才能处理订单)

下载

  }
 }

//获取其他表单域

 $author=base64_encode($_POST["author"]);  
 $content=base64_encode(ereg_replace("\r\n","
",$_POST["content"]));
 $smiles=base64_encode($_POST["smiles"]);
 if($_POST["title"]){
  $title=base64_encode($_POST["title"]);
 }else{
  $title=base64_encode("无标题");
 }
 $addtime=date("Y-m-d");
 if($imgflag==1){  //如果有上传图片
  $photo=base64_encode($randname);
 }else{  //否则将photo元素的值设置为NONE
  $photo="NONE";
 }

 $dom=new DOMDocument('1.0','gb2312');   //指定XML的格式
 $dom->load("data.xml");     //加载
 $root=$dom->getElementsByTagName("messages");   //获取根节点
 $root=$root->item(0);       
 $last_id=$root->lastChild->firstChild->nodeValue;  //获取最后一个message的第一个子节点(即id节点)的值
 $id=$last_id+1;  //新增消息的id
 settype($id,"string");  //将其转换为字符型


 $message=$root->appendChild(new DOMElement('message'));  //添加message节点
 $el_id=$message->appendChild(new DOMElement('id'));  //添加message节点的各个子节点
 $el_id->appendChild($dom->createTextNode($id));

 $el_author=$message->appendChild(new DOMElement('author'));
 $el_author->appendChild($dom->createTextNode($author));

 $el_title=$message->appendChild(new DOMElement('title'));
 $el_title->appendChild($dom->createTextNode($title));

 $el_smiles=$message->appendChild(new DOMElement('smiles'));
 $el_smiles->appendChild($dom->createTextNode($smiles));

 $el_content=$message->appendChild(new DOMElement('content'));
 $el_content->appendChild($dom->createTextNode($content));

 $el_addtime=$message->appendChild(new DOMElement('addtime'));
 $el_addtime->appendChild($dom->createTextNode($addtime));

 $el_photo=$message->appendChild(new DOMElement('photo'));
 $el_photo->appendChild($dom->createTextNode($photo));

 $dom->save("data.xml");  //保存XML


 echo "\n";
 echo "谢谢您的留言,2秒钟返回首页";

}
?>

(3)index.php

本页面用于显示留言信息

添加留言

$dom=new DOMDocument('1.0','gb2312');   
$dom->load("data.xml");       //加载
$root=$dom->getElementsByTagName("messages"); 
$root=$root->item(0);      
$message=$root->getElementsByTagName("message");   //获取所有message节点

$message_count=$message->length;   //计算有多少条留言
echo "当前共有".$message_count."条留言";

if($message_count==0){
 echo "暂时没有留言\n";
}else{
?>


 for($i=$message_count-1;$i>=0;$i--)    //我们需要对留言按倒序排列
 {
  $msg=$message->item($i);

  foreach($msg->childNodes as $child)   //message节点的各个子节点
  {
   if($child->nodeName=="id")
   {
    $id=$child->nodeValue;
   }
   if($child->nodeName=="author")
   {
    $author=$child->nodeValue;
   }
   if($child->nodeName=="title")
   {
    $title=$child->nodeValue;
   }
   if($child->nodeName=="smiles")
   {
    $smiles=$child->nodeValue;
   }
   if($child->nodeName=="content")
   {
    $content=$child->nodeValue;
   }
   if($child->nodeName=="photo")
   {
    $photo=$child->nodeValue;
   }
   if($child->nodeName=="addtime")
   {
    $addtime=$child->nodeValue;
   }

  }
  echo "";
  echo "";
  echo "";
  if($photo!="NONE")
  {
   echo "";
  }
 }
?>
}
?>
";
  echo $id.".PHP+XML 制作简单的留言本 图文教程".base64_decode($title)." - ".base64_decode($author)." [".$addtime."] ";  
  if(isset($_SESSION["password"]) && $_SESSION["password"]!="")  //如果输入了密码显示删除链接
  {
   echo "[删除]";
  }
  echo "
".base64_decode($content)."
PHP+XML 制作简单的留言本 图文教程

 if(isset($_SESSION["password"]) && $_SESSION["password"]!=""){
?>

退出管理

 
}else{
?>

登陆管理

 
}
?>

 

(4) 删除留言

if(isset($_SESSION["password"]) && $_SESSION["password"]!="")
{

    $dom=new DOMDocument; 
    $dom->load("data.xml");      
    $root=$dom->getElementsByTagName("messages"); 
    $root=$root->item(0);
 foreach($root->childNodes as $msg)
 {
  if($msg->firstChild->nodeValue==$_GET["id"])   //如果message节点的id子节点的值跟要删除的id相等
  {
   $photo=$msg->lastChild->nodeValue;
   if($photo!="NONE"){   //如果留言包含图片,还应该将图片删除
    $photo_path="upfile/".base64_decode($photo);
    $flag=unlink($photo_path);
    if($flag){
     echo "删除图片成功
";
    }
   }

   $root->removeChild($msg);
   break;
  }
 }
 $dom->save("data.xml");


?>

删除留言成功,2秒钟返回首页

}else{
?>
您还未登陆,2秒钟返回登陆页面

}
?>

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

11

2026.01.12

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

106

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

64

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

139

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

93

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

480

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

52

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.5万人学习

XML教程
XML教程

共142课时 | 5.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号