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.  

PHP Tutorial Teil 10 – Profi Login 1

In diesem Teil meiner PHP-Videotutorialreihe fangen wir mit der Entwicklung eines ausgewachsenem Login an.

Code:
index.php:

  1.  
  2.     require(‚Database.php‘);
  3.     require(‚LoginSystem.php‘);
  4.     $database = new Database(‚localhost‘, ‚root‘, , ‚tutorial‘);
  5.     $loginSystem = new LoginSystem($database);
  6.  
  7.         if($loginSystem->login(‚a@b.de‘, ‚irgendwas‘) == true)
  8.         {
  9.                 echo(‚erfolg‘);
  10.         }
  11.  
  12.     $database->close();
  13.  

loginSystem.php:

  1.  
  2.         class LoginSystem
  3.         {
  4.                 private $database;
  5.  
  6.                 public function LoginSystem($database)
  7.                 {
  8.                         $this->database = $database;
  9.                         session_cache_limiter(20);
  10.                         session_start();
  11.                 }
  12.  
  13.                 public function login($email, $password)
  14.                 {
  15.                         $loginDataValid = $this->checkLoginData($email, $password);
  16.                         if($loginDataValid == true)
  17.                         {
  18.                                 $db_res = $this->database->runSQLQuery("SELECT * FROM users WHERE Email=’" . $email . "’");
  19.                                 $row = mysql_fetch_array($db_res, MYSQL_ASSOC);
  20.  
  21.                                 $_SESSION[‚isLoggedIn‘] = true;
  22.                                 $_SESSION[‚Username‘] = $row[‚Username‘];
  23.                                 $_SESSION[‚Password‘] = $row[‚Password‘];
  24.  
  25.                                 return(true);
  26.                         }
  27.                         else
  28.                         {
  29.                                 return($loginDataValid);
  30.                         }
  31.                 }
  32.  
  33.                 /* checkLoginData
  34.                  * Prüft, ob ob ein Benutzer mit den angegebenen Login-Daten existiert.
  35.                  * $email: Angegebene E-Mail des Benutzers
  36.                  * $password: Angegebenes Passswort des Benutzers
  37.                  * returns: Wenn Benutzer existiert: true, sonst wrongEmail bei falscher E-Mail-Adredesse
  38.                  *                      und wrongPassword bei falschen Passwort */
  39.                 private function checkLoginData ($email, $password)
  40.                 {
  41.                         $db_res = $this->database->runSQLQuery("SELECT Password FROM users WHERE Email=’" . $email . "’");
  42.                         if(mysql_num_rows($db_res) == 0)
  43.                         {
  44.                                 return(‚wrongEmail‘);
  45.                         }
  46.  
  47.                         while($row = mysql_fetch_array($db_res, MYSQL_ASSOC))
  48.                         {
  49.                                 if($row[‚Password‘] == $password)
  50.                                 {
  51.                                         return(true);
  52.                                 }
  53.  
  54.                                 return(‚wrongPassword‘);
  55.                         }
  56.                 }
  57.  
  58.         }
  59.  

database.php:

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

Vorschau