kostenloser Webspace werbefrei: lima-city


OOP if und else Fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    Ich arbeite grade ein bisschen an einem Login mit mysql und mache das natürlich oop mit php.

    Ich habe einmal:

    Mysql.class.php
    <?php 
    
    class Mysql
    {
    	
    	var $Server;
    	var $User;
    	var $Passwort;
    	var $DB;
    	private $connection = array();
    	
    	private function DB_connect($Server,$User,$Passwort,$DB)
    	{
    		$this->connection["0"] = mysql_connect($this->Server,$this->User,$this->Passwort) or die("1".mysql_error());
    		$this->connection["1"] = mysql_select_db($this->DB) or die("2".mysql_error());
    	}
    	
    	function __destruct__()
    	{
    		$this->DB_connect($this->Server,$this->User,$this->Passwort,$this->DB);
    		
    		return $this->connection;
    	}
    }
    
    ?>


    Und dann noch:

    Mysql_login.class.php
    <?php 
    
    include 'Mysql.class.php';
    
    class Mysql_login extends Mysql
    {
    	
    	var $Pass_eingabe;
    	var $Pass_vergleich;
    	var $Nutzer_eingabe;
    	var $Nutzer_vergleich;
    	var $Table;
    	var $erg;
    	var $error = array();
    	
    	private $sql_befehl;
    	private $sql_erg;
    	
    	function __construct()
    	{
    		
    	}
    	private function Daten_auslesen($Table,$Nutzer_eingabe,$DB)
    	{
    		$this->sql_befehl = "SELECT * FROM `".$this->DB."`.`".$this->Table."` WHERE `name` = '".$this->Nutzer_eingabe."'";
    		
    		$this->sql_erg = mysql_query($this->sql_befehl) or $this->error["1"] = false
    		
    		if (count($this->error) == 0)
    		{
    			while($this->erg = mysql_fetch_array($this->sql_erg,MYSQL_ASSOC))
    			{
    				 
    				if($this->erg["ID"] != "")
    				{					
    				    return $this->erg["password"];
    				}
    				else 
    				{
    					echo "<div id=\"Fehler\">Du hast eine inkorrekte angabe gemacht oder uns ist ein Fehler unterlaufen</div>";
    			
    			        return false;
    				}
    		    }
    		}
    		else 
    		{
    			echo "<div id=\"Fehler\">Du hast eine inkorrekte angabe gemacht oder uns ist ein Fehler unterlaufen</div>";
    			
    			return false;
    		}
    	}
    	function Daten_vergleichen($Pass_eingabe)
    	{
    		$this->Pass_vergleich = $this->Daten_auslesen();
    		
    		if($this->Pass_vergleich == md5($this->Pass_eingabe)) 
    		{
    			return true;
    		}
    		else 
    		{
    			return false;
    		}
    	}
    	private function Daten_schreiben()
    	{
    		
    	}
    	function __destruct()
    	{
    		$this->__destruct__();
    		$this->Daten_auslesen($this->Table, $this->Nutzer_eingabe, $this->DB);
    	}
    }
    
    $mysql = new Mysql_login();
    
    $mysql->Server = "localhost";
    $mysql->User = "root";
    $mysql->Passwort = "**********";
    $mysql->DB = "**********";
    $mysql->Table = "**********";
    $mysql->Nutzer_eingabe = "**********"; // Name wird später über Formular gewählt
    
    
    ?>


    So wenn ich das nun starte und einen Falschen namen wähle.
    wird das
    if($this->erg["ID"] != "")
    {					
        return $this->erg["password"];
    }

    nicht ausgeführt, weil $this->erg["ID"] den Wert null hat.
    Aber irgendwie wird

    else 
    {
           echo "<div id=\"Fehler\">Du hast eine inkorrekte angabe gemacht oder uns ist ein Fehler unterlaufen</div>";
    			
    	return false;
    }

    auch nicht ausgeführt.

    Kann mir jemand sagen woran das liegt?

    PS: Es wird keine Fehlermeldung angegeben.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ersteres wird eben schon ausgeführt, weil NULL eben !="" ist. Da aber für NULL wohl nichts hinterlegt wird sollte einfach gar nichts passieren.
  4. g****e

    Probier mal folgendes:
    if($this->erg["ID"] !== "")

    Mein Grippekopf vermutet, dass du auch Typen beachten musst :-D

    Probiers mal

    Liebe Grüße
  5. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    karpfen schrieb:
    Ersteres wird eben schon ausgeführt, weil NULL eben !="" ist. Da aber für NULL wohl nichts hinterlegt wird sollte einfach gar nichts passieren.


    NULL = ""

    ich habs ausprobiert und es funktioniert soweit auch alles gut außer, dass dieses Else nicht anspringt.

    also wie der karpfen schon gesagt hat es passiert nichts es wird kein wert zurrückgegeben aber es wird auch keine Meldung ausgegeben. Wie ist das möglich? ich meine bei if/else wird doch immer entweder das eine oder das ander ausgeführt, oder?

    PS: @ggamee

    Es hat ncihts gebracht. leider :-(

    Beitrag zuletzt geändert: 26.11.2011 22:44:12 von nilsmargotti
  6. Ich glaube, dass der erste Part der Bedingung anspringt, du das aber nicht merkst, weil
    $this->erg
    kein Element "password" enthält, da du in deiner Datenbanktabelle das deutsche Wort "passwort" verwendet hast. Somit bekommst du nichts zurück und der else-Part wird nicht ausgeführt.

    Beitrag zuletzt geändert: 26.11.2011 23:38:13 von drafed-map
  7. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    drafed-map schrieb:
    Ich glaube, dass der erste Part der Bedingung anspringt, du das aber nicht merkst, weil
    $this->erg
    kein Element "password" enthält, da du in deiner Datenbanktabelle das deutsche Wort "passwort" verwendet hast. Somit bekommst du nichts zurück und der else-Part wird nicht ausgeführt.


    Ich habe mich nicht vertippt. Das kann ich schon mal so sagen und wie soll die erste wahl anspringen ohne, dass sie True zurück gibt?
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!