所以我的问题是(除了是一个菜鸟)是因为在我的学生中,我试图检查一些事情的真/假,无论我如何设置我的代码,如果满足一个参数,它会去即使第二个参数为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> 我在做错了什么?请帮忙。
提前谢谢你。
答案 0 :(得分:1)
你需要一个OR。
if(!$_POST['user'] || !$_POST['password']){
header("Location: index.php"); /* Redirect browser */
exit;
}