PHP Tutorial Teil 11 – Profi Login 2

Code:
index.php

  1.  
  2. <?php
  3.         require(‚Database.php‘);
  4.         require(‚LoginSystem.php‘);
  5.     $database = new Database(‚localhost‘, ‚root‘, , ‚tutorial‘);
  6.     $loginSystem = new LoginSystem($database);
  7.     require(‚cleanInput.php‘);
  8.  
  9.  
  10.         if(isset($_POST[‚email‘]))
  11.         {
  12.                 $login_res = $loginSystem->login($_POST[‚email‘], $_POST[‚password‘]);
  13.                 if($login_res == ’success‘)
  14.                 {
  15.                         echo(‚<p>Du bist jetzt eingeloggt</p>‘);
  16.                 }
  17.                 elseif($login_res == ‚wrongEmail‘)
  18.                 {
  19.                         echo(‚<p>Es existiert kein Benutzer mit der angegebenen E-Mail.</p>‘);
  20.                 }
  21.                 elseif($login_res == ‚wrongPassword‘)
  22.                 {
  23.                         echo(‚<p>Das Passwort ist falsch</p>‘);
  24.                 }
  25.         }
  26.         else
  27.         { ?>
  28.                 <form action="index.php" method="post">
  29.                         <p>E-Mail: <input type="text" name="email" /></p>
  30.                         <p>Passwort: <input type="password" name="password" /></p>
  31.                         <p><input type="submit" /></p>
  32.                 </form>
  33. <?php }
  34.  
  35.     $database->close();
  36. ?>
  37.  

