Stringvergleich bei IF funkioniert nicht???
mabu
- php
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
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
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
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.
gruß,
wahsaga
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...
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