Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:28 Der er 26 kommentarer og
2 løsninger

Setcookie efter header!

Jeg har en side med en masse kodeværk, hvor jeg "længere nede på siden" vil sætte nogle cookies ved hjælp af setcookie.
Men jeg mener ikke man kan sætte cookies efter man evt. har haft nogle headers, men jeg mener også at have set måde hvorpå det var muligt!

Det jeg søger er en måde at sætte cookies på, uden det afhænger hvor i min kode jeg gør det :-)

Håber I forstår!

PS. Løsningen skal selvfølgelig være lige så stabil, god og sikker som ellers!
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:32 #1
Start med første linie:
  <? ob_start(): ?>

og prøv derefter evt at lave din side om, så du først har alle beregninger,
og derefter din HTML. Man skal lige vænne sig til det, men det er meget
mere overskueligt.
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:32 #2
<? ob_start(); ?>
Avatar billede Slettet bruger
09. juli 2003 - 12:34 #3
Well, der er ikke noget problem i at kalde setcookie() efter et kald af header()
Problemet kan være hvis du har lavet noget output inden du kalder setcookie().
I det tilfælde er mit råd at du bør omstrukturere din kode... er det forbesværligt eller hvad ved jeg kan du bruge output buffering - prøv at kig på
http://www.reginscorner.dk/index.php/Scripts?Headers+h%E5ndtering
Der kan du se hvordan output buffering fungerer
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:35 #4
Er det kun HTML som ikke må komme før?
Eller er der nogen PHP-koder som heller ikke må komme før?

Jeg havde forstået det så jeg f.eks. ikke kunne skrive:
header("location:index.php");
før jeg satte en cookie, altså pga. headeren!
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:36 #5
Et eksempel på output???
Avatar billede Slettet bruger
09. juli 2003 - 12:38 #6
header("location:index.php"); <--- vel dette sender jo brugeren afsted til en helt anden side og afslutter scriptet.
Så alt hvad der kommer efter det kald er i realiteten irelevant!
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:39 #7
Jeg har kun headeren header("location:index.php"); i en if-sætning, så det er kun hvis der sker en fejl brugeren sendes videre, ellers kommer man videre til setcookie.

Det eneste jeg har ovenover setcookie er if-sætningerne og noget html!
Avatar billede Slettet bruger
09. juli 2003 - 12:43 #8
brevkasserne>>Well, jeg tror vi har svaret på dit spørgsmål... så må du bare sidde og pille ved det indtil det passer!
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:45 #9
Jeg kan sagtens placere min PHP-kode over HTML-koderne!
Men jeg kan ikke rigtig gøre noget ved at setcookie-funktionen kommer EFTER if-sætningerne med if-sætningerne. For cookies'ne skal kun sætte hvis den "består" if-sætningerne!

Nogen der kan forstå mit problem?
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:46 #10
Og evt. hjælpe med det?
Og er det ligemeget om der findes noget HTML over min setcookie?
Avatar billede Slettet bruger
09. juli 2003 - 12:46 #11
JA.... du har ikke noget problem når du har flyttet HTML koderne!
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:46 #12
Ja, som jeg læser det nu, er det problemløst. Måske lige bortset fra hvis
du kører på en (gammel?) IIS, som kan have svært ved at overskue en
redirect samtidig med en cookie.
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:47 #13
Og hvordan kan det være at det fungerer lokalt, men ikke når jeg uploader det til min webhotel hos wannafind.dk?
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:47 #14
Hvordan fungerer det ikke?
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:48 #15
Det gør altså intet hvis jeg kun har headerne og de kun bliver aktiveret hvis if-sætningen ikke bliver opfyldt?
Og så at jeg placere al HTML kode under?

Og hvorfor er det at det hele fungerer lokalt, men ikke efter uploading til wannafind.dk?

(Det skulle vist være det hele)! :-)
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:51 #16
Jeg kan sagtens sætte cookies'ne på min lokale Apache server med PHP og MySQL, selvom jeg har sendt headers o. lign., og har HTML-kode ovenover???

HTML-koden kommer forresten også kun frem hvis en anden if-sætning er opfyldt!
Grunden til at jeg har HTML ovenover er fordi jeg har en side der hedder index.php og i den findes der if-sætninger med
if ($_GET['mode'] == "") {

} elseif $_GET['mode'] == "check") {

og det er i "check" jeg har mine setcookies!

Håber nogen nu kan følge mig mere!
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 12:54 #17
Hvordan fungerer det ikke?
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 12:57 #18
Når jeg uploader kommer meddelsen, headers already sent...
Det gør den ikke lokalt, der fungerer det bare!
Spøjst nok!
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:00 #19
Start med første linie:
<? ob_start(); ?>
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 13:02 #20
Skal det være i starten af if-sætningen eller HELT i starten af siden?
Og skal den allersidste linje så være ob_flush();???
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 13:02 #21
Og sænker det hastigheden på siden eller er det bare en lige så god alternativ løsning?
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:04 #22
HELT i starten af siden - det er alt. Det gør det muligvis endda hurtigere ;))
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 13:05 #23
OK, jeg siger mange tak for alle svar!
Jeg fordeler pointene :-)

Takker!!!
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 13:08 #24
Skulle jeg sætte <?php ob_flush(); ?> i bunden af siden???
Jeg spørger mest fordi at linket jeg fik siger jeg skal, men min editor (editplus) kan ikke genkende ob_flush(); den farver ikke koden som med ob_start();
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:09 #25
det behøv's ik'
Avatar billede brevkasserne Nybegynder
09. juli 2003 - 13:10 #26
(undskyld min stædighed)

Behøves det ikke??? Er det bedst hvis jeg gør det eller er det fuldkommen ligemeget :-D
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:12 #27
fuldkommen ligemeget

Men "forklaringen" er at din PHP har sat outputbuffer til (i sin pnp.ini), mens
dit webhotel ikke har.
Avatar billede erikjacobsen Ekspert
09. juli 2003 - 13:12 #28
pnp? Hvad mon jeg mener med det ;)
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