Scout24 / restapi-php-sdk

SDK für PHP-Entwickler um die Arbeit mit der API von ImmobilienScout24 zu vereinfachen. Über die API erhält man Ergebnislisten, Objektdaten, uvm. von ImmobilienScout und kann diese Daten inhherhalb seines Webservice integrieren. Die Dokumentation zum SDK findet man unter https://github.com/Immocaster/php-sdk/wiki.
64 stars 45 forks source link

Unnötiges Starten von PHP Session via setDataStorage #19

Closed smisch closed 10 years ago

smisch commented 10 years ago

Hallo,

laut Immocaster_Sdk::setDataStorage

public function setDataStorage($aConnection,$sSessionNamespace=null,$sTableName=null)
{
    require_once(dirname(__FILE__).'/Data/Session.php');
    Immocaster_Data_Session::getInstance($sSessionNamespace);
    $sFileName = ucfirst(strtolower($aConnection[0]));
    require_once(dirname(__FILE__).'/Data/'.$sFileName.'.php');
    $this->oDataStorage = call_user_func(array('Immocaster_Data_'.$sFileName,'getInstance'),$aConnection,$sTableName);
    return $this->oDataStorage;
}

wird die Klasse Immocaster_Data_Session immer instanziiert, selbst wenn sie nicht verwendet wird, wegen z.B. der Verwendung von Immocaster_Data_Mysql. Der Effekt ist, dass a) durch das Ausführen von "session_start()" das Starten von projekt-eigenen Sessions möglicherweise fehlschlägt, und b) dem Kunden (Besucher der Webseite) unnötig Cookies zugewiesen werden.

Ich habe das Problem in unserem Projekt behoben in dem ich nur das tatsächlich verwendete DataStorage-Modul include:

public function setDataStorage($aConnection,$sSessionNamespace=null,$sTableName=null)
{
    $sFileName = ucfirst(strtolower($aConnection[0]));
    require_once(dirname(__FILE__).'/Data/'.$sFileName.'.php');

    if ($sFileName === 'Session')
        Immocaster_Data_Session::getInstance($sSessionNamespace);

    $this->oDataStorage = call_user_func(array('Immocaster_Data_'.$sFileName,'getInstance'),$aConnection,$sTableName);
    return $this->oDataStorage;
}

LG Sebastian

Pixelairport commented 10 years ago

Vielen Dank für die Info. Änderungen habe ich grade vorgenommen und hochgeladen. Im Wiki steht unter "https://github.com/ImmobilienScout24/restapi-php-sdk/wiki/Einführung (Mit Datenbank verbinden)" wie die Session deaktiviert wird.

Ich musste das ganze etwas anders lösen, da man ja zusätzlich zu MySql die Session benötigt, wenn man noch nicht zertifiziert hat. Das ganze läuft jetzt über einen zusätzlichen Parameter. Ist denke ich die bessere Variante um die Leute nicht unnötig zu verwirren.

gruß Norman