PHP:在IF-construct中设置变量?

时间:2009-09-04 10:03:28

标签: php variables

我可以在if-construct中设置变量吗?一般来说,它允许在哪里设置变量?

function set_login_session ( $passhash ) 
{
    $_SESSION['login']['logged_in'] = 1;
    if ( ERROR ) return false;
}

// Does it set the Session variable?
if ( set_login_session ( $passhash ) === false)
    return false;

3 个答案:

答案 0 :(得分:2)

简短回答

答案很长

如果此脚本之前已调用start_session()(或设置了session.auto_start配置标志),则可以使用超全局$ _SESSION数组在任何位置设置会话变量。

答案 1 :(得分:1)

是的,你可以而且是允许的。但问题是,如果IF没有运行并且您错误地处理了这种情况该怎么办。

所以通常我会在函数的最广泛范围内初始化我的大变量,临时变量可以设置在某些东西中。

你应该知道你的情况。你正在初始化一个全局变量。

答案 2 :(得分:0)

您尚未指定ERROR变量。如果为true表示错误,则set_login_session可以基本上减少为

$_SESSION['login']['logged_in'] = 1;
return !ERROR;

和外部代码

return set_login_session( $passhash );

没有必要进行这种明确的bool值比较。

是的,在函数中设置变量是完全有效的,但确保始终设置变量,无论采用何种代码路径,因此代码中不会使用未初始化/不存在的变量。否则你会在脚本输出中遇到麻烦或者至少是大胖警告。

如果会话开始,$ _SESSION超全局应该存在。如果其中没有['login'] ['logged_in'],那很好。