你知道为什么我的代码没有进入我的其他条件吗?

时间:2014-06-22 21:11:09

标签: php

我有一个表单可以将图像,标题,内容和图片库插入新闻。

对于我的新闻和图库图像的主要图像,我想对所选图像类型进行验证。我只想允许图像jpg,gif和png。 如果用户发布了其他类型的图片,我想显示一条错误消息,说明只接受JPG,PNG或GIF图片。'

但我有一个问题,我的验证似乎有效,但是当我正确地填写每个字段时我没有进入我的其他条件来进行插入。

我没有进入这里:

else{
echo  'test'; // this test never appear
//here I have an insert but its not entering here
}

你知道问题出在哪里吗?

所以我有我的表格:

<form method="post" enctype="multipart/form-data">
    <div class="label">
        <span class="field">Title</span>
        <input type="text" name="titulo" />
    </div>         
     <div>
        <span>Main image:</span>
        <input type="file" name="img" accept="image/gif, image/jpg, image/jpeg, image/png" /> 
     </div>


     <div class="galerry">               
     <div>
         <span class="field">Gallery:</span>
         <input type="file" name="gb[]"  multiple="multiple" accept="image/gif, image/jpg, image/jpeg, image/png"  />       
        </div>  
    </div><!--/gallery-->
    <input type="submit" value="Insert" name="sendForm"/>
</form>

然后我有我的PHP代码:

if(isset($_POST['sendForm'])){

    $f['title'] = $_POST['title'];
    $f['content'] =$_POST['content'];
    $img = $_FILES['img'];
    $extPerm = array('image/jpeg', 'image/pjpeg', 'image/png', 'image/gif');
    $gb = $_FILES['gb'];
    print_r($img);

    if(in_array('',$f) || empty($_FILES['img']['tmp_name'])){
        echo 'Please fill all fields';
    }
    else if(!in_array($img['type'],$extPerm)){
        echo 'Only JPG, PNG or GIF images are accepted.';
    }
    else if($_FILES['gb']['tmp_name'][0]){
        print_r($_FILES['gb']);
        $count= count($_FILES['gb']['tmp_name']);
        for($i=0;$i<$count;$i++){
        if(!in_array($gb['type'][$i],$extPerm)){
                echo 'Only JPG, PNG or GIF images are accepted.';
        }
        }
     } else {
        echo  'test'; // this test never appear
        //here I have an insert but its not entering here
    } 
}

1 个答案:

答案 0 :(得分:3)

对于那种事我会使用一个标志变量,比如$fine,就像这样:

$fine = true;
if(in_array('',$f) || empty($_FILES['img']['tmp_name'])){
    echo 'Please fill all fields';
    $fine = false;
}

if(!in_array($img['type'],$extPerm)){
    echo 'Only JPG, PNG or GIF images are accepted.';
    $fine = false;
}

if($_FILES['gb']['tmp_name'][0]){
     print_r($_FILES['gb']);
     $count= count($_FILES['gb']['tmp_name']);
     for($i=0;$i<$count;$i++){
        if(!in_array($gb['type'][$i],$extPerm)){
            echo 'Only JPG, PNG or GIF images are accepted.';
            $fine = false;
        }
      }
 }

if($fine){//if there was no problem
   echo  'test'; // this test now should appear
   //here I have an insert but its not entering here
}

请注意,没有else个语句,因此每个可能的情况都会被测试。这意味着您可能会回复多个错误。

你也可以将错误提交到$errors数组,然后测试if(count($errors) == 0)例如