isset und empty funktioniert nicht

  • DER , ok danke dir. Da kann man ja mal sehen das ich blind bin.

    Dann zur Info

    PHP
    <?php 
       
        if(empty($_POST['name'])) {
            die("NO");
        }
         echo "ok";
        
    ?>

    Mit der besagten empty Variante die hier schon besprochen wurde funktioniert es bei mir auch dann.

  • Sempervivum Ich habe deinen Kommentar nicht extra übersehen, entschuldige bitte!


    Aber die sache mit epmty allgemein: Sollte man nicht lieber isset() verwenden statt empty()? empty prüft darauf ob das Formularfeld einen Inhalt hat, allerdings gilt doch ein fall als unset, wenn es leer ist, oder nicht? Außerdem ist "0" laut empty auch true.

  • Zitat

    empty prüft darauf ob das Formularfeld einen Inhalt hat,

    Wenn ich dich richtig verstanden habe, ist das doch genau das, was Du brauchst? empty prüft auch, ob die Variable überhaupt existiert und liefert true zurück, wenn nicht.

    Zitat

    Außerdem ist "0" laut empty auch true.

    Das trifft zu. Ist das nicht akzeptabel, muss man zunächst mit isset auf Existenz prüfen und dann den Inhalt auf Leerstring, möglicher Weise noch nach Trimmen.

  • Ja, irgendwie ist es schon das was ich brauche, aber ist es dieses "best practise" von dem alle sprechen?


    Im php-kurs.com habe ich soweit ich weiß gelernt isset() zu nutzen, empty() wurde nicht einmal erwähnt. Daher nahm ich an mit isset() auf der richtigen Seite zu sein.


    Das empty() auch prüft ob die Variable überhaupt existiert wusste ich nicht. Wenn man also sicher überprüfen will ob Felder leer sind oder nicht, worauf soll ich zurückgreifen? Das empty() true bei "0" zurückgibt ist in diesem Fall egal?

  • Jo, isset() ist hier tatsächlich unangebracht, weil das Script ja nie ohne Formulardaten aufgerufen wird. isset() liefert also immer true!

    empty() ist wie hier schon beschrieben die richtige Entscheidung, zumindest auf ein Feld bezogen.


    Meine Aussage muss ich auch korrigieren: Es werden alle echos berücksichtigt.

  • Wird das Script denn auch direkt aufgerufen?

    Wenn es um den gezeigten Code geht, wird immer die POST-Methode verwendet und die Daten des Formular - ob leer oder nicht - werden gesendet.

    isset() ist in dem Fall also immer true!


    Beim direkten Aufruf des PHP-Script über URL funktioniert isset(), wie es soll...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!