PHP $ _FILES数组损坏,当空包含无效字符时

时间:2011-11-17 18:30:03

标签: php arrays forms

我创建的CMS中包含很多表单。直到今天,他们一直都很好。我遇到的问题与上传的文件和包含奇数字符的$_FILES数组有关。

包含在我拥有的表单中:

<tr>
    <td>Related PDF File:</td>
    <td><input type="file" name="pdfFile" size=50" value="<? pv($frm["pdfFile"]) ?>"></td>
</tr>

在提交时,它返回我的脚本并验证该字段是否已提交文件:

if($_FILES['pdfFile']['name'] != '' && $_FILES['pdfFile']['error'] == 0) {
    $up_file->save($CFG->dirroot . "/docs/services/", "pdfFile", 1);
    $frm['pdfFile'] = $up_file->getFilename('pdfFile');
}

问题是如果我在没有提交任何字段时显示我的$ _FILES数组,我会得到以下内容:

Array
(
    [pdfFile] => Array
        (
            [name] => ò…
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )
)

[name]内有一些时髦的特殊字符。有没有人见过这个?它只发生在我的一台服务器上。如果输入字段实际上有提交的文件,则没有问题。

提前感谢任何评论。

2 个答案:

答案 0 :(得分:2)

找出问题所在。 PHP最近由我们的托管服务提供商更新到5.3.8。此版本中存在一个错误,它删除了上传文件中的第一个字符。您可以在此处查看错误:$_FILES 'name' missing first character after upload.

由于某些原因,更新后magic_quotes_gpc设置为on。关掉它,一切都很好。

感谢您的评论。

答案 1 :(得分:0)

[error] => 4

使用documentation

UPLOAD_ERR_NO_FILE

    Value: 4; No file was uploaded.

确保您的enctype="multipart/form-data"代码中包含<form>属性。