[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка unserialize() обьекта
El` Mor
Ну соответственно
1) Вот класс

class cls
{
public $name;
public $password;
public $referer;
public $time;

public function __construct($name, $password)
{
$this->name = $name;
$this->password = $password;
$this->referer = $_SERVER['PHP_SELF'];
$this->time = time();
}

public function __sleep()
{

return $this;
}

public function __wakeup()
{
return $this;
}
}



Вот его использование:

function __autoload($className)
{
require_once 'class.' . $className . '.php';

}

$obj = new cls('login', 'password');

$text = serialize($obj);
echo 'After serialization ';
var_dump($text);
Echo '<br />';
$fd=fopen('cls.obj' , 'w');
if(!$fd) exit('Can\' create file!');
fwrite($fd,$text);
fclose($fd);

$fd = fopen('cls.obj', 'r');

$text = fread($fd, filesize('cls.obj') );
echo 'What was read from file: ' . $text;
$obj = unserialize($text);
fclose($fd);
echo '<br /> And the result:';
var_dump($obj);


И что выводит:
Цитата

After serialization string(82) "O:3:"cls":4:{s:5:"login";N;s:8:"password";s:8:"password" ;;s:10:"/index.php";R:2;N;}"
What was read from file: O:3:"cls":4:{s:5:"login";N;s:8:"password";s:8:"password";s:10:"/index.php";R:2;N;}
And the result:bool(false)


Те он сериелезует нормально, а вот с обратным процессом проблемы.
Заранее спасибо за время!
зы. и да - это все написано чтобы показать ошибку



Спустя 4 минуты, 47 секунд (29.03.2011 - 10:49) Snus написал(а):
El` Mor
А зачем ты объект сериализируешь? Сериализация для массивов

Спустя 7 минут, 3 секунды (29.03.2011 - 10:56) Guest написал(а):
Цитата (Snus @ 29.03.2011 - 07:49)
El` Mor
А зачем ты объект сериализируешь? Сериализация для массивов

Для того чтобы его хранить в базе данных после того как пользователь ушел...

Спустя 1 минута, 42 секунды (29.03.2011 - 10:58) El` Mor написал(а):
ЭТо был я... забыл залогиниться...

Спустя 3 минуты, 20 секунд (29.03.2011 - 11:01) Snus написал(а):
    class cls
{
public $name;
public $password;
public $referer;
public $time;

public function __construct($name, $password)
{
$this->name = $name;
$this->password = $password;
$this->referer = $_SERVER['PHP_SELF'];
$this->time = time();
}

public function dataSerialize(){
$arr = array($this->name,$this->password,$this->referer,$this->time);
return serialize($arr);
}

}


$obj = new cls('login', 'password');
$text = $obj->dataSerialize();

Спустя 1 час, 44 минуты, 37 секунд (29.03.2011 - 12:46) El` Mor написал(а):
Спасибо smile.gif буду дальше разбираться

Спустя 4 минуты, 34 секунды (29.03.2011 - 12:51) linker написал(а):
Для сериализации/десериализации объектов существует магические методы __sleep() и __wakeup().

Спустя 8 минут, 15 секунд (29.03.2011 - 12:59) El` Mor написал(а):
Цитата (linker @ 29.03.2011 - 09:51)
Для сериализации/десериализации объектов существует магические методы __sleep() и __wakeup().

ДА, но их необязательно перегружать вроде....

Спустя 18 минут, 24 секунды (29.03.2011 - 13:17) linker написал(а):
Как бы да. Мой пост был более адресован Snus'у. А твой код у меня отработал на ура.
function __autoload($className)
{
require_once 'class.' . $className . '.php';
}

$obj = new cls('login', 'password');
file_put_contents('cls.obj', serialize($obj));
$newobj = unserialize(file_get_contents('cls.obj'));
var_dump($newobj);

Спустя 12 минут, 49 секунд (29.03.2011 - 13:30) El` Mor написал(а):
Вопрос снят как глупый мной же...

Спустя 6 часов, 17 минут, 3 секунды (29.03.2011 - 19:47) El` Mor написал(а):
затерто

Спустя 22 минуты, 58 секунд (29.03.2011 - 20:10) El` Mor написал(а):
затерто
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.