0
我想製作一個腳本,允許用戶更改他們的個人資料圖片,以便製作我的網站。這裏是表單的HTML代碼:返回false的文件上傳腳本
<form action="upload_prof_pic.php" method="POST" enctype="multipart/form-data">
<input type="file" class="btn btn-default" name="file" id="file" /><br /><br />
<input type="submit" class="btn btn-default" value="Upload Profile Picture" />
</form>
這裏是upload_prof_pic.php PHP代碼:
<?php
session_start();
require("includes/connect.php");
$results = $db->query("SELECT * FROM users WHERE username='".$_SESSION["logged_in"]."'");
$rows = $results->fetch();
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (
(
($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
)
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)
) {
if ($_FILES["file"]["error"] > 0) {
//error: uploading
header("Location: account.php?err=upload");
} else {
//success
move_uploaded_file($_FILES["file"]["tmp_name"],
"prof_pic/users/".$rows["username"]."/" . $_FILES["file"]["name"]);
$db->query("UPDATE users SET prof_pic='".$_FILES['file']['name']."' WHERE username='".$_SESSION["logged_in"]."'");
header("Location: account.php");
}
} else {
//error: invalid file
header("Location: account.php?err=invalid");
}
?>
它總是運行「//錯誤:無效文件」的腳本的一部分。誰能幫忙?它曾經工作過一次,然後我在'//成功'部分改變了一些東西。這應該沒有任何影響,但顯然它確實。
簡單地說,你的檢查之一失敗。爲什麼不在'if'語句之前運行以下代碼?'var_dump($ _ FILES ['file'] ['type'],$ _FILES ['file'] ['size'],$ extension);退出;' – Phil
或只是'print_r($ _ FILES);'得到全部 –
@Phil謝謝!事實證明,我的尺碼設置得太低了。我把它設置得更高,並且工作。 –