ホームページ >バックエンド開発 >PHPチュートリアル >PHP+XML で簡単なゲストブック グラフィックを作成するチュートリアル_PHP チュートリアル

PHP+XML で簡単なゲストブック グラフィックを作成するチュートリアル_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:42:48789ブラウズ

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)">

 
  
  
 
 
  
  
 
 
  
  
 
 
  
  
 
 
  
  
 
 
  
 
作者
标题
表情
   
   
  
内容
截图

(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 "";
  if($photo!="NONE")
  {
   echo "";
  }
 }
?>
}
?>
";
  echo $id.".".base64_decode($title)." - ".base64_decode($author)." [".$addtime."] ";  
  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=新しい DOMDocument;
$dom->load("data.xml");
$root=$root->getElementsByTagName("messages"); );
foreach($root->childNodes as $msg)
{
if($msg->firstChild->nodeValue==$_GET["id"]) //メッセージ ノードの子の ID の場合node 値は削除される ID と同じです
{
$photo=$msg->lastChild->nodeValue;
if($photo!="NONE"){ //メッセージに写真が含まれている場合、画像も削除する必要があります
$ photo_path="upfile/".base64_decode($photo);
$flag=unlink($photo_path);
if($flag){

$root->removeChild($msg);
Break;
}

}

$dom->save("data.xml");


?>

メッセージが正常に削除され、2 秒後にホーム ページに戻ります


}else{

?> ;
あなたもログインしていません。2 秒後にログイン ページに戻ります

}
?> ;



http://www.bkjia.com/PHPjc/320900.html

www.bkjia.com

http://www.bkjia.com/PHPjc/320900.html技術記事 1. メッセージ表示ページ 2. メッセージの投稿と写真のアップロードを許可 3. パスワードでログイン後、メッセージを削除できます。 1. ファイルディレクトリ upfile は、アップロードされた画像が保存されるディレクトリです。 2. メインインターフェイス (...)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。