1. 留言显示页面
2. 发布留言,并允许上传图片
3. 输入密码登录后可以删除留言。
1. 文件目录
upfile是保存上传图片的目录。
2. 主要界面
(1)首页,显示留言页面
(2)发表留言页面
3. XML文档格式,名称为data.xml
各字段的含义不多说,各元素的值看起来有点怪,是因为我使用了base64_encode对字符串进行了编码。
4 主要页面代码
(1)add.php
此页只是纯粹的HTML代码
- <form action="saveadd.php" enctype="multipart/form-data" method="post" name="myform">
- <table border="1" width="600">
- <tr>
- <td>作者</td>
- <td align="left"><input type="text" name="author" size="10"></td>
- </tr>
- <tr>
- <td>标题</td>
- <td align="left"><input type="text" name="title" size="50"></td>
- </tr>
- <tr>
- <td>表情</td>
- <td align="left">
- <select name="smiles" size="1">
- <option value="smile.gif">微笑</option>
- <option value="biggrin.gif">耿直</option>
- <option value="victory.gif">胜利</option>
- <option value="tongue.gif">舌头</option>
- <option value="titter.gif">窃笑</option>
- <option value="cry.gif">哭泣</option>
- <option value="curse.gif">生气</option>
- <option value="huffy.gif">愤怒</option>
- <option value="mad.gif">疯狂</option>
- <option value="sad.gif">哀伤</option>
- <option value="shocked.gif">震惊</option>
- <option value="shy.gif">害羞</option>
- <option value="sleepy.gif">困倦</option>
- <option value="sweat.gif">汗</option>
- </select>
- <img src="smiles/smile.gif" name="img">
- </td>
- </tr>
- <tr>
- <td>内容</td>
- <td align="left"><textarea name="content" cols="70" rows="10"></textarea></td>
- </tr>
- <tr>
- <td>截图</td>
- <td align="left"><input type="file" name="upfile" size="50"></td>
- </tr>
- <tr>
- <td colspan="2"><input type="submit" value="提交"/></td>
- </tr>
- </table>
- </form>
复制代码
(2)savadd.php
用于保存留言信息
- <?php
- if(!$_POST["author"] || !$_POST["content"])
- {
- echo "<meta http-equiv="refresh" content="2;url=index.php">\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 "<meta http-equiv="refresh" content="2;url=index.php">\n";
- $text=implode(",",$type);
- echo "您只能上传以下类型文件: ",$text,"<br>";
- 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","<br>",$_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 "<meta http-equiv="refresh" content="2;url=index.php">\n";
- echo "谢谢您的留言,2秒钟返回首页";
- }
- ?>
复制代码
(3)index.php
本页面用于显示留言信息
- <p><a href="add.php">添加留言</a></p>
- <?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{
- ?>
- <table border="1" width="700">
- <?php
- 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 "<tr>";
- echo "<td align=left bgcolor=#CCCCFF>";
- echo $id.".<img src='smiles/".base64_decode($smiles)."'>".base64_decode($title)." - ".base64_decode($author)." [".$addtime."] ";
- if(isset($_SESSION["password"]) && $_SESSION["password"]!="") //如果输入了密码显示删除链接
- {
- echo "[<a href='del.php?id=".$id."'>删除</a>]";
- }
- echo "</td></tr>";
- echo "<tr><td align=left>".base64_decode($content)."</td></tr>";
- if($photo!="NONE")
- {
- echo "<tr><td align=left><img src='upfile/".base64_decode($photo)."'></td></tr>";
- }
- }
- ?>
- <?php
- }
- ?>
- </table>
- <?php
- if(isset($_SESSION["password"]) && $_SESSION["password"]!=""){
- ?>
- <p><a href="logout.php">退出管理</a></p>
- <?php
- }else{
- ?>
- <p><a href="login.php">登陆管理</a></p>
- <?php
- }
- ?>
复制代码
(4) 删除留言
- <?php
- 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 "删除图片成功<br>";
- }
- }
- $root->removeChild($msg);
- break;
- }
- }
- $dom->save("data.xml");
- ?>
- 删除留言成功,2秒钟返回首页
- <meta http-equiv="refresh" content="2;url=index.php">
- <?php
- }else{
- ?>
- 您还未登陆,2秒钟返回登陆页面
- <meta http-equiv="refresh" content="2;url=login.php">
- <?php
- }
- ?>
复制代码
|
上一篇: PHP chmod 函数与批量修改文件目录权限下一篇: 基于HTTP长连接的"服务器推"技术的PHP 简易聊天室
|