恭喜我。我正式从asp.net切换到PHP。
现在,我被困住了。 : - )
我在某些代码段网站上找到了一些代码,并对以下内容有疑问。
if (isset($_POST['doRegCheck']))
: if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck']))
: redirect_to("index.php?do=users");
endif;
endif;
谁能告诉我到底发生了什么?此代码是否检查doRegCheck POST变量的值以确保它不为空?
提前致谢。
答案 0 :(得分:1)
仅当HTTP标头包含名为doRegCheck
的变量并且该变量设置为0(?doRegCheck=0
)或没有(?doRegCheck=
)时,代码才会重定向。这对我来说似乎是倒退。如果变量存在且我没有设置为像0,false,F
这样的假值,我会认为你会重定向
这种语法(冒号)通常用在模板中(当你进入和退出PHP模式时),这使得它更难阅读。
答案 1 :(得分:1)
首先,让我们正确地重新格式化:
if (isset($_POST['doRegCheck'])) :
if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])) :
redirect_to("index.php?do=users");
endif;
endif;
然后,让我们拿出裁员。 empty
基本上包括对isset
的检查。 empty
也会将"0"
识别为“空”。 empty
将任何 false 值或不存在的值识别为“空”。此代码可能尝试使用intval
检查值是否为数字。总而言之,这应该更容易理解:
if (empty($_POST['doRegCheck']) || !is_numeric($_POST['doRegCheck'])) {
redirect_to("index.php?do=users");
}
答案 2 :(得分:0)
是的,你有正确的想法,如果'doRegCheck'已设置,但等于'0'或没有值''那么它会将你重定向到'index.php?do = users'。因此,据我所知,它基本上确保如果您在没有确认的情况下说出注册页面,则无法完成注册过程。
答案 3 :(得分:0)
当前形式使可读性变得更难,它应该是:
if (isset($_POST['doRegCheck'])):
if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])):
redirect_to("index.php?do=users");
endif;
endif;
转换为:
if (isset($_POST['doRegCheck'])){
if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])){
redirect_to("index.php?do=users");
}
}
含义:
//is $_POST['doRegCheck'] set
if (isset($_POST['doRegCheck'])){
//intval will return (int)0 even if its abc,
// perhaps it should be is_numeric() as it will
// pass if the value is 0 or the value is abc or empty
if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])){
//some user function to redirect
redirect_to("index.php?do=users");
}
}