柒微博客

xiuno教程

xiunobbs 附件上传分析

2019-08-10 xiuno教程 220

1.截图图片上传

发送请求地址:/?attach-create.htm
请求数据:
  is_image:1
  filetype:jpg
  width:563
  height:228
  name:image.png
  data:base64编码,太长就不写了
返回数据:
{
    "code": "0",
    "message": {
        "url": "upload/tmp/14_AWAP84FX3379FAC.png",
        "orgfilename": "image.png",
        "filetype": "image",
        "filesize": 8857,
        "width": 563,
        "height": 228,
        "isimage": 1,
        "downloads": 0,
        "aid": "_0"
    }
}


2.附件上传(图片)

发送请求地址:/?attach-create.htm
请求数据:
  is_image:0
  width:741
  height:531
  name:图片1.png
  data:
返回数据:
{
    "code": "0",
    "message": {
        "url": "upload/tmp/14_VUU8996UF7CZ4M2.png",
        "orgfilename": "图片1.png",
        "filetype": "image",
        "filesize": 37058,
        "width": 741,
        "height": 531,
        "isimage": 0,
        "downloads": 0,
        "aid": "_1"
    }
}


可以看出附件上传跟截图上传,is_image字段有区别


3.附件上传(doc文件)

发送请求地址:/?attach-create.htm
请求数据:
is_image:0
width:0
height:0
name:3.12.doc
data:base64编码
返回数据:
{
    "code": "0",
    "message": {
        "url": "upload/tmp/14_SHNN6SYK93U2MBJ.doc",
        "orgfilename": "3.12.doc",
        "filetype": "office",
        "filesize": 14336,
        "width": 0,
        "height": 0,
        "isimage": 0,
        "downloads": 0,
        "aid": "_2"
    }
}


总结:附件上传非图片文件,is_image:0 width:0  height:0 这三个字段均为0

此时我们刷新发帖页面,可以发现刚刚上传的附件还存在:

由此我推算附件地址应该是存在dession中,返回的"aid": "_2" 应该就是对应session中的附件编号

查看route/attach,发现确实如此


4.我再点击一下删除附件:发送了一个post请求

请求地址:/attach-delete-_1.htm
请求数据:空  
可想而知,url中的_1就是请求删除session中的附件i



5.点击发帖,发送了一个post请求

请求地址:/thread-create.htm
请求数据:
doctype:0
quotepid:0
fid:5
subject:dsasd
message:<p>sadsa</p

毛线呐~好像一个跟附件相关的字段都没有

打开route/thread.php文件

里面发现了这个函数: thread_create($thread, $pid)  看来精髓都在这个函数了
打开函数定义:
发现用到了这几个函数:
$pid=post__create($post, $gid)
attach_assoc_post($pid);// 关联附件,好吧,精髓中的精髓应该就在这个函数里面了

再打开attach_assoc_post()这个函数定义,里面发现了几个核心语句:
$sess_tmp_files = _SESSION('tmp_files');//取出session中的文件路径
xn_copy($file['path'], $destfile) ;// 将文件移动到 upload/attach 目录
foreach($tmp_files as $file) {
 $arr=从$file中也就是上传附件时存在session中的数据,取出数据。
 但是这里没留hook,想从这里弄积分下载的话有点难搞,
 虽说数据库预留了cerdits字段
 $aid = attach_create($arr); //$arr 将附件插入附件表
}


好了,先写到这里了。以后有新发现再更新文章

转载请说明来源于"柒微博客"

本文地址:http://7we.net/article-47.html

文章评论

请您先登录|注册后再进行回复
回复区