如何解决PHP文件上传表单不起作用
| 我已经在另一个网站上使用了此代码,它的工作原理绝对不错,所以我对为什么它无法正常工作感到非常困惑。我唯一更改的是文件要移动到的目录,但文件从未上传。我已经三重检查了所有内容,一切似乎都很好。全部代码执行正确,所有信息均正确输入数据库,唯一的问题是文件未上传。我很生气,试图让它起作用!请帮忙! HTML格式:<p>
<h2>Add News</h2><br />
REQUIRED *<br /><br />
<form enctype=\"multipart/form-data\" action=\'addnews2.php\' method=\'post\' onsubmit=\"chose.value = uploadForm()\" name=\"newsform\">
<p>Headline: *
<br>
<input name=\"title\" type=\"text\" size=\"75\">
<br />
<br/>
News: *<br>
<textarea name=\"text\" cols=\"75\" rows=\"10\" width=\"200\"></textarea><br /><br />
Image File:
<br>
<input type=\"file\" name=\"filetoupload\" id=\"filetoupload\"><br/><br />
<input type=\"submit\" name=\"choose\" value=\"Submit\" />
</p>
</form>
</p>
处理页面:
$date=date(\"l F d,Y\");
$title=stripslashes($_POST[\'title\']);
$text=stripslashes($_POST[\'text\']);
if (($_FILES[\"filetoupload\"][\"type\"] == \"image/gif\")
|| ($_FILES[\"filetoupload\"][\"type\"] == \"image/jpeg\")
|| ($_FILES[\"filetoupload\"][\"type\"] == \"image/pjpeg\")
|| ($_FILES[\"filetoupload\"][\"type\"] == \"image/png\")
|| ($_FILES[\"filetoupload\"][\"type\"] == \"image/jpg\"))
{
if ($_FILES[\"filetoupload\"][\"error\"] > 0)
{
echo \"Return Code: \" . $_FILES[\"filetoupload\"][\"error\"] . \"<br />\";
}
else
{
if (file_exists(\"images/news/\" . $_FILES[\"filetoupload\"][\"name\"]))
{
echo $_FILES[\"filetoupload\"][\"name\"] . \" already exists. \";
}
move_uploaded_file($_FILES[\"filetoupload\"][\"tmp_name\"],\"images/news/\" . $_FILES[\"filetoupload\"][\"name\"]);
}
}
$image = \"images/news/\".$_FILES[\'filetoupload\'][\'name\'];
if($title==\"\"||$text==\"\"){
die(\"You need to fill in all details\");
}
connect_to_db();
$query=\"insert into news (date,title,text,image) values (\'\".$date.\"\',\'\".mysql_real_escape_string($title).\"\',\'\".mysql_real_escape_string($text).\"\',\'\".$image.\"\')\";
$result=mysql_query($query);
if(mysql_affected_rows()==1){
header(\"Location:index.php?page=Admin&news=added\");
}
else{
die(\"there was a problem\");
}
mysql_close();
解决方法
看起来您可能缺少else语句,代码格式已关闭并引起混乱:
if (file_exists(\"images/news/\" . $_FILES[\"filetoupload\"][\"name\"]))
{
echo $_FILES[\"filetoupload\"][\"name\"] . \" already exists. \";
}else {
move_uploaded_file($_FILES[\"filetoupload\"][\"tmp_name\"],\"images/news/\" . $_FILES[\"filetoupload\"][\"name\"]);
}
试一试。如果不是这样,请检查您的权限等。并确保文件没有被上传,只是不在您期望的位置。
只是一点信息,在进行图像检查之前,我将先进行$title
和$text
检查。如果您都不希望将图像都上传到站点,则两者都为null。在插入之前,还应该在映像路径中转义文件名:
$image = \"images/news/\".mysql_real_escape_string($_FILES[\'filetoupload\'][\'name\']);
因为那样也很容易注射。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。