0251 / 590 837 15
info@a-coding-project.de
;

Login Status speichern

Code & Blog Logo

Code & Blog Logo

Das CMS ist jetzt soweit, dass es das Kennwort des Admins prüfen kann. Nun müssen wir auch herausfinden, ob der Admin eingeloggt ist, oder eben nicht. Dies geschieht auch in der Klasse User. Sie bekommt die Funktion login. Als Parameter bekommt sie den Usernamen und das Passwort. In der Datei index.php wird nach erfolgreichen Login der User-Name in eine Session-Variable gespeichert. Der Wert davon wird auf dem Server gespeichert, denn so leicht soll das CMS dann doch nicht gehackt werden können^^

Hier ist ist erstmal die simpele Login-Funktion in der user Klasse (system/classes/user.php):

...
function login($name,$password){
    global$dbpraefix;
    $password=mysql_real_escape_string(trim($password));
    $this->name=mysql_real_escape_string(trim($name));
    if($this->checkPassword($password)){
      returntrue;
    }
    else{
      returnfalse;
    }
  }
...

Die Datei index.php im Verzeichnis Admin wurde nun so erweitert, dass der Username gespeichert wird. Man achte auf das session_start^^. Zum Testen wird dann noch „Hallo“ username ausgegeben:

<?PHP
  session_start();
  include("../system/dbconnect.php");
  include("../system/settings.php");
  include("../system/classes/user.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml/" xml:lang="de">
  <head>
    <title>Admin-Bereich</title>
  </head>
  <body>
      <?PHP
        $user=newUser();
        if($_POST['user']){
          if($user->login($_POST['user'],$_POST['password'])){
            $_SESSION['username']=$_POST['user'];
            echo"<p>Login erfolgreich!</p>";
          }
          else{
            echo"<p>Login Fehlgeschlagen!</p>";
          }
        }
        if(isset($_SESSION['username'])){
          echo"Hallo ".$_SESSION['username']."!";
        }
      ?>
      <formaction="index.php"method="post">
        Benutzer: <inputname="user"/><br/>
        Passwort: <inputname="password"type="password"><br/>
        <inputtype="submit"value="Login"/>
      </form>
  </body>
</html>

Kommentare

Fynikoto schrieb am 03.06.2011:

kleiner Tipp: $_SESSION['username'] = $_POST['user']; ist nicht so geschickt! Bei normalen varchar Feldern gibt es kein Casesensitiv. Ich könnte mich also registrieren mit fynikoto und dann anmelden mit FYNIKOTO, was ja uach okay wäre. Nur ich werde vom System nicht mit meinem registrierten Namen begrüßt, sondern mit dem wie ich ihn grad eingegeben habe. Nur nen kleiner Schönheitsfehler :) Lg Fynikoto

Stefan Wienströer schrieb am 08.06.2011:

Was ist wenn du entscheidest, dass du deine Groß- und kKleinschreibung änderst?^^ Im aktuellen Stand wird das komplette User-Objekt in der Session gehalten, so dass sich das erledigt hat.

Fynikoto schrieb am 08.06.2011:

"Im aktuellen Stand wird das komplette User-Objekt in der Session gehalten, so dass sich das erledigt hat." das hat sich nur erledigt wenn hierbei der username in der Userklasse aus der DB kommt und net auch aus $_POST["user"]^^ sonst ist es das gleiche "Problem". Aber insgesammt sehr schönes Projekt, was ich bisher gesehen habe :) ich werde mir es irgendwann sobald ich zeit habe, mal ganz durchlesen. Ich hab vor ner Weile mal nen CMS entwickelt gehabt, was aber leider dann irgendwann unübersichtlich wurde und das scheinst du / ihr hier echt recht gut durchzuhalten (also eine schöne Struktur). Momentan bastel ich allerdings an nem Universalprojekt für BGs, das eben ein bisschen andere anforderungen hat, als nen normales CMS. Hoffe das ich es bald mal ganz lesen kann :) Viel Erfolg noch! Liebe Grüße Fyn

Jordan Kniest schrieb am 08.08.2011:

Hallo.. erstmal großes Lob zum Tutorial.. habe auf Facebok gleich mal auf Gefällt mir geklickt. Einen kleinen Tippfehler habe allerdings gefunden. Weiter oben steht: (system/classes/user-php) so sollte es eigentlich heissen: (system/classes/user.php) Also "-" mit "." ersetzen ;)

Stefan Wienströer schrieb am 09.08.2011:

War ein Test, ob auch alle aufpassen^^ Nach zwei Jahren hast du es endlich entdeckt^^

Sven schrieb am 15.08.2011:

Fatal error: Call to undefined function newUser() in C:xampphtdocscmsadminindex.php on line 15 bis jetzt kamen ja schon einige fehler bei mir auf die ich selber lösen konnte aber nun komm ich echt nich weiter...

Stefan Wienströer schrieb am 16.08.2011:

zwischen new und User gehört ein Leerzeichen ;-) Das Syntax-Highlighting hats verschluckt.

Christopher schrieb am 20.09.2011:

bei mir wird immer Login fehlgeschalgen angezeigt - obwohl ich alles - wirklich alles so gemacht wie hier beschrieben - woran kann das leigen?

Stefan Wienströer schrieb am 20.09.2011:

gib mal in der Login-Funktion das SQL-Statement aus und vergleiche die Daten mit der Datenbank.

Lucas schrieb am 04.10.2011:

Hallo, Ich verstehe jetzt gar nichts mehr. Ich habe das gleiche Problem wie Christopher, aber verstehe nicht was ich dann tun soll. Kann mir jemand helfen? Danke! Viele Grüße, Lucas

PapaRenner schrieb am 02.11.2011:

Ihr müsste in der /user.php im system/classes ordner das hier returntrue; } else{ returnfalse; } } } ?&gt; in das hier ersetzen return true; } else{ return false; } } } ?&gt; also jeweils ein leerzeichen zwischen "returntrue" und "returnfalse" .. Code highlighting hat wieder einiges verschluckt! :D