Zend_Session: Session ID in URL übergeben

Vor kurzem stand ich vor dem Problem, die Session ID in meiner Zend Framework-Anwendung nicht wie üblich in einem Cookie zu speichern, sondern sie sollte immer an die URL drangehängt werden. Aber natürlich ohne hässliches Fragezeichen (z.B. ?PHPSESSID=joegulp976uvrevvbdkleksme3). Da dies gar nicht so leicht war, schreibe ich hier einfach mal eine Schritt-für-Schritt-Anleitung. Vorausgesetzt wird eine richtige ZF-Anwendung mit Bootstrap-Klasse und der Verwendung der Resource-Komponenten.

Wofür braucht man so eine Funktion?
Sinnvoll ist das natürlich nur für geschlossene Bereiche wie beispielsweise Administrationsoberflächen oder bei Webseiten mit stark individualisierten Content (Browsergames).
Der große Vorteil dieser Methode besteht vor allem darin, dass mehrere verschiedene Sessions für eine Anwendung im selben Browser geöffnet werden können. Bei Cookies ist dies nicht möglich.

» Weiterlesen

Klassen-Konstanten in PHP 5.3

Seit PHP Version 5.3 gibt es einige Verbesserungen bei den Klassen-Konstanten. Hier mal ein kleines Beispiel:

abstract class Auto
{
    public function getAutoName()
    {
        return self::AUTO_NAME;
    }
}
 
class Golf extends Auto
{
    const AUTO_NAME = "Golf";
}
 
$auto = new Golf();
echo $auto->getAutoName();

Wer dieses Beispiel in PHP 5.2 ausführt, bekommt eine Fehlermeldung „Fatal error: Undefined class constant ‚AUTO_NAME‘ in /htdocs/test.php on line 7“. Der Grund ist einfach: Die Konstante AUTO_NAME kann nicht von der Eltern-Klassen aufgerufen werden. Jetzt kommen wir zur Neuerung in PHP 5.3. Wir ändern lediglich eine Kleinigkeit:

abstract class Auto
{
    public function getAutoName()
    {
        return $this::AUTO_NAME;
    }
}
 
class Golf extends Auto
{
    const AUTO_NAME = "Golf";
}
 
$auto = new Golf();
echo $auto->getAutoName();

Aus dem self:: wird ein $this:: und schon gibt uns PHP das richtige Ergebnis aus. Außerdem könnte man die Konstante noch direkt über das Objekt ausgeben mit $auto::AUTO_NAME, aber auch das ist erst seit PHP 5.3 möglich.