mabu: Stringvergleich bei IF funkioniert nicht???

Hallo!

Das klingt jetzt wirklich sehr merkwürdig und es macht mich auch verrückt, aber ich würde wirklich gerne wissen wie sowas möglich ist.

Ich schicke ein Formular mit method="post" ab. Darin ist ein Hidden-Feld "action" mit dem Wert "NewEvent".

Die nächste Seite sieht so aus:

echo $_POST[action];
if($_POST[action] == "NewEvent") echo "funktioniert";

Als Ausgabe bekomme ich:

NewEvent

Jetzt frage ich mich natürlich wie sowas möglich ist? Ich bekomme als Ausgabe genau das was ich überprüfe, aber trotzdem geht er nicht in die Verzweigung rein!!!

Sind auch keine Leerzeichen oder so am Schluss/Anfang, es funktioniert einfach nicht.

mfg,
mabu

  1. Hallo!

    Einen wunderschönen Abend Matthias! ;~D

    echo $_POST[action];
    if($_POST[action] == "NewEvent") echo "funktioniert";

    Du bist wohl ein bisschen übermüdet ;)
    Du hast die Hochkommata vergessen. Also:

    if($_POST['action']=="NewEvent") echo "funktioniert";

    Besser:

    if($HTTP_POST_VARS['action']=="NewEvent"){ echo "funktioniert"; }

    Falls Du das in einer Funktion verwendest, darfst Du nicht vergessen:

    global $HTTP_POST_VARS;

    bzw.

    global $_POST;

    Sind auch keine Leerzeichen oder so am Schluss/Anfang, es funktioniert einfach nicht.

    Falls doch, verwende trim();

    mfg,
    mabu

    Weiterhin einen romantischen Abend
    Stefano Albrecht

    1. Huhu Stefano

      global $_POST;

      Das "globasl" ist nicht nötig.
      Es ist ja gerade der Witz an den "super global arrays", dass sie automatisch global sind, "super global" eben.

      http://www.php.net/manual/en/language.variables.predefined.php#language.variables.superglobals

      Und $HTTP_POST_VARS & Co. gelten als deprecated, sind also nicht mehr zu verwenden.

      Viele Grüße

      lulu

      --
      bythewaythewebsuxgoofflineandenjoytheday
      1. hi,

        global $_POST;

        Das "globasl" ist nicht nötig.

        an der stelle nicht.

        Es ist ja gerade der Witz an den "super global arrays", dass sie automatisch global sind, "super global" eben.

        bzgl. $HTTP_POST_VARS hatte er aber recht, denn das ist nicht superglobal; allerdings -

        Und $HTTP_POST_VARS & Co. gelten als deprecated, sind also nicht mehr zu verwenden.

        • hat sich damit das thema natürlich sowieso erledigt.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. Du hast die Hochkommata vergessen. Also:

      Ich verwende die Hochkommata nie, und es hat immer funkioniert mit

      $_POST[action] == "NewEvent"

      Und das sollte es wohl auch...

      1. Hi,

        Ich verwende die Hochkommata nie, und es hat immer funkioniert mit

        Glück gehabt oder Du hast die Konstanten entsprechend definiert (hier also define("action","action"); >;->)!

        Wenn Du (bzw. der Admin) den Errorlevel entsprechend gesetzt hätte, dann könntest Du sehen, daß PHP die undefinierte Konstante (natürlich) nicht findet (vermutlich "action not defined" o.s.ä.) und er dann beim nächsten Versuch einfach "action" *versucht*. Das kann aber scheitern.

        Davon abgesehen ist "Programmablauf auf Vermutungsbasis" generell nicht unbedingt das, was man gemeinhin unter "guter Programmierung" versteht.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!