防止$ _FILES上传中的空数据

时间:2014-12-19 04:09:00

标签: php

所以我现在已经在这件事上工作了几个小时而且我已经疲惫不堪了。当我尝试更新我的联系信息时,我选择了一个图片文件,它将数字1上传到我的数据库,当我没有选择图片时,我已成功使数据库保留原始图片文件。

有人可以帮我解决这个问题吗?

if (!empty($_FILES["kon_up_path"]["name"]))
{
    $kon_up_path = move_uploaded_file($_FILES["kon_up_path"]["tmp_name"],"C:/xampp/htdocs/hansenservice/img/img/site/profil_pics/" . $_FILES["kon_up_path"]["name"]);
}
else
{
    $kon_up_path = $kontakt_row['cont_img'];
}

5 个答案:

答案 0 :(得分:2)

这是你的问题:

$kon_up_path = move_uploaded_file(...);

move_uploaded_file()成功时返回TRUE,失败时返回FALSE。它不会返回路径。如果您想要文件的路径,请使用您传递的值作为move_uploaded_file()的第二个参数。

Bonus gotcha:您需要验证提供的文件名是否可接受。您提供的代码不会向您显示它是否具有适当的扩展名,不包含任何无效字符,并且尚未存在。如果你已经在这个片段之外做了这个,那很好;如果没有,您需要,以免用户上传名为../../../../index.php的文件(例如)并吹走您的网站。考虑自动生成文件名,而不是让用户完全指定它。

答案 1 :(得分:0)

if(is_uploaded_file($_FILES['kon_up_path']['tmp_name'])) {
  //code here
}

答案 2 :(得分:0)

我认为首先print_r($ _ FILES)错误部分包含非零值,所以如果发生这种情况每次都会执行,那么你必须

if($_FILES["kon_up_path"]["name"]['error'] == 0 ){
   your code 
 }

答案 3 :(得分:0)

$kon_up_path = move_uploaded_file($_FILES["kon_up_path"]["tmp_name"],"C:/xampp/htdocs/hansenservice/img/img/site/profil_pics/" . $_FILES["kon_up_path"]["name"]);

move_uploaded_file()此函数返回false / ture;

你可以这样做:

if(move_uploaded_file($_FILES["kon_up_path"]["tmp_name"],"C:/xampp/htdocs/hansenservice/img/img/site/profil_pics/" . $_FILES["kon_up_path"]["name"])){
    $kon_up_path = C:/xampp/htdocs/hansenservice/img/img/site/profil_pics/" . $_FILES["kon_up_path"]["name"];
}

答案 4 :(得分:-1)

尝试

if (count($_FILES) >= 1)

{
    $kon_up_path = move_uploaded_file($_FILES["kon_up_path"]["tmp_name"],"C:/xampp/htdocs/hansenservice/img/img/site/profil_pics/" . $_FILES["kon_up_path"]["name"]);
}
else
{
    $kon_up_path = $kontakt_row['cont_img'];
}

问候