[PHP 7.0.27 | IIS 10] IF = TRUE?!

  • Heyho.. ich habe grade ein sehr merkwürdiges problemchen...
    Diese IF Abfrage resultiert immer TRUE... what da..
    Eventuell sieht da jemand den Fehler den ich nicht sehe..


    PHP: If Abfrage
    //POST VAR = $_POST["login_email"] // $_POST["login_password"]
    if(isset($_POST["login_email"]) AND isset($_POST["login_password"])) {
      echo "SET<br>";
      echo "login_email: " .$_POST["login_email"]."<br>";
      echo "login_password: " .$_POST["login_password"]."<br>";
    } else {
      echo "NOT SET";
    }


    Danke im vorraus.

  • Dein placeholder, sind auch String's. Da die in der Box sind und ud das dann abschickst, werden die auch angenommen.
    Denk ich mal.. Ich denke schon, dass ist der Grund

    Ich behaupte du verwechselst grade value="" mit placeholder=""
    Placeholder sind solange zusehen bis ein Input in die Box eingetragen wurde.
    value="" trägt bereits einen Wert in die Box ein.


    EDIT: Grade getestet, macht keinen unterschied.

  • Gib mal am besten dein kompletten $_POST aus.
    Meines Wissens fragt Isset nicht ab, ob die Variable initialisiert ist.
    (Isset liefert nur false, wenn die Variable nicht definiert ist oder NULL ist)
    Da die Variable existiert, wird true zurückgegeben.


    (Du schickst ziemlich wahrscheinlich eine leere Variable an den Server, jedoch existiert diese Variable.)

  • Gib mal am besten dein kompletten $_POST aus.
    Meines Wissens fragt Isset nicht ab, ob die Variable initialisiert ist.
    (Isset liefert nur false, wenn die Variable nicht definiert ist oder NULL ist)
    Da die Variable existiert, wird true zurückgegeben.


    (Du schickst ziemlich wahrscheinlich eine leere Variable an den Server, jedoch existiert diese Variable.)

    Variablen geprüft, diese werden richtig abgeschickt und sind auch nicht leer wenn Sie befüllt sein sollen



    hast du schon

    PHP
    if(!isset($_POST["login_email"]) AND !isset($_POST["login_password"])) {


    oder:

    PHP
    if(isset($_POST["login_email"]) && isset($_POST["login_password"])) {


    ausprobiert?

    Beides probiert...
    bei 1) bleiben die Var's "NOT SET", egal ob gesetzt oder nicht.
    bei 2) sind diese "SET", egal ob gesetzt oder nicht.


    Was mir aber grade auffällt... ich habe Fehlerreporting an, jedoch kommen keine Warnings wenn die Var's nicht gesetzt sind.

  • Es geht doch darum, dass die IF-Abfrage true ist, falls die Variablen leer sind, oder nicht?


    //Edit:
    Falls ja:
    Ich wollte eigentlich nur darauf hinaus, dass du zusätzlich die Länge der Variablen Abfragen sollst.

  • Es geht doch darum, dass die IF-Abfrage true ist, falls die Variablen leer sind, oder nicht?


    //Edit:
    Falls ja:
    Ich wollte eigentlich nur darauf hinaus, dass du zusätzlich die Länge der Variablen Abfragen sollst.

    STRLEN login_email = 0 (wenn nicht gesetzt, andernfalls wird die korrekte länge zurück gegeben)
    STRLEN login_password = 0 (wenn nicht gesetzt, andernfalls wird die korrekte länge zurück gegeben)




    EDIT:
    idk ob es hilft, aber hier ist mal die gesamte Login.php



    PHP: functions.inc.php
    <?php
    SESSION_START();
    ?>
  • Ich bin mir gerade nicht ganz sicher was geplant ist, aber ich glaube du willst das Verhalten von !empty haben anstatt isset.
    Ersetze mal beide "isset" mit "!empty"

    OMG, kam ein heimliches Update welches sich von selbst Installiert hat oder... Bis dato habe ich es immer mit isset() gemacht und es hat immer funktioniert.
    mit !empty() hat es nun endlich funktioniert... wieder was gelernt, danke!

  • Also waren die Variablen doch gesetzt aber eben leer?
    Isset schaut nämlich meines Wissens ob es gesetzt ist, Empty schaut dementsprechend ob es leer ist.


    Wollte nur darauf hinaus, weil andere Leute mit dem selben Problem eventuell damit dann besser was anfangen könnten.