PHP脚本未正确上载图像
我正在一家小型的、由用户维护的在线商店工作,并试图允许我的最终用户(商店管理员)上传产品的图形。但是,当我运行这个脚本时,它实际上并不存储图像。我根据这里的各种技巧和一个教程构建了这个脚本,除了图像上传部分之外,其他一切都正常工作了PHP脚本未正确上载图像,php,mysql,image,upload,Php,Mysql,Image,Upload,我正在一家小型的、由用户维护的在线商店工作,并试图允许我的最终用户(商店管理员)上传产品的图形。但是,当我运行这个脚本时,它实际上并不存储图像。我根据这里的各种技巧和一个教程构建了这个脚本,除了图像上传部分之外,其他一切都正常工作了 // Set the image target directory here $target = "itemImages/"; $target = $target . basename($_FILES["image"]["name"]); // Variables
// Set the image target directory here
$target = "itemImages/";
$target = $target . basename($_FILES["image"]["name"]);
// Variables get POSTed here - just tack new ones on at the end.
// Various POSTs omitted for brevity
$pic=($_FILES["image"]["name"]);
// Places the picture in the folder
if(move_uploaded_file($_FILES["image"]['tmp_name'], "itemImages/"))
{
echo "The file " . basename($_FILES['uploadedfile']["name"]) . " has been uploaded.<br />";
}else {
echo "There was an issue adding this item. Please try again.<br />";
}
// Writes variables to the database
mysql_query("INSERT INTO tbl_item (itemNAME,itemDESC,itemCOST,itemHCOL,itemHSIZ,itemIMG)
VALUES ('$itemName','$itemDesc','$itemCost','$hasColor','$hasSize','$pic')");
mysql_close($con);
?>
//在此处设置映像目标目录
$target=“itemmages/”;
$target=$target。basename($_文件[“图像”][“名称”]);
//变量发布在这里-只需在末尾添加新的变量。
//为简洁起见,省略了各种帖子
$pic=($_文件[“图像”][“名称]);
//将图片放在文件夹中
如果(移动上传的文件($文件[“图像”][“tmp\U名称”],“itemImages/”)
{
回显“文件”。已上载basename($_FILES['uploadedfile'][“name”])。
;
}否则{
echo“添加此项目时出现问题。请重试。
”;
}
//将变量写入数据库
mysql_查询(“插入tbl_项(itemNAME、itemDESC、itemCOST、itemHCOL、itemHSIZ、itemIMG))
值(“$itemName”、“$itemDesc”、“$itemCost”、“$hasColor”、“$hasSize”、“$pic”);
mysql_close($con);
?>
非常感谢您提供的任何帮助、提示、建议、见解等。请确保您的web服务器(例如
Apache
)运行时(例如www-data
)的用户对itemImages文件夹具有写入权限。移动上传的文件
需要一个文件名作为其目标。它不会盲目地移动到目录,所以
move_uploaded_files($_FILES..., 'somedir/somefile.txt');
有效,但是
move_uploaded_file($_FILES..., 'somedir/');
不会
另外,请注意,您的数据库操作容易受到攻击。您正在盲目地插入上载文件的远程名称(
['name']
通过$pic),并且该名称完全由远程用户控制。确保.php文件和您正在写入的文件夹具有相同的“所有者”。或者尝试将itemImages文件夹的权限设置为777(不建议这样做,只是一种调试策略)mysql更新和成功消息是否正常?您的表单标签上是否有正确的enctype
?您能给我们看一下标签吗?谢谢,在您的帮助下,我已经成功了。我也感谢您对SQL注入的投入,并将做一些研究来纠正它。我不太担心,因为整个事情对公司员工来说都是内部的,但使用最佳实践总是好的。即使是内部使用,也不太可能受到攻击,有人会在某个时候上传一个包含“
或其他SQL元字符的文件,然后把事情搞砸。不正确的转义是一个bug,如果出现安全漏洞,通常会导致你被解雇。