!空状态总是变错

时间:2016-09-11 07:17:08

标签: php html5

我无法检查表单字段是否为空并将其重定向到特定位置,具体取决于if条件是true还是false。 如果条件总是变为false并且popup.php页面被打开,那么即使在填充所有字段之后,问题仍然存在。  这是我的PHP代码:

<?php
if(isset($_POST['YourName']) && isset($_POST['EmailID']) && isset($_POST['ContactNumber']) && isset($_POST['Destination']) && isset($_POST['ModeTransport']) && isset($_POST['DateTravel']) && isset($_POST['DateReturn']) && isset($_POST['Accommodation']) && isset($_POST['Choice1']) && isset($_POST['Choice2']) && isset($_POST['Adults']) && isset($_POST['Child']) && isset($_POST["how_to_reach_you"]))

    $YourName=$_POST['YourName'];
    $EmailID=$_POST['EmailID'];
    $ContactNumber=$_POST['ContactNumber'];
    $Destination=$_POST['Destination'];
    $ModeTransport=$_POST['ModeTransport'];
    $DateTravel=$_POST['DateTravel'];
    $DateReturn=$_POST['DateReturn'];
    $Accommodation=$_POST['Accommodation'];
    $Choice1=$_POST['Choice1'];
    $Choice2=$_POST['Choice2'];
    $Adults=$_POST['Adults'];
    $Child=$_POST['Child'];
    $via=$_POST["how_to_reach_you"];

if(!empty($YourName) && !empty($EmailID) && !empty($ContactNumber) && !empty($Destination) && !empty($ModeTransport) && !empty($DateTravel) && !empty($DateReturn) && !empty($Accommodation) && !empty($Choice1) && !empty($Choice2) && !empty($Adults) && !empty($Child))

    if($via=="Email me")

        header("Location:email.php");

    else

        header("Location:call.php");

else

    header("Location:popup.php");

?>

1 个答案:

答案 0 :(得分:0)

正如我所说的isset是无关紧要的,处理空的我会这样做

  $via = (isset($_POST["how_to_reach_you"]) ? $_POST["how_to_reach_you"] : false;
  unset($_POST["how_to_reach_you"]);
  $post = array_filter($_POST); 

if( count($post) == count($_POST)){
    if($via=="Email me"){
        header("Location:email.php");
    }else{
        header("Location:call.php");
    }
}else{
    header("Location:popup.php");
}

这些代码中没有使用这些值,并且通过重定向,它们毫无意义。数组过滤器从数组中删除空元素,因此通过使用它可以检查原始数据和过滤后的版本,以判断是否有任何元素为空。如果有空值,则$post将小于$_POST。您没有检查how_to_reach_you

如果您仍然需要声明所有可以使用的变量

 extract($post);

这将创建与数组键同名的变量。