所以我再次使用php,并且我已经将变量设置为false,但是,无论我做什么,当它到达IF语句时,它都会返回TRUE版本应该回应FALSE版本。
$loginauth= $_POST['loginauth'];
$errormain = false; // I've clearly set $errormain to false
if(!empty($loginauth)){
if(!empty($username)){
if(!empty($pass)){
}else{$errormain = false;}// In an effort to fix this issue, I've set each one
}else{$errormain = true;}// of these $errormain = true; statements to false
}else{$errormain = true;}// systematically one by one, yet somehow it still echos as if it was true.
if($errormain = true){
$errormain1 = "<h1>Error</h1><em>Login Failed</em>";
}else{
$errormain1 = "<h1>Welcome</h1><em>BadgesCoding.com</em>";
}
答案 0 :(得分:2)
使用=
时,您正在分配值。因此,逻辑$errormain
始终为true
:
if ($errormain = true) {
应该使用==
进行真正的比较测试:
if ($errormain == true) {
现在,如果您将其设置为===
,那么它会将$errormain
评估为true
,但也要确保变量类型相同:
if ($errormain === true) {
但你知道吗?让您的生活更轻松这样做:
if ($errormain) {
你知道为什么吗?最后一行上的这个简单逻辑基本上检查$errormain
是true
是否== true
,而不必对=== true
或{{1}}多余。
答案 1 :(得分:1)
编辑(正确和删除嫌疑人)
根本不需要$errormain
变量。逻辑上,如果$loginauth
,$username
或$password
为空,则错误为真。因此,代码的更好但仍然有缺陷的版本如下。
$loginauth= $_POST['loginauth'];
if(!empty($loginauth) && !empty($username) && !empty($password)) {
//perform extra validation here please.
$errormain1 = "<h1>Welcome</h1><em>BadgesCoding.com</em>";
}else{
$errormain1 = "<h1>Error</h1><em>Login Failed</em>";
}
上面的答案(留给答案的宝贵智慧)
您正在使用错误的比较运算符。要正确比较布尔值,您必须使用===
运算符,因此:
不要使用==
来比较布尔值。它没有键入juggle,这意味着它基本上不能确保两个比较是相同的类型,意味着1可以等于true或任何字符串值也可以。 0将等于false。
您的代码应如下所示:
if($errormain === true){
|| (或)
if($errormain){
答案 2 :(得分:0)
如果你想比较你必须使用==运算符......我看到的另一件事是你将 $ errormain 变量设置为false ...为什么?如果密码为空 $ errormain 必须为true ...我发表评论,看看它并将变量更改为true如果你认为它是正确的。这是代码:
$loginauth = $_POST['loginauth'];
$errormain = false; // I've clearly set $errormain to false
if(!empty($loginauth)){
if(!empty($username)){
if(!empty($pass)){
//pass is not empty
}
else{
$errormain = false;//WHY IS THIS SET TO FALSE? if password is empty errormain must be false or true?
}// In an effort to fix this issue, I've set each one
}
else{
$errormain = true;
}// of these $errormain = true; statements to false
}
else{
$errormain = true;
}// systematically one by one, yet somehow it still echos as if it was true.
if($errormain == true){
$errormain1 = "<h1>Error</h1><em>Login Failed</em>";
}
else{
$errormain1 = "<h1>Welcome</h1><em>BadgesCoding.com</em>";
}