Avatar billede woowii Nybegynder
21. december 2006 - 12:03 Der er 12 kommentarer og
1 løsning

ob_start & ob_end_clean

Hej,

Jeg kiggede netop på disse to funktioner og efter at har været nød til at redirecte til en seperat side for at sætte cookies og sessions før virkede det som en løsning på det "problem". Men efter lidt læsning af tidligere tråde her på eksperten kan jeg se at det ikke er en metode som folk foretrækker, i hvert fald betragter folk det som "den lette vej" og istedet mener at man skal kode det ordentligt.

Derfor kunne jeg godt tænke mig at blive lidt klogere. Jeg har bygget min side op som mange andre, jeg har en index fil som inkludere alle sider alt efter hvad den får besked på - et kort overblik over den vil altså være noget i stil med:

include filer
<head>
</head>
<body>
include menu
include $page
</body>

Altså en meget "standard" opbygning, så vidt jeg ved. En af mine include filer i toppen er en fil som tjekker for session, om brugeren er logget ind eller ej - så allerede der bliver der sendt en header (hvis jeg da ikke har misforstået det hele). Hvordan skulle jeg ændre strukturen så det i $page ville være muligt at bruge en header? :)
Avatar billede sw_red_6 Nybegynder
21. december 2006 - 12:07 #1
det vil du under ingen omstændigheder kunne eftersom ethvert output til browseren vil resultere i den samme fejl, hvilket vil sige at <head></head><body>include menu som står over include $page vil lave samme fejl
Avatar billede woowii Nybegynder
21. december 2006 - 14:52 #2
Så det du siger er at jeg skal bruge ob_start og ob_end_clean?
Avatar billede sw_red_6 Nybegynder
21. december 2006 - 14:54 #3
det kommer jo så an på hvad du skal lave i $page som kræver headere
Avatar billede woowii Nybegynder
21. december 2006 - 14:58 #4
Det kan som sagt være cookies og sessions der skal sættes - og redirects (som jeg hidtil har klaret vha. meta tags som også virker meget godt, det ville bare være lettere med en header).
Avatar billede olebole Juniormester
21. december 2006 - 15:03 #5
<ole>

Du skal bare strukturere din kode ordentligt - så kan du sætte alle de headers, du vil. Hvis du sørger for at holde din PHP- og HTML-kode adskilt, får du ingen fejl, når du sætter en header ... og så har den fremgangsmåde bunker af andre fordele  ;o)

Output-buffering (brug af ob_start og ob_end_clean) performer rigtig skidt, da dokumentet jo gemmes i serverens hukommelse. Det bør du holde dig fra og i stedet skrive god kod  =)

/mvh
</bole>
Avatar billede woowii Nybegynder
21. december 2006 - 15:14 #6
Men hvordan skulle det foregå hvis jeg gør som skrevet over? Eller rettere, hvordan skulle jeg skrive det om så det er muligt? ;)
Avatar billede olebole Juniormester
21. december 2006 - 15:22 #7
Jeg har ingen anelse om, hvad der foregår i dine filer, så derfor kan jeg heller ikke fortælle dig, hvordan de skal struktureres. Det eneste, jeg kan sige, er, at du skal ikke gøre, som du skitserer ovenfor - og heller ikke bruge output-buffering  =)
Avatar billede woowii Nybegynder
21. december 2006 - 16:29 #8
Nej det er selvfølgelig rigtigt nok, jeg kan bare ikke se nogen måde at komme uden om det på lige umildbart - nok fordi jeg altid har lavet det som skrevet ovenover. Har du eventuelt link til en guide el.lign. som beskriver "god kode" eller kommer med hints dertil? :)
Avatar billede woowii Nybegynder
21. december 2006 - 16:40 #9
Mit problem er nok at jeg er lidt "låst" på idéen med at have diverse includes i toppen, en menu inkluderet og så en include alt efter hvad side brugeren nu skal se - som skrevet over. Jeg skal nok bare have en ledetråd eller sådan noget for at komme videre, men lige pt. er jeg altså ret tom for idéer mht. opbygning så jeg undgår "header already sent" uden brug af buffer.
Avatar billede olebole Juniormester
22. december 2006 - 11:17 #10
Du skal blot sørge for, alle headers er sendt, inden du inkluderer dokumenter, der skriver noget ud til browseren. Du kan jo sagtens inkludere dokumenter, der indholder funktioner, som - når disse senere bliver kaldt - udskriver HTML  :)
Avatar billede woowii Nybegynder
22. december 2006 - 14:48 #11
Ja, det tror jeg at jeg er med på - der er heller ikke noget i de includes jeg bruger i toppen af siden som udskriver noget, det er blot, som du siger, funktioner og variabler.

Mit problem kommer når jeg på den side der bliver inkluderet efter brugerens valg skal sætte en session eller lave en header med redirect f.eks. En måde at lave dette på kunne f.eks. være at gøre så disse sider der hentes efter brugerens valg hentes i toppen ligesom de andre includes og indholdet så bliver gemt i en PHP variable og udskrevet af index.php længere nede på siden - eller ville det ikke virke/være dumt? :)


Du må undskylde hvis jeg spørger for meget fremfor at prøve selv, men jeg vil (for en gangs skyld) gerne prøve at lave det ordentlig - så jeg vil gerne være sikker på at "idéen" er god før jeg bruger den. Der er jo mange ting som virker fint, men som ikke er specielt gode f.eks. pga. server belastning. :)
Avatar billede woowii Nybegynder
27. december 2006 - 19:59 #12
Er det en god eller dårlig idé at gemme alt output i en variable? =)
Avatar billede woowii Nybegynder
08. september 2007 - 20:15 #13
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging