1
我想創建一個配置文件編輯設置。似乎只有當圖像上傳時才編輯信息。我發現允許錯誤消息是一個條件允許一些更多的操作,所以我現在嘗試它,我的條件聲明不工作,因爲它應該。PHP文件上傳錯誤條件
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語句,不管文件檢查。
我的問題:
有什麼錯我的代碼,任何安全或效率缺陷的異常?
print_r($ _ FILES ['files'])並檢查你得到了什麼。 –
@MubasharIqbal感謝您的評論。如果我嘗試上傳圖像,我得到以下內容: 'Array([name] => Array([0] => image_uploaded_from_ios_720.jpg)[type] => Array([0] => image/jpeg)[tmp_name ] => Array([0] =>/Applications/MAMP/tmp/php/phps23tdT)[error] => Array([0] => 0)[size] => Array([0] => 19635))其他' 並且沒有嘗試上傳圖像: 'Array([name] => Array([0] =>)[type] => Array([0] =>)[tmp_name] => Array [0] =>)[error] => Array([0] => 4)[size] => Array([0] => 0))else' – YABOI
see error is array:[error] => Array [0] => 4)所以你必須檢查:$ _FILES ['files'] ['error'] [0] –