首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决这个php错误?

如何解决这个php错误?
EN

Stack Overflow用户
提问于 2010-11-20 09:54:18
回答 4查看 1.4K关注 0票数 0

在我的项目中,我使用乌塞克作为用户管理模块。这是我的第一个PHP项目,我还在学习。我设置了数据库和usercake项目,但是我一直收到这个错误-

注意:尝试在第170行的C:\wamp\www\userCake\models\funcs.user.php中获取非对象的属性。 注意:尝试在第172行的C:\wamp\www\userCake\models\funcs.user.php中获取非对象的属性。

只有当没有用户登录到系统时,才会捕获此错误。有一次,用户登录我不再收到这个错误。负责的代码是-

代码语言:javascript
复制
function isUserLoggedIn()
{
    global $loggedInUser,$db,$db_table_prefix;
    
    $sql = "SELECT User_ID,
            Password
            FROM ".$db_table_prefix."Users
            WHERE
            User_ID = '".$db->sql_escape($loggedInUser->user_id)."' //line 170
            AND 
            Password = '".$db->sql_escape($loggedInUser->hash_pw)."'  // line 172
            AND
            Active = 1
            LIMIT 1";
    
    $sql = mysql_num_rows($sql);
    
    if($loggedInUser == NULL)
    {
        return false;
    }
    else
    {
        //Query the database to ensure they haven't been removed or possibly banned?
        if(returns_result($sql) > 0)
        {
                return true;
        }
        else
        {
            //No result returned kill the user session, user banned or deleted
            $loggedInUser->userLogOut();
        
            return false;
        }
    }
}

我试着用我有限的php知识来修复这个问题,但是没有做到。我猜此错误类似于对象引用,而不是设置为.net中对象的实例。我说的对吗?如果没有,是什么导致了这个错误?

我怎么才能解决这个问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-20 10:00:20

我想,当用户第一次没有登录时,引用是空的,所以在第170行中,$db->sql_escape($loggedInUser->user_id).导致了类似于空引用的情况。尝试移动

if($loggedInUser == NULL) { return false; }

在代码的开头,如果用户为null,则停止取消引用。

票数 1
EN

Stack Overflow用户

发布于 2010-11-27 06:34:01

代码语言:javascript
复制
function isUserLoggedIn() {
    global $loggedInUser, $db, $db_table_prefix;

    if ($loggedInUser == NULL) { return false; }
    else {
        $sql = "SELECT User_ID,
                Password
                FROM " . $db_table_prefix . "Users
                WHERE
                User_ID = '" . $db->sql_escape($loggedInUser->user_id) . "'
                AND 
                Password = '" . $db->sql_escape($loggedInUser->hash_pw) . "' 
                AND
                Active = 1
                LIMIT 1";

        //Query the database to ensure they haven't been removed or possibly banned?
        if (returns_result($sql) > 0) { return true; }
        else {
            //No result returned kill the user session, user banned or deleted
            $loggedInUser->userLogOut();

            return false;
        }
    }
}

用这个替换这个函数。在检查$loggedInUser是否为null之前,不应该设置sql语句。

票数 1
EN

Stack Overflow用户

发布于 2011-06-14 07:47:49

我也有同样的问题,

似乎我有自己的数据库连接,在之后启动了userCake连接,这显然超过了userCake连接,使得sql_escape无法实现。

尝试禁用userCake包含后的任何数据库连接。

顺便说一句,在session_start包含之前,您还应该删除任何userCake ()。这将导致会话中的__php_incomplete_class错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4232133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档