ugrás a tartalomhoz

defined(ADATBAZIS) típusú ellenőrzés nem működik

jeti · 2006. Jún. 29. (Cs), 13.19
Sziasztok!

Egyszerre több különálló oldalt működtettek ugyanazokkal a programokkal (fórum, regisztráció, cikk stb. kezelés), de külön táblákkal. A legegyszerűbb megoldás több adatbázis használata lenne, de erre nincs lehetőségem. Eddig úgy oldottam meg az index.php –ban megadtam egy változót és minden függvényben – ahol kellett – globálissá téve kiolvastam, hogy most mit kell a tábla neve elé illeszteni. Ez az érték soha sem változott meg a program futása közben, sőt azon kívül se túl gyakran …
Arra gondoltam állandóval fogom mostantól megoldani. Definiáltam az index php-ban

define("ADATBAZIS","egyes_");
Ezt egyszerűen beágyazott fájlokban és függvényeken keresztül is elérem.
Eddig minden rendben.

Van a programjaimban egy biztonsági zár az első sorban. Mindig megnézi, hogy létezik-e a változó vagy nem? Ha igen, akkor mehet a beolvasás. Ha nem, akkor valószínűleg a php fájl pontos helyét írták be, ilyenkor elküldöm az boklászót a főoldalra.
A konstans nem tudom isset()-el megnézni, csak azt, hogy definiáltam-e már.

if (defined(ADATBAZIS)==false) {header("Location: http://valmi.hu");}
if (! defined(ADATBAZIS)) {header("Location: http://valmi.hu");}
Egyik megoldás sem működik, mert mindig elugrál a főoldalra. Pedig az index.php-ban definiálva van és abba ágyazódnak be ezek a fájlok is.
Mi a hiba?
Tud valaki a leírtaknál egyszerűbb megoldást?
Ugye, lehet egyszerre több konstansom is.
 
1

Aposztróf

Dualon · 2006. Jún. 29. (Cs), 13.43

defined('konstansNeve') ? '' : header('fooldal');

// kod tovabbi resze
A függvény: bool defined(string)
A defined(konstansNeve) és a defined('konstansNeve') közötti különbség az, hogy előbbinél a konstansNeve nevű állandó értékét adod át paraméterként, míg utóbbi esetben a nevét.

További variációs lehetőséget ad, ha a konstans értékét is figyeled.
2

Köszönöm

jeti · 2006. Jún. 29. (Cs), 18.13
Köszönöm a gyors választ, működik.
Egy kicsit furcsa a logikája, de mire leírtam a problémáimat, már meg is értettem.

A második esetben (’-os változat) a változó nevét hasonlítja össze a semmivel.
Vagyis az ADATBAZIS állandó neve (ADATBAZIS) egyenlő-e a semmivel ...
1.) Ha nem létezik, akkor nincs is az ADATBAZIS állandónak neve ...
2.) Ha meg létezik, akkor meg az a neve amit adtam (ADATBAZIS) ...
Tehát, akkor az 1.) esetben semmit se (üres karakter) ad vissza, és ezért működik.