Skrevs ursprungligen av Adrian B
Jag är inte säker på att jag förstått ditt problem helt rätt, men om du ska skicka en header-location så måste det vara det allra första du skriver ut i din kod, du får inte ens skicka ett mellanslag till användaren före det.
Förövrigt är SSI, Server Side Includes, något helt annat.
Precis, du förstod inte mitt problem. headers måste skickas innan output till användaren sker men det ärinte samma sak som att det måste vara det allra första man skriver i sin kod (misstänker att du vet det men formulerade dig otydligt).
SSI (Server Side Includes) antog jag var när jag i min index.php inkluderade filer (vilket sker på server-sidan såklart).
Skrevs ursprungligen av Gabriel Falkenberg
Du kan nog använda output-buffering för att göra det du vill. Kolla på följande fnktioner:
ob_start();
ob_end_flush();
De går att läsa om på:
http://se.php.net/manual/en/ref.outcontrol.php
Annars är templates ett smidigt sätt att göra det du vill. Ingen sida förutom den man går till skickar html till användaren, de inkluderade sidorna bara returnerar text till sidan som inkluderar dem så att sidan som inkluderar alltsammans kan välja när saker och ting ska skrivas ut vilket förslagsvis sker absolut sist så att du har möjlighet att göra det du vill dvs. vidarebefodra användare med header('location: annan_sida.html');
Tackar. Tror ocså att det kan vara lösningen. Har suttit och läst hela morgonen om det (sitter på jobbet) så det blir till att prova när jag kommer hem.
Det är ju en template-lösning jag kör. Bara det att filerna som inkluderas inte är vanlig text utan det är dynamiska sidor(mer php). Till exempel så laddas menyn på sidan in INNAN jag laddar in det sökta dokumentet...
Tex skulle
index.php?goto=logout
leda till att man i index.php skriver ut html_header() sen så inkluderar man menyn och i samma veva skrivs menyn ut och slutligen inkluderas filen logout(.php) som känner av vem man är inloggad som och uppdaterar databasen och nollställer lite värden (vilket innebär att en annan slags meny ska skrivas ut eftersom man inte längre är inloggad).
require("meny.php");
html_header();
meny(); //funtionen ligger i det inkluderade meny.php
// meny() skriver ut en meny som är olika för vem man är inloggad som
// och ja, menyn måste srivas ut först
require($_GET['goto']); // tex require("logout.php") som resulterar i att en utloggning ser.
html_footer();
Exemplet ovan resulterar i att menyn för en inloggad person skrivs ut och sen loggas man ut.
Självklart ska man loggas ut först och sen skrivs menyn ut.
Jag ska som sagt prova ob_start() när jag kommer hem. Hoppas det löser mitt problem.
Löser ju defenitivt problemet med header("Location: ")
vilket får mig att tänka på att mitt problem går att lösa genom att i logout.php och login.php avsluta med just en header("Location:").
Tror som sagt output buffer control grejjar biffen men är det någon som har andra förslag?