Konstante ist nicht definiert

Alles, was PHP betrifft, kann hier besprochen werden.

Konstante ist nicht definiert

Postby Rolf Bergius » 01. November 2005 11:04

Hallo,

ich arbeite mit Sessions und möchte Code ausführen, wenn jemand auf die Seite zugreift, der nicht eigeloggt ist. Also:

Code: Select all
if (!defined(SID))
  {
   .......


Jetzt bekomme ich die Fehlermeldung:

Notice: Use of undefined constant SID - assumed 'SID' in /srv/www/htdocs/ProjektPDF/Trainingszentrum/WEB-Projekt/session.php on line 14


Ich weiß, das SID möglicherweise nicht definert ist. Genau das möchte ich ja testen.
Wo ist mein Denkfehler?

Besten Dank im Voraus
Rolf Bergius
User avatar
Rolf Bergius
 
Posts: 35
Joined: 06. August 2005 12:00
Location: 29614 Soltau

Postby Rolf Bergius » 01. November 2005 21:54

Manchmal kommt die Hilfe von unerwarteter Stelle.

Für alle, die die Lösung interessiert:

Code: Select all
if (!defined(SID))


Fragt: Gibt es eine Konstante SID?
Diese Frage erzeugt einen Compilerfehler.

Code: Select all
if (!defined('SID'))


Fragt nicht, wie ich gegelaubt habe: Gibt es einen String SID?, sondern: Gibt es eine Konstante mit dem Namen SID?
Diese Frage wird vom Compiler korrekt verstanden und führt zur Lösung.

Diesen Hinweis verdanke ich Niels Braczek.

Mit freundlichen Grüßen
Rolf Bergius
Die meisten Menschen haben überdurchschnittlich viele Beine.
User avatar
Rolf Bergius
 
Posts: 35
Joined: 06. August 2005 12:00
Location: 29614 Soltau

Postby Wiedmann » 02. November 2005 09:24

Auch wenn Nils dir in d.c.l.p.m schon geholfen hat, möcht ich dich nochmal auf das PHP-Manual hinweisen, wo dieses ja genau beschrieben wird:
http://de.php.net/manual/en/function.defined.php

(inkl. eines extra Hinweises, dass man unbendingt Stringdelimiter benutzen muss. Ergibt sich so aber ja eigentlich aus der Syntax.)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Rolf Bergius » 02. November 2005 10:53

Wie in d.c.l.p.m schon geschrieben, habe ich das PHP-Manual falsch verstanden.

Ich find diese Syntax immernoch unlogisch 'SID' ist für mich kein Name einer Konstanten sondern ein String. Verstanden hätte ich noch etwas wie $SID.
Mir ist auch nicht klar, wieso es diese Funktion überhaupt gibt.

isset($a) überprüft Variablen auf Existenz.
wohlgemerkt nicht: isset('$a') oder isset('a').

Wieso kann man nicht mit isset(SID) auch Konstanten überprüfen.

Selbst wenn ich das Manual verstanden hätte, hätte ich geglaubt einen Fehler zu machen.

tschau sir rolus
Die meisten Menschen haben überdurchschnittlich viele Beine.
User avatar
Rolf Bergius
 
Posts: 35
Joined: 06. August 2005 12:00
Location: 29614 Soltau


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests