PHP+XML 制作简单的留言本 图文教程
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.
