没有子名的PHP函数返回true或false

时间:2011-12-05 22:17:29

标签: php function return

我想知道我是否可以创建像函数john()这样的PHP函数,而不需要任何参数。 PHP函数总是必须有像john($ action)这样的参数吗?

由于我的空行动,下面的我的脚本无效。我是否必须将N​​ULL值作为参数传递?

funcs.php

function is_customer_logged_in() {
    if($_COOKIE['HA_CUST_LOGIN'] == 1 && $_SESSION["loggedIn"]=="1"){
        return true;
    }else{
        return false;
    }
}

的index.php

include("funcs.php");

if(is_customer_logged_in()) {
    echo 'logged in';
} else {
    echo 'not signed in';   
}

登录-form.php的

/* pseudo code, if form details
    match mySQL do this */

    $_SESSION["loggedIn"]="1";
    $_SESSION["userEmail"]=$username; //form variable
    $_SESSION["userID"]=$username; //form variable
    setcookie("HA_CUST_LOGIN", 1); // set a cookie and a session from a php salt db check
    echo '<script type="text/javascript">window.location="index.php"</script>';

    /* else go back to login-form.php */

或者我必须返回一个字符串而不是布尔值吗?

2 个答案:

答案 0 :(得分:2)

不,你的函数中不需要参数,因为你没有在函数中声明一个参数。回答变量,我打赌你在设置会话变量之前没有做session_start()

答案 1 :(得分:1)

您正在尝试访问$ _SESSION数组中的SESSION变量。此变量仅在两个条件下可用:

  1. 您之前为$ _SESSION指定了一个值[&#39; loggedIn&#39;]
  2. (如果再次请求页面/脚本),您在尝试访问$ _SESSION数组()之前已调用session_start()(并且任何输出已发送到浏览器)。
  3. 即使你正在使用COOKIE,你仍然需要为测试调用session_start()以返回评估为true,因为你的IF语句中有一个逻辑AND:

    if($_COOKIE['HA_CUST_LOGIN'] == 1 && $_SESSION["loggedIn"]=="1")
    

    如果尚未调用session_start(),并且尚未设置参数$ _SESSION [&#34; loggedIn&#34;],则此IF语句将评估为false。您还应该在PHP日志中(以及在开发计算机上的浏览器中)收到通知/警告 - 如果没有,则需要在开发计算机上重新配置错误报告。