2010-12-29 19 views
0

Ich entwickle und mache alle Tests auf einem lokalen Rechner mit PHP Version 5.3.3-1ubuntu9.1 Version. Der Host-Rechner ist PHP Version 5.2.15.PHP Serialisierung wird nicht korrekt funktionieren

Alle seriliaze Argumente sind identisch. Ich folgende

Die Probleme ist, wenn ich versuche, den Benutzer auf meinem Test lokalen Rechner einloggen:

$user->getByUserId($results['id'], $db); 
$_SESSION['user'] = serialize($user); 

, die abgerufen und dem Benutzer serialisiert und ich laden Sie es einfach zurück, wenn ich erkennen, dass eine Sitzung existiert :

$user->LoadFromObject(unserialize($_SESSION['user'])); 

Dies funktioniert perfekt auf meiner Testmaschine. Einfach übertragen Sie die Dateien auf dem Host, um zu sehen, ob ich aus einer Beta-Version bekommen kann, aber ich erhalte immer:

Warnung: unserialize() erwartet Parameter 1 Zeichenfolge zu sein, Objekt gegeben in/home/gamerent /public_html/beta/includes/header.php on line 19

i bemerkt, dass, wenn ich die $_SESSION['user'] in beiden Systemen echo des Test wird mir in der Tat zeigt die serialisierte einer, sondern das wichtigstes zeigt mir nur den Objekt und wird nicht die $user serialisieren.

UPDATE:

OK nach einigen Tests ..... ich gesehen habe, dass, wenn ich die Sitzung sichern, bevor der Benutzer als

var_dump($_SESSION['user']); 
$user = new User(); 
var_dump($_SESSION['user']); 

Initialisierung wird die Sitzung korrekt serialisiert Display. Genau nach, dass es den String der Sitzungen

My User tut alles tun, mit Standardwerten init excpet angezeigt wird

function User() { 
     $this->userId = 0; 
     $this->firstname = "Guest"; 
     $this->password = ""; 
     include_once('includes/generalUtils.php'); 
     $this->generalUtils = new generalUtils(); 
     include_once('includes/utils.php'); 
     $this->utils = new utils(); 
    } 
+0

Also serialisieren ($ user); gibt $ user auf dem Host-Rechner zurück? – Jim

+0

Randnotiz: Es ist PHP 5.x. Verwenden Sie __construct als Bezeichner für Konstruktor. Die Verwendung des Klassennamens ist veraltet. – Mchl

+0

Und wirklich ... schau in Autoloading Class - mit diesen Includes im Konstruktor ist hässlich. – Mchl

Antwort

1

Sie müssen register_globals auf der Produktionsmaschine deaktivieren. Andernfalls registrieren Sie eine Session-Variable, indem Sie $ _SESSION ['user'] zuweisen. Überprüfen Sie these notes.

Verwandte Themen