0

我已经阅读了很多关于此的内容,找到了一些不错的答案并解决了我的问题。但我仍然不明白为什么。

_check.php包含在每个页面上以检查某些内容,包括是否有人登录。经过大量检查(if/elseif/else)后,它以:

{$chklogin = 'yes'} else {$chklogin = 'no';}

当我在页面上显示此字符串 ($chklogin) 时,它工作得很好......检查中缺少的任何内容和 $chklogin 显示没有。只有当所有检查都正常时才会显示是。当我把这个字符串放在一个函数中......

 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),我真的很想了解我做错了什么。

编辑:谢谢很多人,我仍然不完全理解,但你让我走上了正确的学习道路。已经阅读了有关全局变量的更多信息并将值作为参数传递。我想我的问题已经回答了,再次感谢!

4

2 回答 2

1

它与范围界定有关。在函数内部,$chklogin指的是仅在函数内部可见并且恰好与全局变量同名的局部变量。$chklogin

尝试这个:

function login()
{
    global $chklogin; # use the global variable instead of a local one
    if($_SESSION['chklogin'] == 'yes') 
    {   
        return 'J';
    } 
    else 
    {
        return 'N';
    }
}
于 2013-05-29T09:11:10.213 回答
0
$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';

您可以使用 TURNARY 运算符

于 2013-05-29T09:43:13.060 回答