我的PHP代码总是发送一个错误的响应,即使它不应该

时间:2017-08-06 16:13:07

标签: php

正如标题所说,我是一个刚刚开始学习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.';
}

1 个答案:

答案 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。

首先要做的事情:

  1. A string is series of characters.
  2. Array is a group of related data values (called elements) that are grouped together.
  3. 问题:

    让我们说$nameTal$password14。这两个值都是字符串。使用代码$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"
    }
    
    • 输入:数组
    • 元素数量: 1
    • 第一个元素索引: 0
    • 第一个元素类型:字符串
    • 第一个元素长度: 3
    • 第一个元素值: Tal
    Code:
    var_dump('Tal');
    
    Produces:
    string(3) "Tal"
    
    • 键入:字符串
    • 长度: 3
    • 价值: Tal

    我希望你现在知道不同之处。