Login OOP

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

  • Login OOP

    Gibt es ein Script was ohne ständige überprüfung ob der user eingelogt ist oder nicht arbeitet ?

    also wo man zentral einfach sagt das dürfen nur eingeloggte user das dürfen nur admins .... ohne das bei jedem script abzufragen.
    PHP-Code:
    return 0+$i

  • #2
    Zitat von ripper Beitrag anzeigen
    Gibt es ein Script was ohne ständige überprüfung ob der user eingelogt ist oder nicht arbeitet ?

    also wo man zentral einfach sagt das dürfen nur eingeloggte user das dürfen nur admins .... ohne das bei jedem script abzufragen.
    Was meinst du mit "bei jedem Script"? Üblicherweise gibt es eine Applikation, wo eben zentral abgefragt wird, ob ein User eingeloggt ist.

    Kommentar


    • #3
      man logt sich ein dann wird irgendeine variable in der session gesetzt die kennzeichnet das man eingeloggt ist. und wenn jetzt ein anderes script wissen möchte ob der user eingelogt ist dann fragt es die variable ab und wenn ja dann führt es aus.
      ich möchte diesen vorgang nicht mehr, dass abfragen aus jedem script das soll zentral passieren.
      PHP-Code:
      return 0+$i

      Kommentar


      • #4
        Du verwendest unterschiedliche Scripts die mit dem selben User arbeiten, oder wie darf man das verstehen?

        Kommentar


        • #5
          Zitat von ripper Beitrag anzeigen
          man logt sich ein dann wird irgendeine variable in der session gesetzt die kennzeichnet das man eingeloggt ist. und wenn jetzt ein anderes script wissen möchte ob der user eingelogt ist dann fragt es die variable ab und wenn ja dann führt es aus.
          ich möchte diesen vorgang nicht mehr,
          Doch, möchtest du - denn wenn du es nicht abfragst, dann kannst du auch nicht zwischen eingeloggt und nicht eingeloggt unterscheiden.

          dass abfragen aus jedem script das soll zentral passieren.
          Dann schreib dir ein Script, das diese Abfrage macht, und binde es in jedem anderen Script ein - entweder manuell ganz oben per require, oder automatisch per auto_prepend_file.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Also ich habe mir dafür eine Klasse gschrieben:

            PHP-Code:
            <?php

            class UserLogin {
              private 
            $conn;
              private 
            $user;
              private 
            $loggedin;

              public function 
            __construct($conn) {
                
            $this->conn $conn;

                if(
            $_SESSION['userid'] > 0) {
                  
            //userdaten aus der db abfragen und als user-objekt zurückgeben
                  
            $this->user = new User(/* mit db infos */);
                  
            $this->loggedin true;
                } else {
                  
            // gast-userobjekt zurückgeben
                  
            $this->user = new User(/* mit gast infos */);
                  
            $this->loggedin false;
                }
              }
              
              public function 
            performLogin($username,$password) {
                
            // hier das anmelden und speichern der userid in $_SESSION
              
            }

              public function 
            performLogout() {
                
            // hier das logout
              
            }

              
            pubic function getUser() {
                return 
            $this->user;
              }

              public function 
            isLoggedIn() {
                return 
            $this->loggedin;
              }
            }
            Dazu dann noch entsprechende Klasse User anlegen.

            Dann musst du in deinem Script nurnoch folgendes tun:

            PHP-Code:
            <?php

            session_start
            ();

            $conn = new mySQL;
            $userLogin = new UserLogin($conn);

            if(!
            $userLogin->isLoggedin()) {
              die(
            "nicht eingeloggt");
            }

            echo
            "eingeloggt!";

            ?>
            So mal ganz kurz und pseudocodemässig dargestellt . Und diese kleine Abfrage sollte ja nun kein Ding sein . Zudem kannst du so einfach per:

            Code:
            $userLogin->getUser()->...
            Auf die Benutzerdaten zugreifen .
            Zuletzt geändert von pascal007; 22.09.2010, 11:41.

            Kommentar


            • #7
              Verstehe ich das richtig?
              Du möchtest anstatt
              PHP-Code:
              if($_SESSION['logged_in']) {
                 
              // ...

              lieber
              PHP-Code:
              if($login->isLoggedIn()) {
                 
              // ...

              schreiben?
              Also eine Klasse oder ein Objekt dazwischen stellen, ohne tieferen Sinn?

              Solltest du keine weiteren Methoden haben, die du diesem Objekt hinzufügen möchtest, empfehle ich dir diesen Umweg zu sparen. Sinn würde es hingegen machen, wenn du zum Beispiel eine Klasse zur Session-Verwaltung schreiben möchtest. Die Methode isLoggedIn wäre da dann nämlich eine gute Ergänzung.

              Wenn du "flexibel" sein möchtest, kannst du auch eine Funktion benutzen:
              PHP-Code:
              function isLoggedIn() {
                 return (isset(
              $_SESSION['logged_in']) ? $_SESSION['logged_in'] : false);

              Falls das nicht das ist, was du gerne hättest, habe ich das Problem jedenfalls wohl nicht verstanden oder du dich nicht genau genug ausgedrückt.
              Zuletzt geändert von reok; 23.09.2010, 12:03.
              not null blog - a developer's worries & solutions

              Kommentar

              Lädt...
              X