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)