Avatar billede mac10 Nybegynder
10. oktober 2007 - 11:56 Der er 11 kommentarer og
1 løsning

setcookie ødelægger min HTTP_REFERER?

Goddag allesammen

Jeg benytter setcookie(...); funktionen i en fil jeg inkluderer på min index. Når jeg på indexen prøver at sætte en $_SERVER['HTTP_REFERER']; ligemeget om i toppen af filen eller i bunden så skriver den "headers already sent by" og referer til include filen, hvor cookien er blevet sat.

Hvordan forhindrer jeg dette?
Avatar billede erikjacobsen Ekspert
10. oktober 2007 - 12:17 #1
Når du bruger setcookie, og andre funktioner der putter ting ind i HTTP-headeren, virker det kun hvis der ikke er skrevet noget ud på siden først. Det kan opnås ved een af to

1) Der skrives ikke noget ud på siden forinden - i dit tilfælde er der sikkert noget på din indexside
2) Allerførst på siden bruges http://php.net/ob_start til at gemme det der skrives.
Avatar billede mac10 Nybegynder
10. oktober 2007 - 13:22 #2
Okay forstår jeg ikke helt. Er det her forkert?

<?php
function callback($buffer)
{
include('minfil.php');
}
ob_start("callback");
?>


alt min html

<?php

ob_end_flush();

$ref = $_SERVER['HTTP_REFERER'];
echo $ref;

?>


?
Avatar billede erikjacobsen Ekspert
10. oktober 2007 - 13:28 #3
Det eneste du behøver allerførst på din side:

<?php
  ob_start();
Avatar billede mac10 Nybegynder
10. oktober 2007 - 13:56 #4
skal den så også have ob_end_flush(); i bunden? og skal det være over $_SERVER['HTTP_REFERER']; eller under?
Avatar billede erikjacobsen Ekspert
10. oktober 2007 - 14:36 #5
Du behøver ikke mere.
Avatar billede olebole Juniormester
10. oktober 2007 - 16:39 #6
<ole>

I stedet for at bruge output-buffering (ob_start og ob_flush) - som er en djævel, der spiser blodige, ophedede RAM-blokke til morgenmad - bør du holde en god kodeskik, der gør, at du sætter alle headers, før du begynder at udskrive noget somhelst.

Hold al PHP som funktioner, der spytter HTML ud, i toppen af dokumentet. Skriv så din HTML med de nødvendige funktionskald, der indsætter din dynamiske markup-kode. Så skal du _virkelig_ tage dig sammen for at komme til at lave en header-fejl  ;o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
10. oktober 2007 - 20:52 #7
Man skal også virkelig tage sig sammen for at finde en bog eller tutorial, der viser hvordan man gør. Ikke en gang på den der "den gode koder"-side jeg faldt over en gang...

Min 1)-er er egentlig hvad Ole skriver om
Min 2)-er handler mest om at sætte et lyserødt Disney-plaster på et åbent lårbensbrud. Men det er da bedre end ingenting ;)
Avatar billede playr Nybegynder
12. oktober 2007 - 18:13 #8
Tak for dette begge to. Det virker! lav venligst svar :o)
Avatar billede playr Nybegynder
12. oktober 2007 - 18:13 #9
forkert spm. sorry mac10 lol

men tak alligevel. skulle også bruge det der til mine referals :o)
Avatar billede mac10 Nybegynder
02. november 2007 - 13:56 #10
Det okay playr

Jeg kan dog ikke få det til at virke.

Lav venligst svar alligevel allesammen
Avatar billede erikjacobsen Ekspert
02. november 2007 - 14:45 #11
Ingen point til mig, tak.
Avatar billede mac10 Nybegynder
10. november 2010 - 12:35 #12
luk
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

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