LogIn mit klassen immer Erfolgreich

daniel_sun

Erfahrenes Mitglied
Hallo,

ich hab folgende Scripte:

dbControl.Class.php
PHP:
<?php
	class dbControl{
		
		private $host = "localhost";
		private $user = "root";
		private $pass = "";
		private $db = "sgb";
	
		public function dbConnect(){
                    
			if(mysql_connect($this->host, $this->user, $this->pass) && mysql_select_db($this->db)){
				return true;
			}else{
				$this->dbError();
			}
			
		}
		
		private function dbError(){
		
			echo "Es konnte keine Verbindung zur Datenbank hergestellt werden!";
		
		}
	}
?>

userControl.Class.php
PHP:
<?php
	class userControl{
                
                private $userName;
                private $userPass;
                
                public function __construct($userName, $userPass) {
                    
                    $this->userName = $userName;
                    $this->userPass = $userPass;
                    
                }
	
		public function login(){
                    
                    if(mysql_query("SELECT * FROM user WHERE userName = '".$this->userName."' AND password = 'md5(".$this->userPass.")'")){
                        
                        echo "LogIn Erfolgreich";
                        
                    }else{
                        echo "LogIn Fehlgeschlagen";
                    }

                    
		}
	}
?>

index.php
PHP:
<?php
	require_once("class/dbControl.Class.php");
        require_once("class/userControl.Class.php");
        
        if(isset($_POST['submit'])){
            
            $db = new dbControl();
            $db->dbConnect();
            
            $userData = new userControl($_POST['userName'], $_POST['userPass']);
            $userData->login();
            
            exit();
            
        }
?>

<!DOCTYPE html>
<html>
    <head>
        <title>SGB-LogIn</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form action="index.php" method="POST">
            <p> Username: <input type="text" name="userName"> </p>
            <p> Passwort: <input type="password" name="userPass"> </p>
            <p> <input type="submit" name="submit" value="LogIn"> <p>
        </form>
    </body>
</html>

Wie schon im Titel gesagt ist der LogIn immer Erfolgreich egal ob ich richtige oder falsche angaben mache. Finde den Fehler nicht.

GRuß
daniel_sun
 
Die Abfrage ist falsch.

"if(mysql_query)" gibt true zurück, wenn das Query erfolgreich durchgeführt wurde. Das sagt noch nichts über evtl. zurückgegebene Datensätze aus.

Zugriff auf die Rückgabe bekommst du u.a. mit mysql_fetch_assoc (erstes Beispiel). Wenn du nur wissen willst, ob etwas zurückkam, reicht theoretisch auch mysql_affected_rows, aber das würde ich hier nicht verwenden.


edit: Danke saftmeister für die Korrektur, da hab ich gestern ziemlich gepennt. Meinte natürlich mysql_num_rows.
 
Zuletzt bearbeitet:
Anmerkung: mysql_affected_rows() ist hier nicht sehr klug, denn diese Funktion liefert nur die Anzahl veränderter Datensätze zurück. Wenn du die Anzahl der Datensätze aus einem SELECT-Statement haben willst, solltest du lieber mysql_num_rows() verwenden.
 
Zurück