Login OOP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Originally posted by ripper View Post
    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.

    Comment


    • #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

      Comment


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

        Comment


        • #5
          Originally posted by ripper View Post
          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.

          Comment


          • #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 .
            Last edited by pascal007; 22-09-2010, 10:41.

            Comment


            • #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.
              Last edited by reok; 23-09-2010, 11:03.
              not null blog - a developer's worries & solutions

              Comment

              Working...
              X