Achim: Hilfe zur Session-Klasse für Globals=off

Hallo,

mir hat vor einiger Zeit ein Arbeitskollege mal einen session-Klasse geschrieben (leider erreiche ich ihn nicht mehr da die Firma platt ist.

Nun möchte ich dies Klasse für register_globals=off tauglich machen.
weiter möchte ich nur die superglobals wie $_SESSION verwenden

Da ich untter OOP keine Ahnung habe wäre ich sehr dankbar wenn mir hier jemand ein wenig helfen könnte

Hier mal der Code (später folgt dann der Aufruf ) ist eigentlich nicht viel

class mySession
{
      var $SessionCookieName = "sid";
      var $SecureCookieName = "secureCookie";
      var $SecureCookieValue;
      var $sid;
      var $sessionOK = false;
      var $arrSessionData;

function mySession($nNewSession=0)
      {
          if($nNewSession)
          {
              if( $this->issetCookie($this->SessionCookieName )  )
              {
                  session_id($this->getSessionID());
                  session_start();
                  session_destroy();
              }
              $this->createSession();
          }else{
              $this->sid = $this->getSessionID();
              $this->startSession();
          }
      }

function createSession()
      {
        //echo "<pre> session-array===>";print_r($arrSession);
          global $arrSession;
          session_start();
          $this->sid = session_id();
          setcookie($this->SessionCookieName, $this->sid);
// mit session_register wollte ich eigentlich nichtmehr arbeiten da ich lieber die
// superglobals verwenden möchte also anstatt
//session_register
//$_SESSION =
//oder
// $_SESSION['arrSession'] =

session_register("arrSession");
          $this->arrSessionData = &$arrSession;
      }

function startSession()
      {
          global $arrSession;
          session_id($this->sid);
          session_start();
          session_register("arrSession");
          $this->arrSessionData = &$arrSession;
      }

function destroySession()
      {
           session_destroy();
      }

function getSessionID()
      {
          return $this->getCookie($this->SessionCookieName);
      }

function issetCookie($strCookieName)
      {
          global $$strCookieName;
          return isset($$strCookieName);
      }

function getCookie($strCookieName)
      {
          global $$strCookieName;
          return $$strCookieName;
      }

function setSessionValue($strArrayItem, $Value)
      {
          $this->arrSessionData[$strArrayItem] = $Value;
      }

function getSessionValue($strArrayItem)
      {
          return $this->arrSessionData[$strArrayItem];
      }
      function getSessionInnerValue($strArrayItem,$Value)
      {
          return $this->arrSessionData[$strArrayItem][$Value];
      }

}
?>

hier der Aufruf aus dem programm raus

$ses = &new mySession(1);

$ses->getSessionValue("curCostumerID"); // holt mir einen Wert aus
// $_SESSION['arrSession']['curCostumerID'];
Mit
$ses->SetSessionValue("curCostumerID",123); // Setzte ich mir den Wert
// $_SESSION['arrSession']['curCostumerID'];

oder ein komplettes array mit
 $ses->setSessionValue("curCustBank", $arrCostumer);

Ich finde das auch ok so .

Nur checke ich nicht wie ich die dlobals aus der Klasse rausbekomme und dies umbauen muss

Kann mir da jemand helfen

Gruss und danke

Achim

  1. Hello Achim,

    es sieht nicht so aus, als würde es sich lohnen, darin Zeit zu verschwenden.
    Es ist wnig sinnvoll, wüf die meisten Operationen nur 'Wrapper', also Hüllfunktionen zu schreiben, wenn sie denn keine wesentlichen eigenen Aufgaben mehr wahrnehmen, sondern nur die Ursprüngliche Funktion mit einem anderen Namen (anderer Referenz) versehen.

    Sinnvoller wäre es bestimmt, Du würdest die Schritte nach und nach selber nachvollziehen und verstehen.

    Man kann auf den meisten Hosting-Servern auch das Register-Globals gezielt für einzelne Verzeichnisse wieder einschalten, sodass Du Dein Altmetarial noch benutzen könntest und nach und nach in einem anderen Verzeichnis eigene Entwicklungen auf dem Stand der Technik als Ersatz erzeugst.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Tom,

      es sieht nicht so aus, als würde es sich lohnen, darin Zeit zu verschwenden.

      Das Problem ist, das mein ganzes Programm die setSessionValue und gets verwendet

      Sinnvoller wäre es bestimmt, Du würdest die Schritte nach und nach selber nachvollziehen und verstehen.

      Da hast Du vollkommen recht nur möchte ich die News-Group hier nicht zu arg nerven da ich von OOP nicht viel Ahnunhg habe
      Würde es gerne aber in der Klasse komen Dinge vor die ich absolut nicht verstehe (Brett vorm Kopf)

      Man kann auf den meisten Hosting-Servern auch das Register-Globals ...

      Das wäre nicht das problem da es mein eigener server ist (ist ein sehr günstiger Provider)

      Hier mal was , wa sich absolut nicht verstehe

      function createSession()
            {
                global $arrSession;

      Warum hier ein Global
      $arrSession ist nur ein Variablenname für meine session-array

      $this->sid = session_id();
                setcookie($this->SessionCookieName, $this->sid);
                session_register("arrSession");
                $this->arrSessionData = &$arrSession;

      Das ist erstb der Hit, was soll mir &$arrSession sagen?
      Wie kann ich sowas in einer Klasse nachbilden?
      Ich glaube es ist sowas ähnliches wie füge
      arrSessionDat das array $arrSession hinzu oder?

      }

      und im folgenden kacke ich total ab

      function issetCookie($strCookieName)
            {
                global $$strCookieName;
                return isset($$strCookieName);
            }

      Warum $$strCookieName und Global noch dazu?
      Wenn ich es doch schon am Anfang als Varibale definiert habe
      und was soll das doppelte $$
      Ich hörte mal davon das man damit einer variablen mehrere Werte zuweisen kann aber warum solltes/muss es hier zum einsatz kommen was bezweckt es?

      Gruss und danke

      Achim

      1. hi,

        Würde es gerne aber in der Klasse komen Dinge vor die ich absolut nicht verstehe (Brett vorm Kopf)

        dann fehlt dir offenbar noch ein wenig grundlagenwissen, ich geb dir mal ein paar stichworte, um dich zu informieren.

        function createSession()
              {
                  global $arrSession;

        Warum hier ein Global
        $arrSession ist nur ein Variablenname für meine session-array

        damit diese funktion auf eine variable $arrSession zugreifen kann, die ausserhalb ihres gültigkeitsbereiches definiert wurde, und ihr nicht als parameter übergeben wurde - solche variablen kann man sich über das schlüsselwort global in seine funktion "hereinholen".

        $this->arrSessionData = &$arrSession;

        Das ist erstb der Hit, was soll mir &$arrSession sagen?

        stichwort: referenzen

        function issetCookie($strCookieName)
              {
                  global $$strCookieName;
                  return isset($$strCookieName);
              }

        Warum $$strCookieName und Global noch dazu?

        $$ siehe stichwort variable variablen, und global - na ja, s.o.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hallo,
          .

          function createSession()
                {
                    global $arrSession;

          Warum hier ein Global
          $arrSession ist nur ein Variablenname für meine session-array

          .... solche variablen kann man sich über das schlüsselwort global in seine funktion "hereinholen".

          Genau deswegen frage ich mich was das soll, da arrsession nicht auserhalb definiert wurde bzw. dort mit einem wert belegt wurde
          Oder ich sehe den wald vor lauter Bäumen nicht

          $this->arrSessionData = &$arrSession;

          Das ist erstb der Hit, was soll mir &$arrSession sagen?

          stichwort: referenzen

          Muss ich mich doch mal genauer ansehen

          Gruss Achim