[phplib] Fallback für Session mit PHP4 From: Georg Muchalla (georg.muchalla <email protected>)
Date: 01/04/01

Hallo,

ich würde gerne die Sessions von PHP4 verwenden, dabei aber
wie in der PHPLIB auch eine Fallbackfunktionalität haben
(wenn keine cookies, dann get)
das habe ich bereits mit der class.Session.inc
"Manueller" Session-Fallback mit PHP4 version 1.02
- 071100/00:38 von Daniel T. Gorski (quellcode s.unten)
versucht, allerdings wird hierbei auf jeder Seite
ereut versucht einen cookie anzulegen, bei der phplib
war das viel besser.
wo liegt das problem ? wie kann ich es lösen ?
1000 Dank für jede hilfe!

ich benutzte PHP 4.01pl2 (läßt sich auch ändern, falls dies
zur lösung des problems benötigt wird!)
allerdings würde ich auf die option "--trans-sid" gerne
verzichten.

<?php

// Datei: class.Session.inc
// Benötigt: mind. 4.0.1pl2

/**
* "Manueller" Session-Fallback mit PHP4
*
*  <email protected> Daniel T. Gorski <daniel.gorski <email protected>>
*  <email protected> 1.02 - 071100/00:38
*/

class Session {
    var $version = 102; // V1.02
    var $usesCookies = false; // Client nimmt Cookies an
    var $transSID = false; // Wurde mit --enable-trans-sid
                                // kompiliert

### -------------------------------------------------------
/**
* Konstruktor - nimmt, wenn gewünscht einen
* neuen Session-Namen entgegen
*/

function Session($sessionName="SESSID") {
   global $HTTP_POST_VARS,$HTTP_GET_VARS,
          $HTTP_COOKIE_VARS,$QUERY_STRING,$PHP_SELF;

   $this -> sendNoCacheHeader();

   // Session-Namen setzen, Session initialisieren
   session_name(isset($sessionName) ? $sessionName : session_name());
    <email protected>();

   // Prüfen ob die Session-ID die Standardlänge von 32 Zeichen hat,
   // ansonsten Session-ID neu setzen
   if (strlen(session_id()) != 32)
   {
      mt_srand ((double)microtime()*1000000);
      session_id(md5(uniqid(mt_rand())));
   }

   // Prüfen, ob eine Session-ID übergeben wurde
   // (über Cookie, POST oder GET)
   if ( <email protected>($HTTP_COOKIE_VARS[session_name()]) != 32 &&
        <email protected>($HTTP_POST_VARS [session_name()]) != 32 &&
        <email protected>($HTTP_GET_VARS [session_name()]) != 32)
   {
      // Es wurde keine (gültige) Session-ID übergeben.
      // Script-Parameter der URL zufügen

      $query = @$QUERY_STRING != "" ? "?".$QUERY_STRING : "";

      header("Status: 302 Found");
      $this -> redirectTo($PHP_SELF.$query); // Script terminiert
   }

   // Wenn die Session-ID übergeben wurde, muß sie
   // nicht unbedingt gültig sein!

   // Für weiteren Gebrauch merken
   $this -> usesCookies =
                 <email protected>($HTTP_COOKIE_VARS[session_name()]) == 32;
}

-- 
Sent through GMX FreeMail - http://www.gmx.net

--------------------------------------------------------------------- To unsubscribe, e-mail: phplib-unsubscribe <email protected> For additional commands, e-mail: phplib-help <email protected>