ugrás a tartalomhoz

Switch...Case probléma?!

Anonymous · 2005. Már. 8. (K), 19.05
Sziasztok!

Adott a következő switch-case szerkezet:

switch( $_GET["oldal"] ) {
case "fooldal":
{
Fooldal();
break;
}
case "leker":
{
Leker( $_GET["melyik"] );
break;
}
case "admin":
{
header("Location: html/fv_admin_login.php");
break;
}
}

Működik minden, csak az admin blokk nem... Beírom a böngészőmbe, hogy index.php?oldal=admin, és nem irányít át. Csináltam egy másik php-t, amiben csak a header szerepel, az minden gond nélkül elvégzi a dolgát.
Mi lehet a probléma??

(PHP/4.3.4)

Előre is köszi!
 
1

Tartalom

Poetro · 2005. Már. 8. (K), 19.15
És biztosan nem írsz ki semmilyen tartalmat ezen az oldalon?
Mert a header csak akkor fog működni, ha előtte semmilyen tartalmat nem iratsz ki.
Miért rakod a case elemeit {}-be? nekem így, főleg, hogy nem használtad a colorer elemet a tartalmad beküldésénél nem tűnik áttekinthetőnek, és egyébként is felesleges.
--------
Poetro
2

De igen, irattatok ki

Anonymous · 2005. Már. 8. (K), 19.43
De igen, irattatok ki tartalmat, ha az echo-ra és/vagy a print-re gondolsz! Sőt, egy include van is van a switch előtt. Meg sima html is. Én úgy emlékszem, hogy már csináltam hasonló kódot, és ment a header!
4

Akkor azért nem működik

VBala · 2005. Már. 8. (K), 20.24
http://hu.php.net/manual/hu/function.header.php

"Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP."
7

Azt hiszem VBala által

Anonymous · 2005. Már. 8. (K), 20.48
Azt hiszem VBala által említett probléma áll fent, de nem tudom áthelyezni a scipt részletet, mert akkor nem lennének jók a kiíratások. Mind1, köszi a segítséget, javascript-tel megoldottam a problémát.
6

Nem fog menni a

ppshungary · 2005. Már. 8. (K), 20.43
Nem fog menni a header(location:script.php), ha van kiíratás előtte!!!
Az a lényeg hogy a programon belül legfelül legyen a header();
Pontosabban szólva SEMMILYEN a kliensnek küldött kimenet ne legyen előtte, még az include()-al beépített állományokban sem!!!!!

Ha nem lehet így megoldani, ami a program struktúrális hibájára utal, akkor javaslom tetézd még egy oltári primitív megoldással:


case "admin":
echo("<script> document.location.href=\"html/fv_admin_login.php\"; </script>");
break;


Ez egy javascript, és ha ki van kapcsolva a kliens böngészőjébe, akkor nem fog működni... de még mindig jobb, mint az alábbi gondolom ismerős üzenet:
"Cannot add header information - headers already sent by (output .......)"

PPS
3

Nem akar menni sehogy, eddig

Anonymous · 2005. Már. 8. (K), 20.19
Nem akar menni sehogy, eddig próbálkoztam... :((
Tudsz esetleg valami megoldást? a JavaScripten kívül...
5

Ha nem akarsz header()-t

csla · 2005. Már. 8. (K), 20.28
Ha nem akarsz header()-t használni, akkor még annyit tehetsz, hogy a HTML részben a <BODY> tag-be teszel mondjuk egy @ONLOAD_EVENT sztringet, amit az "admin" esetben lecserélsz a 'onload = open(...)' megfelelő szövegre.