Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本未正确上载图像_Php_Mysql_Image_Upload - Fatal编程技术网

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,如果出现安全漏洞,通常会导致你被解雇。