Array auf leere überprüfen....

n1ght

Grünschnabel
Guten Abend Leute.....
Habe nen Problem mit einem Script was mir ein Passwort aus einer Datenbank liest und ich testen will ob dieses Feld mit einer gegeben Email leer ist und dannach soll etwas ausgeführt werden aber aktuell wird es ausgeführt auch wenn in dem Array was steht....

PHP:
$email = $_POST['email'];
$stmt = $pdo->prepare("SELECT password FROM members WHERE email = :email LIMIT 1");
$stmt->bindParam(':email', $email);
$stmt->execute();
$result = $stmt->fetch();
if(isset($result)or empty($result) or $result = " "){
    echo "Kein Passwort \n";
    print_r($result);
}
elseif(!isset($result)) {
    echo "Du bist kein alter Benutzer bitte registriere dich! \n";
    print_r($result);
}

?>
Array ( [password] => ******** [0] => ********)

Jemand ne Ahnung warum :O
 
Hi

Passwörter im Klartext in der DB zu speichern ist ganz schlecht.

Und hat die email-Spalte ein Unique?
Wenn ja: Das Limit in der SQL-Anweisung ist unnötig.
Wenn nein: Falls das so beabsichtigt ist sollte dein PHP-Code dann aber auch in der Lage sein, mit mehreren Benutzern umzugehen (aber hoffentlich ist es nicht beabsichtigt, das bringt eine Reihe von Problemen mit sich)

Zur Bedingung, die macht erstens keinen Sinn und enthält zweitens eine Zuweisung ($result = " ") statt einem Vergleich ($result == " " bzw. $result == ""). Fetch liefert bei Fehlern false zurück, es reicht also
Code:
if($result === false)
...
else
...
 
Sind nicht im Klartext, zur email-Spate die ist Unique aber dachte sicher ist sicher^^
Das mit der Abfrage werde ich gleich mal austesten :)
 
PHP:
$email = $_POST['email'];
$stmt = $pdo->prepare("SELECT password FROM members WHERE email = :email");
$stmt->bindParam(':email', $email);
$stmt->execute();
$result = $stmt->fetch();
if($result === false or $result ==" " or $result ==""){
    echo "Kein Passwort \n";
    print_r($result);
}
else {
    echo "Du bist ein alter Benutzer bitte registriere dich! \n";
    print_r($result);
}

?>
 
Was hat dein Text "Array ( [password] => ******** [0] => ********)" Mit dem Code zu tun?
Das ist ein Text der einfach genau so ausgegeben wird. Unabhängig von deiner Abfrage. (Denn es ist ausserhalb der <?php ... ?>)
 
Das ist die Ausgabe von print_r .... Ist nur ne zur Überprüfung für mich das ich nich den falschen User genommen hab und denke es funktioniert ;)
 
Das
Code:
or $result ==" " or $result ==""
kann auch noch weg.

Sonst ... kann es nicht zufällig sein, dass die Ausgabe doch richtig ist?
Hast du manuell in die DB geschaut und es geprüft?
 
Deswegen die Ausgabe über print_r es kann nicht sein.... Da steht nichts drinnen das steht zu 100% fest da auch gewollt... Will es jetzt über eine Form festlegen können und nicht vorher schon deswegen ist das Feld aktuell noch leer!
Allerdings überprüft er es entweder gar nicht oder falsch denn das Feld ist zu 100% leer aber ich bekomme ob leer oder nicht immer die selbe Ausgabe nämlich das es leer wäre auch wenn ein Passwort drinnen steht :(
 

Neue Beiträge

Zurück