我读了很多关于这方面的文章,找到了一些不错的答案并解决了我的问题。但我还是不明白为什么。
_check.php
包含在每个页面上,用于检查某些内容,包括是否有人登录。经过大量检查(if/elseif/else(,它以结束
{$chklogin = 'yes'} else {$chklogin = 'no';}
当我在页面上显示这个字符串($chklogin(时,它工作得很好。。。支票和$chklogin中缺少的任何内容都显示no。只有当所有支票都正常时,它才会显示yes。当我把这个字符串放在函数中时。。。
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';}}
现在CCD_ 7和CCD_。
有人能告诉我为什么第一个函数($chklogin
的函数(不起作用吗?我真的很想知道我做错了什么。
编辑:很多人,我仍然不太明白,但你让我走上了正确的学习道路。已经阅读了更多关于全局变量的信息,并将该值作为参数传递。我想我的问题已经得到了回答,再次感谢!
这与作用域有关。在函数内部,$chklogin
指的是一个局部变量,该变量仅在函数内部可见,恰好与全局变量$chklogin
同名。
试试这个:
function login()
{
global $chklogin; # use the global variable instead of a local one
if($_SESSION['chklogin'] == 'yes')
{
return 'J';
}
else
{
return 'N';
}
}
$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';
您可以使用TURNARY运算符