Klassen Objekt globalisiert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Klassen Objekt globalisiert?

    Guten Abend,

    bin neu in diesem Forum und habe natürlich gleich ein problem. Konnte im Netz und über die Suche nichts eindeutiges finden.
    Deshalb schildere ich mal persönlich mein Problem.

    Ich habe folgende Dokumente: index.php, login.php, c_login.php

    c_login.php = Klasse die mit der Methode Login($username, $password) den Benutzer überprüft und gegebenfalls einloggt.

    login.php = benutzt die klasse zum einloggen, $User (das objekt) wird erst auf dieser seite erzeugt.

    index.php = startseite, soll über is_object prüfen ob das objekt ($User) erzeugt wurde.

    Das Problem: Ich kann mich problemlos über die login.php seite anmelden, aber geh ich nach dem anmelden auf index.php gibt is_object($User)
    trotzdem false zurück. Wenn ich ein Benutzer direkt auf der index.php erstellen ist der rückgabe wert allerdings true.

    meine frage, wie kann ich ein objekt nur unter login.php erzeugen und es bis zum logout für alle anderen .php dokumente nutzbar machen,
    so das ich prüfen kann ob ein admin menü angezeigt werden soll usw.

    Die Datei index.php (auszug)
    PHP-Code:
     if(is_object($GLOBALS['User']))
     {
      echo 
    'Es wurde ein Benutzer über die Klasse c_login erzeugt';
     }
     elseif(!
    is_object($GLOBALS['User']))
     {
      echo 
    'Es gibt noch kein Benutzer durch die Klasse c_login';
     } 
    Die Datei login.php (auszug)
    PHP-Code:
    <? if(isset($_REQUEST['submit']))
     {

      $GLOBALS['User'];
      $User = new c_login;
      
      if($User->Login($_REQUEST['f_username'], $_REQUEST['f_password']))
      {
       echo 'der benutzer konnte angemeldet werden <br />';
      }
      
     }
    ?>
    Die Datei c_login.php (auszug (nur methode Login), hier gibt es aber eigentlich auch keine probleme)
    PHP-Code:
      function Login($name$password)
      {
       
    $query     "Select * From " $this->table_title " WHERE " $this->row_title_name "='" $name "' AND " 
    $this->row_title_password "='" md5($password) . "' LIMIT 1";   
       
    $result     mysql_query($query);
          
       if(
    $row mysql_fetch_array($result))
       {
         
    $this->login_session_value $row[$this->login_session_typ];
         
    $s_reg session_register($this->login_session_value);
         
    $update mysql_query("UPDATE " $this->table_title " SET " $this->row_title_session_id .  "='" .  
    session_id() . "' WHERE " $this->row_title_id "='" $row[$this->row_title_id] . "'"); 
         
    $this->login_user_id $row[$this->row_title_id];
         
         if(isset(
    $s_reg) && isset($update))
         {
          return 
    true;
         }     
       } else
         {
          return 
    false;
         }   
      } 
    Mit freundlichen Grüße
    H. Morbid
    Zuletzt geändert von Morbid; 21.10.2006, 21:56.

  • #2
    Re: Klassen Objekt globalisiert?

    kannst du bitte deinen code umbrechen? niemand hat hier lust kilometerweit horizontal zu scrollen.

    Original geschrieben von Morbid
    meine frage, wie kann ich ein objekt nur unter login.php erzeugen und es bis zum logout für alle anderen .php dokumente nutzbar machen
    genau für diese zwecke hat der php-gott sessions erfunden.

    Kommentar


    • #3
      Ich arbeite doch mit sessions (siehe. source),

      vielleicht ein weiterer ausschnitt aus der klasse.

      methode zum prüfen ob user eingeloggt
      PHP-Code:
        function IsLogin()
        {
         if(
      session_is_registered($this->login_session_value) || $_SESSION[$login_session_value] != "")
         {
          return 
      true;
         }
        } 
      eigentlich möchte ich doch nur wissen, warum ein Objekt nur auf
      einer seite gültig ist.

      Aber danke für den Tipp, der PHP Gott wird mir schon weiter helfen...

      Kommentar


      • #4
        Original geschrieben von Morbid
        eigentlich möchte ich doch nur wissen, warum ein Objekt nur auf
        einer seite gültig ist.
        weil php vergesslich ist, speichere das objekt in einer session und alle seiten, die diese session benutzen, können darauf zugreifen.

        $GLOBALS['User'] ändert auch nichts daran, wenn schon $_SESSION['User']

        Kommentar


        • #5
          Original geschrieben von 3DMax
          weil php vergesslich ist, speichere das objekt in einer session und alle seiten, die diese session benutzen, können darauf zugreifen.

          $GLOBALS['User'] ändert auch nichts daran, wenn schon $_SESSION['User']
          hehe, sowas hatte ich auch ausprobiert ohne nützliches resultat, aber nun gehts.
          kA was ich da mal wieder verbockt habe. Nun ja, erstmal besten Dank.

          Mittlerweile bin ich aber der Meinung, das die Klasse wohl unnötig ist
          und ich besser normale Funktion verwenden sollte.
          Diese fordern schließlich kein Objekt und somit kann ich mir die doppelte Session sparen.
          Seh ich das richtig so, oder macht eine Klasse fürs Anmelden sonderlich mehr Sinn?

          Kommentar


          • #6
            weil php vergesslich ist, speichere das objekt in einer session und alle seiten, die diese session benutzen, können darauf zugreifen.

            $GLOBALS['User'] ändert auch nichts daran, wenn schon $_SESSION['User']
            aber ich kann doch in einer includierten Datei Variablen definieren, die im nachhinein in allen weiteren Dateien auch zur Verfügung stehen!
            Ein
            PHP-Code:
            include "configs.php"
            macht ja schließlich auch alle Konfigurationsvariablen im weiteren Verlauf verfügbar!

            Kommentar

            Lädt...
            X