当我尝试该行时:

unserialize($_SESSION['user']);

我收到此错误:类用户的对象无法转换为字符串

当我回显会话时,我得到:

O:4:"user":7:{s:9:"accountId";s:1:"2";s:9:"firstName";s:12:"Ronald";s:8:"lastName";s:5:"Test";s:5:"email";s:22:"blabla@hotmail.com";s:10:"postalCode";s:7:"J0L 8G0";s:8:"username";s:12:"testuser";s:4:"role";s:1:"0";}

这是用户的类:

class user {
var $accountId;
var $firstName;
var $lastName;
var $email;
var $postalCode;
var $username;
var $role;

/**
 * @return mixed
 */
public function getAccountId()
{
    return $this->accountId;
}

/**
 * @param mixed $accountId
 */
public function setAccountId($accountId)
{
    $this->accountId = $accountId;
}

/**
 * @return mixed
 */
public function getFirstName()
{
    return $this->firstName;
}

/**
 * @param mixed $firstName
 */
public function setFirstName($firstName)
{
    $this->firstName = $firstName;
}

/**
 * @return mixed
 */
public function getLastName()
{
    return $this->lastName;
}

/**
 * @param mixed $lastName
 */
public function setLastName($lastName)
{
    $this->lastName = $lastName;
}

/**
 * @return mixed
 */
public function getEmail()
{
    return $this->email;
}

/**
 * @param mixed $email
 */
public function setEmail($email)
{
    $this->email = $email;
}

/**
 * @return mixed
 */
public function getPostalCode()
{
    return $this->postalCode;
}

/**
 * @param mixed $postalCode
 */
public function setPostalCode($postalCode)
{
    $this->postalCode = $postalCode;
}

/**
 * @return mixed
 */
public function getUsername()
{
    return $this->username;
}

/**
 * @param mixed $username
 */
public function setUsername($username)
{
    $this->username = $username;
}

/**
 * @return mixed
 */
public function getRole()
{
    return $this->role;
}

/**
 * @param mixed $role
 */
public function setRole($role)
{
    $this->role = $role;
}

function __construct($accountId,$firstName,$lastName,$email,$postalCode,$username,$role){
    $this->setAccountId($accountId);
    $this->setFirstName($firstName);
    $this->setLastName($lastName);
    $this->setEmail($email);
    $this->setPostalCode($postalCode);
    $this->setUsername($username);
    $this->setRole($role);
}

}

这是我创建对象的地方:

public function createUserObject($username){
    session_start();
    require("user.php");
    include("connection.php");
    $username = mysql_real_escape_string($username);

    mysql_connect("$SQLhost", "$SQLusername", "$SQLpassword") or die("cannot connect");
    mysql_select_db("$SQLdb_name") or die("cannot select DB");

    $username = mysql_real_escape_string($username);
    $sql = "SELECT * FROM Account WHERE username='$username'";
    $result = mysql_query($sql);

    $rows = mysql_fetch_assoc($result);
    $user = new user($rows['accountId'],$rows['firstName'],$rows['lastName'],$rows['email'],$rows['postalCode'],$rows['username'],$rows['role']);
    $_SESSION['user'] = serialize($user);

    if($result){
        return true;
    }else{
        return false;
    }
}

谢谢有人能向我解释这个问题。

===============>>#1 票数:1 已采纳

Mathieu,这是一个已知问题。 因此,如果您可以稍微修改一下代码,那将是很好的。

请参考以下文章以获取一些想法: http : //blog.pagalhost.com/codeigniter-php-serialize-unserialize-issues/

因此,您需要执行的操作类似于以下方法

//To serialize
$result_string = base64_encode(serialize($array));

//To unserialize
$restored_array = unserialize(base64_decode($result_string ));

有关更多信息和想法,请查看PHP手册-反序列化函数

  ask by Jean-Mathieu translate from so

未解决问题?本站智能推荐:

1回复

无法反序列化PHP中的字符串

谁能告诉我以下代码是什么问题? 反序列化此字符串时,我得到的布尔值为false: 我正在使用以下代码序列化数据: 并使用以下代码对其进行反序列化。
2回复

无法反序列化序列化的字符串

我有一个序列化的字符串,并且我试图对其进行反序列化,但是变得错误。 序列化的字符串回显: 数据库中的数据: 代码反序列化数据 数据在发布请求后进行序列化并保存到数据库中 进行序列化之前的代码 代码以序列化数据 反序列化它返回false 。
3回复

无法反序列化php中的字符串

是的我知道。 我看到很多关于它的问题。 但是到目前为止,没有人为我工作。 我在wordpress中有一个博客,他使用序列化数据来存储一些自定义字段。 它工作得很好,但是当我将所有博客都移到另一个文件夹时,所有序列化的数据均来自wordpress(但仍在数据库中),因此,wordp
1回复

如何在该字符串在点292显示错误时反序列化该字符串?

这是我的序列化形式的字符串。当我尝试反序列化(转换为数组)该字符串时,出现错误,请参见以下序列化的字符串 我收到错误消息 请帮助并告诉我什么是最好的序列化下面的字符串的是我的原始数组 谢谢 //当我json_encode('any image');时,我做了171到
1回复

当必须更改其中的URL时,如何unserialize()数据字符串?

在WordPress中,您可以以post meta形式保存post自定义信息。 因此,我已将序列化数组形式的一个元字段中的值保存到一个元字段中,如下所示。 因此,您可以在字符串“ i:0; s:81:”中看到,该“ 81”是下一个URL的长度。 在将站点转移到新域之前,我已经替换了数
2回复

当参数只是一个简单的字符串时,PHP会反序列化偏移量错误

我在申请SO Ans之后问一个问题。 我正在尝试从数据库获取的序列化字符串中反序列化。 我收到错误:反序列化偏移量错误 我有两种情况 两种情况下使用相同的代码: 情况1:何时 情况1:错误: 情况2:何时 情况2: 没有错误代码id正常工作
1回复

反序列化偏移错误,字符串长度似乎太长

我试图从数据库查询中反序列化一个longtext(utf8_unicode_ci),但是当我这样做时,我得到以下错误。 我猜我的字符串无效,所以我把它输出到浏览器。 我注意到字符串的长度比实际应该的长一点。 当我在浏览器中复制并粘贴输出并将其硬编码到php中时,sting长度变为较小
5回复

如何反序列化字符串?

我有一个菜单系统,它使用拖放树结构,以方便用户修改。 当javascript序列化字符串时,它按以下方式执行: 然后将序列化为: 这个问题是可能存在任意数量的子级别,这使得很难反序列化。 我正在使用PHP服务器端来反序列化它,但我不知道该怎么做。 任何建议都欢迎,即使是
2回复

反序列化实际转义的JSON字符串

我正在尝试将JSON数据保存到MySQL DB和PHP中。 我用过 进行序列化。 我不能反序列化它。 我试过了 但是$ obj为空。
1回复

不能反序列化字符串

当我尝试对以下字符串进行反序列化时: 它返回false并且收到以下警告: 它是通过在数组上调用serialize生成的,尽管对我来说看起来很有效,但我不明白问题是什么?