致命错误:不能使用backoffice类型的对象作为数组

时间:2014-02-13 13:37:33

标签: php arrays

这个问题已经存在了几天,我无法得到任何解决方案。

我有两个托管服务器。让我们称他们为pt和net。

如果我在网上安装这个网站,一切都没关系,但如果我把它移到pt,它会给我以下错误:

  

致命错误:无法使用backoffice类型的对象作为数组   /nfs/c01/h13/mnt/####/domains/mysite.pt/html/backoffice/topo.php on   第77行

这只发生在这台服务器上。在本地主机和网络服务器上,一切正常。

第77行有:

<?php echo $_SESSION['backoffice']['nome']?>

如果我var_dump $ _SESSION ['backoffice']它在不同的服务器上给我这个:

在localhost和net:

array (size=4)
  'id' => string '1' (length=1)
  'nivel' => string '2' (length=1)
  'nome' => string 'MyName' (length=9)
  'email' => string 'email@email.com' (length=23)

在pt服务器上给我这个:

object(__PHP_Incomplete_Class)#4 (2) { ["__PHP_Incomplete_Class_Name"]=> string(10) "backoffice" ["db"]=> object(__PHP_Incomplete_Class)#2 (6) { ["__PHP_Incomplete_Class_Name"]=> string(2) "db" ["descriptor"]=> int(0) ["db"]=> string(22) "name_of_database_here" ["query"]=> int(0) ["result"]=> array(22) { [0]=> array(5) { ["id"]=> string(2) "16" ["titulo"]=> string(13) "Administração" ["descricao"]=> string(39) "Lorem ipsum dolor sit amet, consectetur" ["estado"]=> string(1) "1" ["slug"]=> string(13) "administracao" }

我已在两台服务器上检查了php.ini,它们是完全相同的。

我必须创建数组Backoffice的类是:

function login($email, $password, $session) {
        $email = filter_var(mysql_real_escape_string($email), FILTER_SANITIZE_EMAIL);
        $password = filter_var(mysql_real_escape_string(md5($password.SALT)), FILTER_SANITIZE_STRING);
        $session = filter_var(mysql_real_escape_string($session), FILTER_SANITIZE_NUMBER_INT);
        $query="SELECT id, nome, email, nivel, hash FROM admin WHERE email='$email' AND password='$password' LIMIT 1";
        $login=$this->db->opencursor($query);
        if ($login) {
            $_SESSION['backoffice']['id']=$login[0]['id'];
            $_SESSION['backoffice']['nivel']=$login[0]['nivel'];
            $_SESSION['backoffice']['nome']=$login[0]['nome'];
            $_SESSION['backoffice']['email']=$login[0]['email'];
            if ($session) setcookie("backoffice", $login[0]['hash'], time()+(7*24*60*60), "/");
            else setcookie("backoffice", '', time()-3600, "/");
            $this->saveLog($login[0]['id'],$_SERVER['REMOTE_ADDR']);
            return true;
        }
    else {
        $this->ban($_SERVER['REMOTE_ADDR'], $_SERVER['REQUEST_TIME']);
        return false;
    }
}

而且,我无法找到错误 - 帮助。

三江源

  • 更新1

Amal Murali - 这篇文章没有重复,我已经搜索过这样的问题,但我没有找到适合的解决方案。

Jim,你的解决方案有所帮助。当我第一次登录并加载页面时,该数组似乎正常。

我有一个功能,检查用户是否有cookie保持登录,并添加了那段代码。现在我的功能看起来像:

if ($login) {
        **$_SESSION['backoffice'] = array();**
        $_SESSION['backoffice']['id']=$login[0]['id'];
        $_SESSION['backoffice']['nivel']=$login[0]['nivel'];
        $_SESSION['backoffice']['nome']=$login[0]['nome'];
        $_SESSION['backoffice']['email']=$login[0]['email'];
        if ($session) setcookie("backoffice", $login[0]['hash'], time()+(7*24*60*60), "/");
        else setcookie("backoffice", '', time()-3600, "/");
        $this->gravaLog($login[0]['id'],$_SERVER['REMOTE_ADDR']);
        return true;
    }

但是,如果我重新加载页面,数组将返回同样的混乱。

0 个答案:

没有答案