我已经阅读了很多关于此的内容,找到了一些不错的答案并解决了我的问题。但我仍然不明白原因。
每页都会包含 _check.php
以检查某些内容,包括是否有人登录。
经过大量的检查(if / elseif / else)后,它以:
{$chklogin = 'yes'} else {$chklogin = 'no';}
当我在页面上显示这个字符串($ chklogin)时,它完美地运行...检查中缺少任何内容,$ chklogin显示no。只有当所有检查都没问题时才显示是。 当我把这个字符串放在一个函数中时......
function login() {
if($chklogin == 'yes') {return 'J';} else {return 'N';}}
$chklogin
仍然是,调用函数login()
会返回N
。
我将$chklogin
放在$_SESSION
...
function login() {
if($_SESSION['chklogin'] == 'yes') {return 'J';} else {return 'N';}}
现在$chklogin
和$_SESSION['chklogin']
都有相同的结果。
任何人都可以告诉我为什么第一个函数不起作用($chklogin
),我真的很想知道我做错了什么。
答案 0 :(得分:1)
与范围有关。在您的函数内部,$chklogin
指的是本地变量,该变量仅在 函数内可见,并且恰好与 global <同名< / em>变量$chklogin
。
试试这个:
function login()
{
global $chklogin; # use the global variable instead of a local one
if($_SESSION['chklogin'] == 'yes')
{
return 'J';
}
else
{
return 'N';
}
}
答案 1 :(得分:0)
$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';
您可以使用TERNARY运算符