所以我对php很新,但在我真正理解之前,我养成了这个习惯。在检查是否设置了$_SESSION
/ $_POST
/ $_GET
变量时,请使用此代码:
if($_SESSION['username'] != '' {
//allow access
header('Location: welcomefriend.php')
}
else {
//get out
header('Location: getoutofhereyournotwelcome.php')
}
我在登录脚本中使用它来检查会话是否设置为允许访问等等。所以现在我知道isset
/ empty
,但我似乎总是遇到问题。
所以我的问题是,在使用if($some_far != '')
检查变量是否设置时,我是否会遇到问题?
答案 0 :(得分:2)
是的 - 如果数组中不存在索引,它会发出通知。
答案 1 :(得分:2)
如果变量不存在,那将显示通知,所以:
if( !empty($_SESSION["username"]) ) {
...
答案 2 :(得分:0)
是的,如果表单已提交但未填写,$_POST["value"]==""
将为您提供与isset($_POST["value"])
不同的结果。此外,$_POST["value"]==""
在某些服务器未设置时会给您一个错误。
答案 3 :(得分:0)
检查$_SESSION['username']
是否为空,而不检查username
数组中是否存在$_SESSION
条目将引发通知。围绕它们进行编码是一种很好的做法。一种方法是if (isset($_SESSION['username']) && $_SESSION['username'] != '')
至于empty()
vs != ""
,这是个人偏好。您可能遇到的一个问题是empty()
不接受值,只接受引用,因此您无法empty(somefunction($_SESSION['username']))
。
答案 4 :(得分:0)
使用empty() if( !empty( $some_far ) ) {
检查$ _POST变量是否已设置且不为空。
如果变量也可以为空但必须设置为if( isset( $some_far ) ) {
使用isset()时,变量也不能为NULL以返回true。
如果变量未设置为马丁已经在他的帖子中提到过,你也不会收到通知。
答案 5 :(得分:0)
我总是这样做:
if (isset($_SESSION['username']) && $_SESSION['username'] != '') {
//allow access
header('Location: welcomefriend.php')
}
else {
//get out
header('Location: getoutofhereyournotwelcome.php')
}
在if语句中首先测试'username'
变量中是否存在索引$_SESSION
意味着如果索引不存在,那么我们将不再继续$_SESSION['username'] != ''
因此从不导致错误。
答案 6 :(得分:0)
考虑
包含当前脚本可用的会话变量的关联数组
为什么不使用预定义的功能? array_key_exists
if(array_key_exists('username', $_SESSION) ) {
header('Location: welcomefriend.php');
} else {
header('Location: getoutofhereyournotwelcome.php');
}