Php !空条件总是为false

Php !空条件总是为false,php,html,Php,Html,我在检查表单字段是否为空以及根据if条件是否为true将其重定向到特定位置时遇到问题。 问题是,即使在填充了所有字段之后,第二个if条件始终变为false并打开popup.php页面。 这是我的php代码: <?php if(isset($_POST['YourName']) && isset($_POST['EmailID']) && isset($_POST['ContactNumber']) && isset($_POST['Desti

我在检查表单字段是否为空以及根据if条件是否为true将其重定向到特定位置时遇到问题。 问题是,即使在填充了所有字段之后,第二个if条件始终变为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");

?>

正如我所说,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
将小于
$\u post
。您没有检查
如何达到您的

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

 extract($post);

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

这太糟糕了,你知道你可以用
isset($var1,$var2,$var3)
来代替所有的and,至于空的,你可以做
$post=array\u filter($\u post)
然后
if(count($post)==count($\u post))
我不知道,谢谢,但这不是我面临的问题,是因为这
if($via==“Email me”)。。其他的else
是无效语法,因此。。。赞成。每个if只允许一个
else
。否第二个else用于if检查!这是可能的,但是太乱了,我怎么知道呢?有些括号会有很大帮助。所以你的意思是,我只检查单选按钮是否设置了isset,而直接声明所有其他变量,然后尝试代码检查是否为空???如果没有使用它们,为什么要声明它们?如果收音机有默认值,为什么要检查它?当然,这可能不是完整的代码,但我不知道,您可以执行
提取($post)
;我有两个单选按钮。我想重定向到一个特定的页面,这取决于选中哪个单选按钮。当我移除if检查时,检查工作正常!空的所以问题是,当我添加!空条件总是变为false并重定向到popup.php很明显,这是因为某些内容为空或拼写不正确,为空,如果条件不存在。。。如果他们做了,数千台使用php的服务器就会知道这一点。