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谢谢!事实证明,我的尺码设置得太低了。我把它设置得更高,并且工作。 –