您的位置:首页 > 其它

$_FILES 使用addslashes处理导致上传文件失败

2014-11-23 00:00 519 查看
在PHP处理文件上传的过程中,出现一种很怪异的情况,使用move_uploaded_file函数总是返回false,

一开始以为是自己写错了,就检查相关原因,后台发现是对$_FILES进行了addslashes处理,导致文件上传失败。

解决办法,取消对$_FILES直接对addslashes处理,可以改为对单个$_FILES[‘file’](举例说明可以是其他值)处理
addslashes函数的作用时什么呢?

addslashes() 函数在指定的预定义字符前添加反斜杠。

这些预定义字符是:

单引号 (‘)

双引号 (“)

反斜杠 (\)

NULL

该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。
$magic_quotes = function_exists('get_magic_quotes_gpc') ? get_magic_quotes_gpc() : false;	// 环境是否有过滤
	if($Config['Filter']) { // 需要开启过滤
		( !$magic_quotes && (App::filter($_GET, 'addslashes') && App::filter($_POST, 'addslashes') && App::filter($_COOKIE, 'addslashes') ) );
	} else {
		( $magic_quotes && (App::filter($_GET, 'stripslashes') && App::filter($_POST, 'stripslashes') && App::filter($_COOKIE, 'stripslashes') ) );
	}

以下在不同测试环境对$_FILES进行了addslashes处理的结果

1)Windows Server 2003 + IIS7+ php5.2

2)Windows7 + apache2.2 + php5.5

3)Mac OS X 10.10 + apache2.4.9 + php5.5.14

4)CentSOS6.5 X 10.10 + apache2 + php5.4

1),2)上传失败

3),4)上传成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