PHP 文件上传错误情况
PHP file upload error conditions
我正在尝试创建配置文件编辑设置。似乎只有在上传图像时才编辑信息。我发现允许将错误消息作为条件允许进行更多操作,所以我尝试了它,现在我的条件语句无法正常工作。
if($_FILES['files']['error']==0) {
print_r($_FILES['files']['error']);
echo "if";
foreach($_FILES['files']['name'] as $file => $name) {
$filename = $name;
try{
if(move_uploaded_file($_FILES['files']['tmp_name'][$file],'uploads/'.$filename)) {
$updateInfo = $db->prepare("UPDATE users SET image = :image, aboutme = :aboutme WHERE id = :id");
$updateInfo->bindParam(":image", $filename);
$updateInfo->bindParam(":id", $_SESSION['user']['id']);
$updateInfo->bindParam(':aboutme', $aboutme);
$updateInfo->execute();
}
} catch(Exception $e) {
echo $e;
}
}
} elseif($_FILES['files']['error'] == 4) {
print_r($_FILES['files']['error']);
echo "Elseif";
try{
$updateInfo = $db->prepare("
UPDATE users
SET
aboutme = :aboutme
WHERE id = :id
");
$updateInfo->bindParam(':id', $_SESSION['user']['id']);
$updateInfo->bindParam(':aboutme', $aboutme);
$updateInfo->execute();
} catch(Exception $e) {
echo $e;
}
} else{
print_r($_FILES['files']['error']);
echo "else";
}
}
当我检查正在发送的数组时,它是正确的但条件错误,即:无论文件检查如何,它都会 运行 else 语句。
我的问题:
除了任何安全或效率缺陷外,我的代码是否有问题?
$_FILES['files']['error'] returns 错误代码以及文件数组。有不同类型的错误代码,所有代码都在下面 link 中提到,详细信息:
请查看
print_r($_FILES['files'])
看看你会得到什么回应。
当您发布数组响应时,您可以通过 $_FILES['files']['error'][0] 获取错误代码或使用下面提到的 switch case link .
详情请看这里:
http://php.net/manual/en/features.file-upload.errors.php
还有关于调试,总是从上到下一步步调试代码。如果遇到与数据处理相关的问题,请检查 $_POST、$_FILES、$_SERVER 等详细信息。
我正在尝试创建配置文件编辑设置。似乎只有在上传图像时才编辑信息。我发现允许将错误消息作为条件允许进行更多操作,所以我尝试了它,现在我的条件语句无法正常工作。
if($_FILES['files']['error']==0) {
print_r($_FILES['files']['error']);
echo "if";
foreach($_FILES['files']['name'] as $file => $name) {
$filename = $name;
try{
if(move_uploaded_file($_FILES['files']['tmp_name'][$file],'uploads/'.$filename)) {
$updateInfo = $db->prepare("UPDATE users SET image = :image, aboutme = :aboutme WHERE id = :id");
$updateInfo->bindParam(":image", $filename);
$updateInfo->bindParam(":id", $_SESSION['user']['id']);
$updateInfo->bindParam(':aboutme', $aboutme);
$updateInfo->execute();
}
} catch(Exception $e) {
echo $e;
}
}
} elseif($_FILES['files']['error'] == 4) {
print_r($_FILES['files']['error']);
echo "Elseif";
try{
$updateInfo = $db->prepare("
UPDATE users
SET
aboutme = :aboutme
WHERE id = :id
");
$updateInfo->bindParam(':id', $_SESSION['user']['id']);
$updateInfo->bindParam(':aboutme', $aboutme);
$updateInfo->execute();
} catch(Exception $e) {
echo $e;
}
} else{
print_r($_FILES['files']['error']);
echo "else";
}
}
当我检查正在发送的数组时,它是正确的但条件错误,即:无论文件检查如何,它都会 运行 else 语句。
我的问题:
除了任何安全或效率缺陷外,我的代码是否有问题?
$_FILES['files']['error'] returns 错误代码以及文件数组。有不同类型的错误代码,所有代码都在下面 link 中提到,详细信息:
请查看
print_r($_FILES['files'])
看看你会得到什么回应。
当您发布数组响应时,您可以通过 $_FILES['files']['error'][0] 获取错误代码或使用下面提到的 switch case link .
详情请看这里: http://php.net/manual/en/features.file-upload.errors.php
还有关于调试,总是从上到下一步步调试代码。如果遇到与数据处理相关的问题,请检查 $_POST、$_FILES、$_SERVER 等详细信息。