PHP+XML 制作简单的留言本 图文教程_PHP教程
1. 留言显示页面
2. 发布留言,并允许上传图片
3. 输入密码登录后可以删除留言。
1. 文件目录
upfile是保存上传图片的目录。
2. 主要界面
(1)首页,显示留言页面
(2)发表留言页面
3. XML文档格式,名称为data.xml
各字段的含义不多说,各元素的值看起来有点怪,是因为我使用了base64_encode对字符串进行了编码。
4 主要页面代码
(1)add.php
此页只是纯粹的HTML代码
(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;
}
}
}
//获取其他表单域
$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{
?>
"; echo $id.". if(isset($_SESSION["password"]) && $_SESSION["password"]!="") //如果输入了密码显示删除链接 { echo "[删除]"; } echo " |
".base64_decode($content)." |
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秒钟返回登陆页面
}
?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

当使用Win11系统时,有时候会遇到需要输入管理员用户名和密码的提示,本文将探讨在遇到这种情况时应该如何处理。方法一:1、点击【Windows徽标】,然后按【Shift+重启】进入安全模式;或者这样进入安全模式:点击开始菜单,选择设置。选择“更新和安全”;选择“恢复”中的“立即重启”;重启进入选项后选择——疑难解答——高级选项——启动设置—&mdash

无线网络已经成为人们生活中不可或缺的一部分、在当今数字化的世界中。保护个人无线网络的安全性却显得尤为重要、然而。设置一个强密码是确保你的WiFi网络不被他人侵入的关键。保障你的网络安全,本文将详细介绍如何使用手机来修改路由器WiFi密码。1.打开路由器管理页面-在手机浏览器中打开路由器管理页面、通过输入路由器的默认IP地址。2.输入管理员用户名和密码-以获得访问权限,在登录页面中输入正确的管理员用户名和密码。3.导航到无线设置页面-查找并点击进入无线设置页面,在路由器管理页面中。4.找到当前Wi

夏天雨后,经常能见到一种美丽且神奇的特殊天气景象——彩虹。这也是摄影中可遇而不可求的难得景象,非常出片。彩虹出现有这样几个条件:一是空气中有充足的水滴,二是太阳以较低的角度进行照射。所以下午雨过天晴后的一段时间内,是最容易看到彩虹的时候。不过彩虹的形成受天气、光线等条件的影响较大,因此一般只会持续一小段时间,而最佳观赏、拍摄时间更为短暂。那么遇到彩虹,怎样才能合理将其记录下来并拍出质感呢?1.寻找彩虹除了上面提到的条件外,彩虹通常出现在阳光照射的方向,即如果太阳由西向东照射,彩虹更有可能出现在东

无线网络已经成为我们生活中不可或缺的一部分、随着互联网的快速发展。为了保护个人信息和网络安全,定期更改wifi密码是非常重要的、然而。帮助大家更好地保护家庭网络安全,本文将为大家介绍如何利用手机修改wifi密码的详细教程。1.了解wifi密码的重要性wifi密码是保护个人信息和网络安全的道防线,在网络时代、了解其重要性可以更好地理解为什么需要定期修改密码。2.确认手机连接到wifi首先确保手机已连接到要修改密码的wifi网络上,在修改wifi密码之前。3.打开手机设置菜单进入手机的设置菜单、在手

在Windows10系统中,密码策略是一套安全规则,确保用户设置的密码符合一定的强度和复杂性要求,而系统提示您的密码不满足密码策略要求则通常意味着您的密码没有达到微软设定的复杂度、长度或字符种类的标准,那么这种情况要如何避免呢?用户们可以直接的找到本地计算机策略下的密码策略来进行操作就可以了,下面就一起来看看吧。不符合密码策略规范的解决方法修改密码长度:根据密码策略要求,我们可以尝试增加密码的长度,比如将原来的6位密码改为8位或更长。添加特殊字符:密码策略通常要求包含特殊字符,如@、#、$等。我

1、在另一台电脑上下载安装小白一键重装系统工具,插入空u盘制作u盘启动盘,具体的教程可以参照:2、把U盘启动盘插到需要更改密码的电脑重启,按启动热键,一般启动热键是F12、F8、F9、F10、ESC其中一个。接着出现启动界面,选择U盘的选项回车进入。3、选择【1】启动win10x64PE按回车确定。4、选择桌面上的密码修改的工具,双击打开。5、接着出现账户名列表,选中需要更改密码的账户打开。6、点击下方的修改密码命令,输入两次新的密码,然后点击OK,保存更改。7、最后拔掉U盘,重启电脑就可以正常

无线网络已经成为人们生活中不可或缺的一部分,在现代社会。或者需要在WiFi列表中查看已保存的密码,有时我们会忘记WiFi密码,然而。手机软件应运而生,为了解决这个问题。让你轻松掌握这个神奇的工具、本文将介绍一款能够帮助你快速解开所有WiFi密码的软件。1.功能强大的WiFi密码解锁工具——探秘WiFi密码解锁的奇妙世界2.简单易用的界面设计——方便快捷的操作方式3.支持多种设备——满足不同设备的使用需求4.自动更新——时刻保持最新的WiFi密码5.高速WiFi连接——轻松应对多设备同时连接的需求

我们的手机已经成为我们生活中不可或缺的一部分、在现代社会中。而无线网络连接也成为了我们日常生活中必不可少的工具。然而,有时候我们会面临这样的情况:想要连接其他设备却束手无策、我们连接了WiFi,但是忘记了密码。如何轻松地获取已连接手机WiFi密码呢?查找手机中已保存的WiFi密码1.在设置中找到“WiFi”选项找到并点击,进入手机的设置界面“WiFi”进入WiFi设置页面,选项。2.打开已连接的WiFi网络详情找到已连接的WiFi网络名称,点击进入该网络的详细信息页面,在WiFi设置页面中。3.
