未上传的文件is_uploaded_file函数引起的问题

原因:

在一个项目中,用户反馈说,所有的客户都不能上传文件,所有恢复失败。通过调查发现,PHP是在is_uploaded_file功能。

详细分析:

正常情况下,上传文件通过PHP需要is_uploaded_file函数判断文件上传通过HTTP POST,可以确保恶意用户无法欺骗脚本访问不可访问的文件,如 / /密码等。
这问题是,它应该是tmp_name如C: / / / php99.tmp温度窗口,但它已成为C: / / / /温度窗口 / / php99.tmp,返回错误信息导致is_uploaded_file功能。

治疗方法:

添加以下代码后,问题就解决了。
文件'tmp_name} = { str_replace( / / / / / ,/,文件'tmp_name{ });
请注意,实际的字符串是2/2,另一个是用来表示转义的。

深入研究:

为什么在听写特定环境中出现这种情况,我们看到以下分析:
入站/数据的魔术报价。
在magic_quotes_gpc =
在PHP的默认配置,magic_quotes_gpc是,和PHP环境,打开magic_quotes_gpc参数自动添加效果/后得到addslashes / cookie.note,addslashes效果不加_files美元。
当magic_quotes_gpc是关闭的,有_files addslashes到数组的另外一个问题。也有这样的情况时,magic_quotes_gpc是从PHP环境。

一路走来,在SVN MooPHP代码已经修复这个问题。

is_uploaded_file功能解析:

判断文件是否通过http上传
布尔is_uploaded_file(字符串的文件名)
如果给定的文件名的文件上传通过HTTP POST,真是回来了。这可确保恶意用户无法欺骗脚本访问不可访问的文件,如 / / passwd.this等各种检验尤为重要,如果上传的文件可能会造成系统的用户或其他用户显示其内容。

为了使is_uploaded_file()函数正常工作,一个变量类似_files { } { 'userfile美元的'tmp_name}必须指定文件名,而_files { } { 'userfile美元的'name' }上传的客户端运行不正常。