正如标题所说,我是一个刚刚开始学习html php和css 3天前的新手,到目前为止测试半登录系统时效果还不错(obv是一个无效的系统) 我发现我的代码不起作用并总是向代码发送错误答案,导致" else"要激活的代码。想知道为什么。 $ name和$ password从另一个正确配置的文件中获取它们的值。
$name = $_POST["name"];
$password = $_POST["password"];
if ($name == ['Tal'] && $password == ['14']) {
echo "Hello, " . $name;
} else {
echo 'Either the name or the password (or both) is incorrect.';
}
答案 0 :(得分:3)
$name = $_POST["name"];
$password = $_POST["password"];
if ($name == 'Tal' && $password == '14') {
echo "Hello, " . $name;
} else {
echo 'Either the name or the password (or both) is incorrect.';
}
您不应该使用['Tal']
,因为它是一个数组。如果你写var_dump(['Tal']);
,你会看到如下内容:array(1) { [0]=> string(3) "Tal" }
。如果你写var_dump('Tal');
,你会看到string(3) "Tal"
应该等于$ name。
首先要做的事情:
问题:
让我们说$name
是Tal
而$password
是14
。这两个值都是字符串。使用代码$name == ['Tal']
,您基本上将单个字符串与一个永远不为真的字符串数组进行比较。
为简单起见,想象一下将单个字符t
与一个字符数组tal
进行比较(在现实世界中,字符数组是一个句子)。 t
不等于tal
,永远不会。
与您的代码相同,单个字符串与字符串数组不同。这就是我将数组['Tal']
转换为单个字符串'Tal'
的原因,因为您从表单收到的$name
不是数组,它&# 39;单个字符串'Tal'
,它将在您的if语句中生成true
。
<强>的var_dump 强>
var_dump - 转储有关变量的信息。我用它来告诉你['Tal'])
和'Tal'
不一样。一个是数组,一个是字符串。
Code:
var_dump(['Tal']);
Produces:
array(1) {
[0]=>
string(3) "Tal"
}
Code:
var_dump('Tal');
Produces:
string(3) "Tal"
我希望你现在知道不同之处。