全局变量从函数中消失

时间:2016-10-24 21:46:47

标签: php mysql function global

我有一点问题,我找不到原因.. 我有这个简单的功能,应检查用户/通行证是否正确,我想将有关用户的所有信息从$ row object 保存到$ userdata 全局 < EM>物体

function check_credentials($username, $password) {
    global $userdata;       
        $password = md5($password);
        $result = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' LIMIT 0,1")or die(mysql_error());


    while ($row = mysql_fetch_object($result)) {
        if(($row->password == $password) && ($row->username == $username) && ($row->ver == 1)) {

            $userdata = clone $row;
            return true;
        }
        else break;
    }
    }
    unset($_SESSION['logged_as']);
    return false;
}

你是否知道为什么,在函数之外,全局变量消失了?因为它应该是全球

3 个答案:

答案 0 :(得分:1)

您的函数只返回布尔值true,而不是修改后的变量。 变化

            $userdata = clone $row;
            return true;

        $userdata = clone $row;
        return $userdata;

答案 1 :(得分:1)

正如@Broatcast所说,全局函数必须在之前的函数中声明。

$var = null;
function name() {
global $var
}

// use $var as global

答案 2 :(得分:0)

而是使用全局变量,只返回$ userdata:

if(($row->password == $password) && ($row->username == $username) && ($row->ver == 1)) {
return $row;
}

然后在调用函数时捕获该行

$userdata = check_credentials($username, $password);