LoginSystem.php

  1.  
  2. <?php
  3.         class LoginSystem
  4.         {
  5.                 private $database;
  6.  
  7.                 public function LoginSystem($database)
  8.                 {
  9.                         $this->database = $database;
  10.                         session_cache_limiter(20);
  11.                         session_start();
  12.                 }
  13.  
  14.                 /* registerUser
  15.                  * Registriert einen neuen Benutzer in der Datenbank, wenn dieser nicht schon existiert.
  16.                  * $username: Benutzername des zu registrierenden Benutzers
  17.                  * $email: E-Mail des zu registrierenden Benutzers
  18.                  * $password: Passwort des zu registrierenden Benutzers
  19.                  * returns: ’success‘ bei erfolgreicher registrierung, sonst ‚usernameExistsAlready‘
  20.                  *              wenn der Benutzername schon existiert oder ‚passwordExistsAlready‘, wenn
  21.                  *              das Passwort schon existiert */
  22.                 public function register($username, $email, $password)
  23.                 {
  24.                         if(filter_var($email, FILTER_VALIDATE_EMAIL))
  25.                         {
  26.                                 $password = $this->encrypt($password);
  27.                                 $db_res = $this->database->runSQLQuery("
  28.                                 SELECT Username, Email FROM users WHERE
  29.                                         Username = ‚$username‘ OR
  30.                                         Email = ‚$email‘
  31.                                 ");
  32.  
  33.                                 $row = mysql_fetch_array($db_res, MYSQL_ASSOC);
  34.                                 if($row[‚Username‘] == $username)
  35.                                 {
  36.                                         return(‚usernameExistsAlready‘);
  37.                                 }
  38.                                 else
  39.                                 {
  40.                                         return(‚emailExistsAlready‘);
  41.                                 }
  42.  
  43.                                 $db_res = $this->database->runSQLQuery("
  44.                                 INSERT INTO users
  45.                                 (
  46.                                         Username,
  47.                                         Email,
  48.                                         Password
  49.                                 )
  50.                                 VALUES
  51.                                 (
  52.                                         ‚$username‘,
  53.                                         ‚$email‘,
  54.                                         ‚$password‘
  55.                                 )");
  56.  
  57.                                 return(’success‘);
  58.                         }
  59.                         else
  60.                         {
  61.                                 return(’noValidEmail‘);
  62.                         }
  63.                 }
  64.  
  65.                 private function encrypt($value)
  66.                 {
  67.                         for($i=0; $i<100000; $i++)
  68.                         {
  69.                                 $value = md5($value . ’sfvi&ouml;sogfw8oigfro9wfvgoklvgsukvfkhsdjv‘);
  70.                         }
  71.                         return($value);
  72.                 }
  73.  
  74.                 public function login($email, $password)
  75.                 {
  76.                         $password = $this->encrypt($password);
  77.                         $loginDataValid = $this->checkLoginData($email, $password);
  78.                         if($loginDataValid == ’success‘)
  79.                         {
  80.                                 $db_res = $this->database->runSQLQuery("SELECT * FROM users WHERE Email=’" . $email . "’");
  81.                                 $row = mysql_fetch_array($db_res, MYSQL_ASSOC);
  82.  
  83.                                 $_SESSION[‚isLoggedIn‘] = true;
  84.                                 $_SESSION[‚Username‘] = $row[‚Username‘];
  85.                                 $_SESSION[‚Password‘] = $row[‚Password‘];
  86.  
  87.                                 return(’success‘);
  88.                         }
  89.                         else
  90.                         {
  91.                                 return($loginDataValid);
  92.                         }
  93.                 }
  94.  
  95.                 public function logout()
  96.                 {
  97.                         $_SESSION[‚isLoggedIn‘] = false;
  98.                 }
  99.  
  100.                 public function isLoggedIn()
  101.                 {
  102.                         if(isset($_SESSION[‚isLoggedIn‘]))
  103.                         {
  104.                                 if($_SESSION[‚isLoggedIn‘] == true)
  105.                                 {
  106.                                         return(true);
  107.                                 }
  108.                                 else
  109.                                 {
  110.                                         return(false);
  111.                                 }
  112.                         }
  113.                         else
  114.                         {
  115.                                 return(false);
  116.                         }
  117.                 }
  118.  
  119.                 /* checkLoginData
  120.                  * Prüft, ob ob ein Benutzer mit den angegebenen Login-Daten existiert.
  121.                  * $email: Angegebene E-Mail des Benutzers
  122.                  * $password: Angegebenes Passswort des Benutzers
  123.                  * returns: Wenn Benutzer existiert: ’success‘, sonst wrongEmail bei falscher E-Mail-Adredesse
  124.                  *                      und wrongPassword bei falschen Passwort */
  125.                 private function checkLoginData ($email, $password)
  126.                 {
  127.                         $db_res = $this->database->runSQLQuery("SELECT Password FROM users WHERE Email=’" . $email . "’");
  128.                         if(mysql_num_rows($db_res) == 0)
  129.                         {
  130.                                 return(‚wrongEmail‘);
  131.                         }
  132.  
  133.                         while($row = mysql_fetch_array($db_res, MYSQL_ASSOC))
  134.                         {
  135.                                 if($row[‚Password‘] == $password)
  136.                                 {
  137.                                         return(’success‘);
  138.                                 }
  139.  
  140.                                 return(‚wrongPassword‘);
  141.                         }
  142.                 }
  143.  
  144.         }
  145. ?>
  146.  

Database.php

  1.  
  2. <?php
  3.  
  4.     class Database
  5.     {
  6.         private $host;
  7.         private $username;
  8.         private $password;
  9.         private $database;
  10.                 private $db_link;
  11.  
  12.                 public function Database($host, $username, $password, $database)
  13.                 {
  14.                         $this->host = $host;
  15.                         $this->username = $username;
  16.                         $this->password = $password;
  17.                         $this->database = $database;
  18.  
  19.                         $this->connect();
  20.                 }
  21.  
  22.                 private function connect()
  23.                 {
  24.                 $this->db_link = mysql_connect($this->host, $this->username, $this->password);
  25.                 if($this->db_link)
  26.                 {
  27.                                 mysql_select_db($this->database, $this->db_link);
  28.                         }
  29.                         else
  30.                         {
  31.                                 die(‚<p>Das Herstellen der Verbindung zur Datenbank ist fehlheschlagen</p>‘);
  32.                         }
  33.                 }
  34.  
  35.                 public function runSQLQuery($sql)
  36.                 {
  37.                         if($this->db_link)
  38.                         {
  39.                                 $db_res = mysql_query($sql, $this->db_link) or die(mysql_error() . ‚<br />‘ . $sql);
  40.                                 return($db_res);
  41.                         }
  42.                 }
  43.  
  44.                 public function close()
  45.                 {
  46.                         mysql_close($this->db_link);
  47.                 }
  48.         }
  49.  
  50. ?>
  51.  

Ein Gedanke zu “PHP Tutorial Teil 11 – Profi Login 2

  1. Ist das dein Ernst? Dieser dilettantische Mix aus PHP und HTML? Und dann noch dermaßen veraltet…

    – deine Output-Seite hat nichtmal einen !DOCTYPE, geschweige denn , oder
    – Schon mal etwas von gehört?
    – und was sollen die XHTML-Style-Closer (insbesondere bei )?
    – Profi-Login? Du hast ja nicht einmal rudimentärste checks eingebaut, geschweige denn ein Exception-Handling…
    – deinen if .. elseif .. elseif lassen wir mal so stehen (aber nur, weil es performance-technisch umstritten ist, ob eine switch besser ist, semantisch IST sie besser), ABER: was machst du da mit einfachen String-Vergleichen??? Noch nie etwas von Klassen-Konstanten gehört?
    – public functions als Konstruktoren sind in PHP ja sowas von veraltet (ich bin mir grad gar nicht sicher ob IRGENDEINE 5.x Version das noch als nicht deprecated drin hat)
    – null mysql-Absicherung

    Ich verlier grad sowas von die Lust, mir das hier weiter anzuschauen… Wenn man sich schon berufen fühlt, Tutorials zu veröffentlichen, dann sollte man auch schon ein bisschen schauen, dass das Ganze auch Sinn macht.

    ZURÜCK IN DIE SCHULE!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*