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


How do I manually create an $_FILES file object?

我正在破解Chamilo,所以当用户查看他们的个人议程时,它会自动导入一个iCal文件。到目前为止,我已经能够确定需要调用哪些函数来实现这一点。

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

我想过复制函数并修改它,以便它期望一个常规的文件对象,但这似乎是一种糟糕的处理方式。更好的解决方案是构造它所期望的文件对象。但我不知道怎么做,谷歌也帮不上忙。

有人有什么想法吗?

如果库编写得很好,这将是不可能的—即使您构建了一个人工的$_FILES数组,您也无法欺骗is_uploaded_file()move_uploaded_file()。这些将显式检查传递的文件是否实际上传。(很久以前曾经有一个安全漏洞利用了这一点。我想,_uploaded_file()函数就是为此而引入的。)

你可以尝试用正确的值构建一个$_FILES数组——你可以在这里看到预期的结构。

如果这不起作用(如上所述,它不应该起作用),您将别无选择,只能更改库。在我看来,这是更干净的方式。