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

1. 留言显示页面

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

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

1. 文件目录

7cddffdde4c4b66358673dd580ec0510.png

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

2. 主要界面

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

cd8c1374b487798c8d59bc302e7e83c7.png

(2)发表留言页面

d76babf1bfdc6692de3bbd23f058cab0.png

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

9357f259373d6037d034f6d60e0b0f10.png

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

4 主要页面代码

(1)add.php

此页只是纯粹的HTML代码

作者
标题
表情

微笑

耿直

胜利

舌头

窃笑

哭泣

生气

愤怒

疯狂

哀伤

震惊

害羞

困倦

   smile.gif

内容
截图

(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 < $length; $i++)    //从上面的字符串中随机找length长度个字符

{

$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;

}

}

}

//获取其他表单域

$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 $id.".%22.base64_decode(%24smiles).%22".base64_decode($title)." - ".base64_decode($author)." [".$addtime."] ";  

if(isset($_SESSION["password"]) && $_SESSION["password"]!="")  //如果输入了密码显示删除链接

{

echo "[删除]";

}

echo "

";

echo "

".base64_decode($content)."";

if($photo!="NONE")

{

   echo "

%22.base64_decode(%24photo).%22";

}

}

?>

}

?>

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中文网

TAG标签:脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值