如何手动创建$ _FILES文件对象?

时间:2011-09-11 15:16:53

标签: php file

我正在攻击Chamilo,因此当用户查看他们的个人日程时,它会自动导入iCal文件。到目前为止,我已经能够确定需要调用的函数以实现此目的。

但是,执行实际导入的函数需要从$_FILES超全局引用文件对象。它从$file['tmp_name']获取文件名,并在其上调用file_get_contents()

我已经考虑过复制函数并对其进行修改,因此它需要一个常规的文件对象,但这似乎是一种处理它的糟糕方式。更好的解决方案是构造它期望的文件对象。但我不知道该怎么做,谷歌搜索没有帮助。

有没有人有想法?

1 个答案:

答案 0 :(得分:4)

如果库编写得很好,那么这是不可能的 - 即使你构造了一个人工$_FILES数组,也不能欺骗is_uploaded_file()move_uploaded_file()。这些将明确检查传递的文件是否实际上传。 (很久以前,有一个安全漏洞利用了这个漏洞.AFAIK,_uploaded_file()函数被引入以响应这一点。)

您可以尝试使用正确的值构建$_FILES数组 - 您可以看到预期的结构here

如果这不起作用(如上所述,它不应​​该),你将别无选择,只能改变库。无论如何,在我看来,那是更清洁的方式。