我有一点问题,我找不到原因.. 我有这个简单的功能,应检查用户/通行证是否正确,我想将有关用户的所有信息从$ 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;
}
你是否知道为什么,在函数之外,全局变量消失了?因为它应该是全球
答案 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);