【发布时间】:2014-07-10 23:41:36
【问题描述】:
谁能看看我的代码?人们可以单击上传按钮上传一些文件,代码应该将其移动到新位置并保存。我通过上传图像文件对其进行了测试,但在我指定的文件夹中找不到该文件。我确定目录是正确的,因为我使用的目录是文件夹,它可以通向我希望它所在的文件夹。因为下面的目录有我的名字,所以我用“1”代替。提前谢谢!
我根据答案更改了代码,但它仍然给我返回错误: 警告:move_uploaded_file(/Users/angeloliiao/Documents/Screen.tiff):无法打开流:第 16 行 /usr/local/zend/apache2/htdocs/JuvoliciousProductViewer/5.php 中的权限被拒绝
警告:move_uploaded_file():无法将 '/usr/local/zend/tmp/phpdfCRD3' 移动到 /usr/local/zend/apache2/htdocs/JuvoliciousProductViewer 中的 '/Users/angelolio/Documents/Screen.tiff' /5.php 第 16 行
我尝试在终端上使用以下命令更改文件夹的权限:sudo chown -R 0755 /Users/angeloliiao/Documents.它跑了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form enctype="multipart/form-data" method="POST">
<input type="file" name="file" />
<input type="submit" name="submit" value="upload" />
</form>
<?php
if ($_FILES) {
$name = $_FILES['file']['name'];
$temp = $_FILES['file']['tmp_name'];
$dir = "/Users/angeloliao/Documents/";
if (move_uploaded_file($temp,$dir.$name)) {
echo "File is valid, and was successfully uploaded.\n";
}
} else {
echo "Possible file upload attack!\n";
}
?>
</html>
【问题讨论】:
-
您没有进行任何错误检查。您的代码应该检查错误并报告它们。这样,您就有机会在此处发布之前诊断出问题。查看 PHP 部分 Handling File Uploads - 特别是关于错误的部分 - 并检查
move_uploaded_file()的返回值。 -
别忘了
Documents/后面的斜杠,还有很多东西要让它安全或避免错误 -
我还建议将其发布到单独的页面,然后重定向回以清除提交的数据,没有人喜欢多次上传,但这有点解释工作。
-
这真的很危险。您永远不应该使用提供的文件名称来存储在您的服务器上。相反,您应该使用某种随机数(可能是散列的)。根据您的 php.ini 设置(和文件权限),想象如果有人上传了一个名为“../../../usr/local/bin/php”的文件。然后他们可以用执行恶意代码的东西替换你的 php 解释器。
-
+ 点划线(目录遍历),听@PhpMyCoder
标签: php html file-upload save