使用PHP if语句

时间:2012-10-19 18:48:09

标签: php html

我的网站上有一个功能,用户可以创建相册来更好地整理照片。他们可以上传新照片,也可以从已上传的照片中进行选择。 在我的PHP中,我有代码通过他们上传的文件,如果他们上传任何新的。它工作得很好,但我只想在它们实际上传新照片时才能工作。现在,即使他们选择了已上传的旧照片,它也会运行。我使用HTML5“多个”属性,以便他们可以上传多张照片。在我的PHP中,如何编写条件if语句以仅在上传照片时运行此代码?

foreach ($_FILES['uploads']['name'] as $key => $file) {
   $time= time();
   $target= UPLOADPATH . $time . $file;
   move_uploaded_file($_FILES['uploads']['tmp_name'][$key], $target);
}

我尝试过使用:

if ($_FILES['uploads']['size'] != 0)
if ($_FILES != 0)
if ($_FILES['upload']['name'] !=0)
但是,到目前为止还没有成功。我能做什么?我做错了什么?

由于

更新

我最终将变量设置为$ _FILES数组中第一个元素的值。

像这样:

$file_test= $_FILES['uploads']['size']['0'];

然后我在测试条件中使用它:

($file_test != 0) { 
    // run the code;
}

感谢大家的帮助!!

3 个答案:

答案 0 :(得分:2)

我猜您将已上传的照片存储在任何位置,然后您可以使用getimagesize()函数(PHP Manual)的组合来检查上传的文件是否为图像。然后使用md5_file()函数(PHP Manual)将上传文件的MD5哈希与存储的文件进行比较。如果它们存储在数据库中,那么将每个文件的MD5直接存储在自己的字段中可能会提高性能,因此您可以轻松地在数据库中查询现有的MD5哈希值。

希望这有帮助。

答案 1 :(得分:1)

首先,您必须使用此函数重新排列$ _FILES数组

function rearrange( $arr ){
        foreach($arr as $key => $items){
            foreach($items as $i => $val){
                $array[$i][$key] = $val;
            }
        }
        return $array;
}

$files = rearrange($_FILES['uploads']);

//Then do the foreach loop upload

if(!empty($files))
{

    foreach ($files as $file) {
     // Check the file size inside the foreach loop
     if($file['size'] > 0)
     {
       $time= time();
       $target= UPLOADPATH . $time . $file['name'];
       move_uploaded_file($file['tmp_name'], $target);
     }
    }

}

答案 2 :(得分:0)

if(!empty($_FILES)){
    // you've got files?!?!
}

幸运的是在这里猜测,不太了解你的问题。