不同的方法来实现if / else if / else,我缺少什么

时间:2011-10-12 23:45:37

标签: php if-statement

所以我的问题是(除了是一个菜鸟)是因为在我的学生中,我试图检查一些事情的真/假,无论我如何设置我的代码,如果满足一个参数,它会去即使第二个参数为false,也是如此。

例如,我有一个表单即时工作,我想知道是否在名称/传递字段中输入任何数据。如果没有,则重定向回表单页面。

继承人发生了什么:

html / pseudo:

<html and other header tags>
<form method="post" action="procfile.php">
  <table>
    <tr>
        <td>Username:</td>
        <td><input type="text" name="user" id="user"></td>
    </tr>
    <tr>
        <td>password:</td>
        <td><input type="text" name="password" id="password"></td>
    </tr>
        <tr>
        <td></td>
        <td><input type="submit" value="submit"></td>

    </tr>
</table>

</form>
</html>

至于php,我首先检查空,原来我是这样的:

<?php
if((empty($_POST['user']))&&(empty($_POST['password']))){
    header("Location:index.php"); /* Redirect browser */

exit;
}

?>

这不起作用。我没有语法错误或任何东西......所以,过了一段时间后我改为更长的版本,所以从上面开始就这样了。

<?php

if(empty($_POST['user'])){
    header("Location:index.php"); /* Redirect browser */


exit;
}  else if((empty($_POST['password']))){
    header("Location:index.php"); /* Redirect browser */


exit;
} 

?>

这也行不通。我拿出了其他if并且将一堆if语句一起放在另一个ontop上,这样如果一个失败,重定向,如果它通过,则转到下一个if语句......

这也行不通。

总体而言,我感到愚蠢的问题是,在所有这些问题上,当 第一 的条件时值得满足 ,它会跳过它下面的其余PHP并继续加载html。只发生在第一个上。例如,如果我只输入密码,它会将我抛回索引。如果我首先输入用户名而不是pass..it让我通过偶然,还有其他if语句有自己的规则。我把PHP放在了所有东西上,以确保它正在发生b4任何东西都被发送但无济于事。

想法? 这些条件我做错了什么?

有趣的是,当我测试POST的值与db中的结果值(来自我工作的另一个脚本)时,如下所示:

if((!empty($user)) && (!empty($pass))) {
    //connect to db
    $connect2db = mysqli_connect('127.0.0.1', 'root', 'pass', 'db');
        if(!$connect2db){
            die("error connectin to Database" . mysqli_error);
        }

    $dbq = "SELECT * FROM accounts;";
    $dbqDoIt = mysqli_query($connect2db, $dbq)or die("error".mysqli_error($connect2db));

    $getNames = mysqli_fetch_array($dbqDoIt);
        //check if user acc. exists inside vS database.
        if(($name === $getNames['username']) && ($pass === $getNames['password'])){
//do something

}

当我这样检查时不是空的时候,它仍然保持UNTIL两个条件都满足...当我在上面的例子中检查空(我也尝试过!isset)时,它很糟糕地使我失望.... / p> 我在做错了什么?请帮忙。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

你需要一个OR。

if(!$_POST['user'] || !$_POST['password']){
    header("Location: index.php"); /* Redirect browser */
    exit;
}