Kasper Johansen wrote:
> Er det virkelig umuligt at redirecte hvis headers er sat?
Så vidt jeg ved, ja.
> I så fald, har jeg valgt det optimale alternativ?
Jeg gætter på, at du oplever problemet, fordi du blander HTML og PHP sammen
på en måde så den kode, der forårsager redirectet, står et stykke nede på på
siden. Så vidt jeg kan se har du følgende alternativer:
· Bruge output buffering
Ganske kort betyder det, at der ikke sendes noget kode til klienten, før
siden er færdiggenereret. Hvis du slår det til, kan du godt redirecte vha.
headers midt i al din HTML.
Det er, så vidt jeg kan se, måden, hvor du lettest kan benytte serverside
redirects uden at skulle ændre ret meget ved din kode. Du kan læse mere om
det i manualen (
http://dk2.php.net/ref.outcontrol) eller tjecke en tutorial
ud (
http://www.devshed.com/Server_Side/PHP/OutputBuffering/print_html)
· Bruge templates
Her adskiller du såvidt muligt PHP og HTML i to forskellige dele - ofte to
forskellige filer. I din PHP kode som kan består af databasekald,
databehandling etc. sender du nogle værdier videre til din template kode. En
template kan ganske kort beskrives som HTML tilsat en sjat PHP
kontrolstrukturer (if-else, for etc.) og nogle steder (variable), hvor
værdierne sættes ind. Da selve siden som oftest bliver generet til sidst,
står det dig frit for at lave redirects før. Efter min mening er det den
"pæneste" løsning, men det kræver nok, at du strukturerer al din kode om.
Der findes mange forskellige template-systemer i PHP. De to, jeg har stødt
på, som jeg synes bedst om, er
- Smarty (
http://smarty.php.net/): kan en masse, og måske også for meget
- Savant (
http://phpsavant.com/): KISS
Der er sikkert flere muligheder, men de andre i gruppen skal jo også have
noget at lave : ).
--
Med venlig hilsen / Regards
Kasper Garnæs
http://kasper.garnaes.dk