未填写的表单输入就像在处理PHP页面上填写的一样


Unfilled form inputs act like filled on processing PHP page

我正在运行一个非常简单的HTML页面,其中包含表单。我通过POST方法发送数据,并在PHP页面上处理它们。我做了一个简单的if语句来检查是否所有的输入都被填满了。如果不是,返回false。

问题是,当一些输入没有填写时,这些字段就像在PHP页面上填写一样,if语句返回TRUE, page继续处理。我做错了什么?

HTML:

<form class="add_content grid_12 alpha" enctype="multipart/form-data"
    method="POST" action="add_content_2.php" name="excersise_upload">
      <ul>
        <li>
          <label for="excersise_name">Název cviku:</label><br />
          <input type="text" name="excersise_name" id="excersise_name">
        </li> 
        <li>
          <label for="selected_part">Partie cviku:</label><br />
          <select name="selected_part" id="selected_part">
          <?php
            get_parts();
          ?>
          </select>
        </li>
        <li>
          <label for="selected_difficulty">Vyber obtížnost cviku:</label>
          <br />
          <select name="selected_difficulty" id="selected_difficulty">
            <option value="1">začátečník</option>
            <option value="2">mírně pokročilý</option>
            <option value="3">pokročilý</option>  
          </select>
        </li>
        <li>
          <label for="excersise_info">Popis cviku:</label><br />
          <textarea name="excersise_info" id="excersise_info"></textarea>              
        </li>
        <li>
          <input name="MAX_FILE_SIZE" value="102400" type="hidden">
          <input type="file" name="excersise_image" accept="image/jpeg">
        </li>
        <li>
          <label for="image_name">Název obrázku:</label><br />
          <input type="text" name="image_name" id="image_name">
        </li>
        <li>
          <input type="submit" value="Přidat do databáze">
        </li>
      </ul>            
    </form>
PHP:

if ((isset($_POST['excersise_name'])) &&
        (isset($_POST['selected_part'])) &&
        (isset($_POST['selected_difficulty'])) &&
        (isset($_POST['excersise_info'])) &&
        (isset($_FILES['excersise_image'])) &&
        //(isset($_FILES['image_name'])) &&
        $_FILES['excersise_image']['size'] > 0) {.....

if( ! empty($_POST['excersise_name']) && ...)代替isset()来检查数组

在PHP中尝试以下if条件:

 if((isset($_POST['excersise_name']) && !empty($_POST['excersise_name'])) &&
    (isset($_POST['selected_part']) && !empty($_POST['selected_part'])) &&
    (isset($_POST['selected_difficulty']) && !empty($_POST['selected_difficulty'])) &&
    (isset($_POST['excersise_info']) && !empty($_POST['excersise_info'])) &&
    (isset($_FILES['excersise_image']) && !empty($_FILES['excersise_image'])) &&
    //(isset($_FILES['image_name'])) &&
    $_FILES['excersise_image']['size'] > 0)

使用var_dump($_POST['field_name']);来检查如果字段作为空提交会发生什么。在你的if语句中添加一个检查,比如trim($_POST['field_name']),以在表单提交时截断空格,比如

 if(trim($_POST['field_name'])!=''){
    //Proced
 }
 else{
  //Do not proced
 }

isset检查是否存在,而不是检查是否为空。我使用isset!= ''的组合来检查它是否设置,并且它不是空的。例如

if ((isset($_POST['myThing'])) and (trim($_POST['myThing']) != ''))
{
    // Ready to go
}