1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Array auf leere überprüfen....

Dieses Thema im Forum "PHP" wurde erstellt von n1ght, 13. Oktober 2016.

  1. n1ght

    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....

    Code (PHP):
    1. $email = $_POST['email'];
    2. $stmt = $pdo->prepare("SELECT password FROM members WHERE email = :email LIMIT 1");
    3. $stmt->bindParam(':email', $email);
    4. $stmt->execute();
    5. $result = $stmt->fetch();
    6. if(isset($result)or empty($result) or $result = " "){
    7.     echo "Kein Passwort \n";
    8.     print_r($result);
    9. }
    10. elseif(!isset($result)) {
    11.     echo "Du bist kein alter Benutzer bitte registriere dich! \n";
    12.     print_r($result);
    13. }
    14.  
    15. ?>
    16. Array ( [password] => ******** [0] => ********)
    Jemand ne Ahnung warum :O
     
  2. sheel

    sheel I love Asm Administrator

    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 (Text):
    1. if($result === false)
    2. ...
    3. else
    4. ...
     
  3. n1ght

    n1ght Grünschnabel

    Sind nicht im Klartext, zur email-Spate die ist Unique aber dachte sicher ist sicher:D
    Das mit der Abfrage werde ich gleich mal austesten :)
     
  4. n1ght

    n1ght Grünschnabel

    Funktioniert leider nicht... Array ( [password] => [0] => ) Also nicht false :(
     
  5. sheel

    sheel I love Asm Administrator

    Wie schaut der aktuelle Code denn aus?
     
  6. n1ght

    n1ght Grünschnabel

    Code (PHP):
    1. $email = $_POST['email'];
    2. $stmt = $pdo->prepare("SELECT password FROM members WHERE email = :email");
    3. $stmt->bindParam(':email', $email);
    4. $stmt->execute();
    5. $result = $stmt->fetch();
    6. if($result === false or $result ==" " or $result ==""){
    7.     echo "Kein Passwort \n";
    8.     print_r($result);
    9. }
    10. else {
    11.     echo "Du bist ein alter Benutzer bitte registriere dich! \n";
    12.     print_r($result);
    13. }
    14.  
    15. ?>
     
  7. Yaslaw

    Yaslaw n/a Moderator

    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 ... ?>)
     
  8. n1ght

    n1ght Grünschnabel

    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 ;)
     
  9. sheel

    sheel I love Asm Administrator

    Das
    Code (Text):
    1. 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?
     
  10. n1ght

    n1ght Grünschnabel

    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 :(
     
  11. Yaslaw

    Yaslaw n/a Moderator

  12. n1ght

    n1ght Grünschnabel

    Der Fehler war das es ein leerer String in einem Multidimensionalen Array war... mit
    Code (PHP):
    1. empty($result['password']
    funktioniert wieder alles...
     
  13. sheel

    sheel I love Asm Administrator

    ...wie gesagt, wenn in der DB wirklich nichts ist gibts das nicht, dass da ein Array zurückommt.
    Egal...
     
  14. n1ght

    n1ght Grünschnabel

    Dann erzeugt er wenn man was einträgt, in die Spalten die man nicht angibt wohl einen Leeren String automatisch... Wusste ich vorher auch nicht sorry
     
Die Seite wird geladen...
Ähnliche Themen - Array leere überprüfen
  1. -Jack001
    Antworten:
    2
    Aufrufe:
    167
  2. n1ght
    Antworten:
    11
    Aufrufe:
    266
  3. Thomas Neef
    Antworten:
    5
    Aufrufe:
    324
  4. Neurodeamon
    Antworten:
    3
    Aufrufe:
    2.666
  5. Der Held
    Antworten:
    2
    Aufrufe:
    22.544