php中的$\u POST是如何运行的

php中的$\u POST是如何运行的,php,forms,http-post,Php,Forms,Http Post,我的索引文件是 <body> <form method="POST" action="post.php" > <input name="name"> <input type="submit" value="submit"> </form> </body> 但是,在索引文件中,如果我在name参数中发送TRUE,那么为什么输出为false。。i、 e if($sec == $_POST['name

我的索引文件是

<body>
  <form method="POST" action="post.php" >
    <input name="name">
    <input type="submit" value="submit">
  </form>
  </body>
但是,在索引文件中,如果我在name参数中发送TRUE,那么为什么输出为false。。i、 e

if($sec == $_POST['name']) { echo "true"; } else { echo "false"; }// false when name=TRUE
当我从其他页面变量(request)发送这个时,它的计算结果为false。为什么会发生这种情况?

当您编写if
($sec==TRUE)
时,那么它就是
TRUE
,因为您使用的是带有
=
运算符的自动类型转换,php将
$sec
字符串转换为bool类型,因为它不是
(bool)false
(不是字符串'false'!!)或
(int)0
,所以它变为true,并且
true==true=true

如果不希望php自动转换If中的值,则使用
==
而不是
=
,这也会检查类型

在另一种情况下,您发送的是一个“true”字符串,而“qaswed”字符串显然不一样,因为它们都是字符串,所以没有像前一种情况那样进行类型转换。

我刚刚添加了“if(isset($\u POST['name'])”来检查名称是否设置了

//post.php

<?php
    if (isset($_POST['name']))
    {
        $sec = 'qaswed';
        if ($sec == $_POST['name'])
        {
            echo "true";
        }
        else
        {
            echo "false";
        }
    }

?>

在第一次比较中,字符串“qaswed”的值自动转换为布尔值,以便与布尔值一致。当您比较不同的数据类型时,其中一种数据类型被转换为另一种类型

若要同时比较变量的类型,则应使用相同的比较运算符

var_dump('qaswed'); // string(6) "qaswed"
var_dump((bool)'qaswed'); // bool(true)
var_dump('qaswed' == true); // bool(true)
var_dump('qaswed' === true); // bool(false)
在第二种情况下,比较字符串类型

var_dump('TRUE'); // string(4) "TRUE"
var_dump('qaswed'); // string(6) "qaswed"
var_dump('qaswed' == 'TRUE'); // bool(false)
var_dump('qaswed' === 'TRUE'); // bool(false)

一个是
bool
(TRUE),另一个是字符串/文本(“TRUE”),它不是关于检查,OP询问PHP关键字TRUE和“TRUE”作为请求参数发送值之间的区别如果您想对此进行更深入的研究,您应该检查PHP文档:我尝试仅使用
=
。通常代码要多得多,但我觉得如果使用
==
,PHP有时很难找到bug。例如,
“false”==true
为true,而
“0”==true
为false。
var_dump('qaswed'); // string(6) "qaswed"
var_dump((bool)'qaswed'); // bool(true)
var_dump('qaswed' == true); // bool(true)
var_dump('qaswed' === true); // bool(false)
var_dump('TRUE'); // string(4) "TRUE"
var_dump('qaswed'); // string(6) "qaswed"
var_dump('qaswed' == 'TRUE'); // bool(false)
var_dump('qaswed' === 'TRUE'); // bool(false)