Denkfehler bei Passwortüberprüfung wenn " " übergeben wird

chrisbhv

Mitglied
Hallo,

Ich habe bei mir ein kleines Loginscript gebaut - einfach beschrieben:
Überprüfung Username
WENN
Richtig -> zeige Datensätz
Falsch -> echo"falsch";
"leer" -> echo "falsch";

Bei den Punkten "Richtig" und "Falsch" funktioniert das script auch allerdings wenn kein Benutzername oder Passwort übergeben wird, funkiotniert die If abfrage NICHT
siehe:
PHP:
if($benutzername != $username && $passwort != $passw){
   echo "Flascher benutzername oder Passwort !";
} 	  
	 			
if($benutzername != "" && $passwort != ""){
   echo "Keinen Benutzernamen und Passwort eingegeben";
}

Hat jemand ne Idee ?
Ist es ein rechtschreibfehler

Habe schon vieles Probiert - aber komme auf KEINEN grünen Zweig...

Vielen Dank im voraus

Christian
 
Öhm:
PHP:
if($benutzername != "" && $passwort != ""){
   echo "Keinen Benutzernamen und Passwort eingegeben";
}
Damit überprüfust ob es NICHT leer ist und lässt dann die Fehlermeldung ausgeben.
Also:
Wenn nicht leer ,dann Fehler.

PHP:
if($benutzername == "" && $passwort == ""){
   echo "Keinen Benutzernamen und Passwort eingegeben";
}
Hiermit wird der Error ausgegben, wenn Passwort & Benutzername leer sind.
Anstatt deiner Überpürfung kannst du übrigens auch mit [phpf]empty[/phpf] arbeiten ,vielleicht ist es dir angenehmer.
 
Hi erstmal danke für deine Antwort - aber so klappt es auch nicht .

Bei der Abfrage ob die daten falsch sind, zeigt er mir nur den echo falsch an....

Aber bei der Abfrage ob die daten leer sind zeigt er mir teile aus dem html quelltext an und ich sehe KEIN "Keinen Benutzernamen oder Passwort...." !

habe auch folgendes Probiert:

PHP:
if (empty ($benutzername)) { #evaluates true 
   echo "Keinen Benutzernamen eingegeben !";
}

klappt aber alles nicht
 
ich glaub du wirst schon bisschen mehr als nur if(...) posten müssen. Wenn ich mich nicht irre kommt der Fehler erst noch im folgenden Teil des scriptes.
Hast du überhaupt else eingebaut ?

Leg dir mal ein ordentliches Tutorial zu und lerne deine scripte selber zu debuggen(Ab und zu mal Variablen ausgeben lassen usw)!
 
So funktioniert es:

if($user == "" || $pass == "")
{
echo "Keinen Benutzernamen und Passwort eingegeben";
}
else
{
if($user != $username || $pass != $passw)
{
echo "Flascher benutzername oder Passwort !";
}
else
{
echo "Bin drin";
}
}
 
Ich hätte es wahrscheinlich so gelöst:
PHP:
<?php
  $benutzername = ( isset($_POST['benutzername']) && trim($_POST['benutzername'])!='' )
    ?  trim($_POST['benutzername'])
    :  FALSE;
  $passwort = ( isset($_POST['passwort']) && trim($_POST['passwort'])!='' )
    ?  trim($_POST['passwort'])
    :  FALSE;

  $count = 0;

  if( $benutzername!==FALSE && $passwort!==FALSE ) {
    $query = "
	SELECT
	        COUNT() AS `count`
	  WHERE
	        `benutzername` = '".mysql_escape_string($benutzername)."'
	    AND `passwort` = '".mysql_escape_string($passwort)."'
	  LIMIT
	        1
	";
    $result = mysql_query($result);
    list($count) = mysql_fetch_array($result, MYSQL_ASSOC);
  }

  if( $count === 0 ) {
    echo 'Benutzername und/oder Passwort sind falsch.';
  }
  [...]
?>
 
Super Dankeschön für eure Antworten....


Ich habe KevinT´s Version genommen - ist schön Übersichtlich und einfach....
Und Funktioniert SUPER

Danke Danke
 
PHP:
<?php
  $benutzername = ( isset($_POST['benutzername']) && trim($_POST['benutzername'])!='' )
    ?  trim($_POST['benutzername'])

// was hat das >?< zu bedeuten?

    :  FALSE;

// wird hier in die Variable der String "FALSE" geschrieben oder
// ist das ein Boolischer Ausdruck?

  $passwort = ( isset($_POST['passwort']) && trim($_POST['passwort'])!='' )
    ?  trim($_POST['passwort'])
    :  FALSE;

  $count = 0;

  if( $benutzername!==FALSE && $passwort!==FALSE ) {

// und was ist das? Ich kenne nur == und !=
// aber was ist bitte !== ?

    $query = "
	SELECT
	        COUNT() AS `count`
	  WHERE
	        `benutzername` = '".mysql_escape_string($benutzername)."'
	    AND `passwort` = '".mysql_escape_string($passwort)."'
	  LIMIT
	        1
	";
    $result = mysql_query($result);
    list($count) = mysql_fetch_array($result, MYSQL_ASSOC);
  }

  if( $count === 0 ) {

// und hier auch: === Wieso 3?

    echo 'Benutzername und/oder Passwort sind falsch.';
  }
  [...]
?>

Könnt ihr mich mal über obige Kommentare von mir aufklären? ;)
 
Ich versuche mal deine Fragen zu beantworten:
  1. Das ? ist ein Teil des sog. ternären Operators:
    (Bedingung) ? wahr : unwahr
    &nbsp;&rsaquo;&rsaquo;&nbsp;PHP: Operatoren - Manual
  2. Wenn der vorherige Ausdruck unwahr ist, wird der Variable der boolische Wert FALSE zugewiesen, damit es bei der weiteren Bearbetung keine Verwechslungen gibt. Aber auch der Wert bzw Nichtwert NULL wäre hier möglich.
  3. Die Operatoren == und != gehören ebenso wie die Operatoren === und !== zu den Vergleichsoperatoren. Der Unterschied zwischen diesen beiden "Gruppen" ist bloß, dass bei === und !== nicht nur der Wert, sondern auch der Typ verglichen wird:
    &nbsp;&rsaquo;&rsaquo;&nbsp;PHP: Vergleichs-Operatoren - Manual
 
Danke für die schnelle Antwort. Ich werde da mal ein bisschen drauf rumdenken ;)

Bin nämlich just dabei, mir auch ein Login-System zu bauen...
 

Neue Beiträge

Zurück