Avatar billede mlykke Nybegynder
22. november 2000 - 21:04 Der er 13 kommentarer og
1 løsning

Problem med cookies

Jeg oplever et underligt problem med cookies som jeg håber nogen kan kaste lidt lys over.

Koden er følgende:

Setcookie(\"sbox\", \"True\", time()+1200);
header(\"location: default.php\");

Selve default.php filen indholder følgende kode:

echo $HTTP_COOKIE_VARS[\"sbox\"];


Nu er spørgsmålet så hvorfor den ikke skriver True i browseren når man bliver sendt videre til default.php?
Browseren understøtter cookies og det er slået til.
Jeg har prøvet at kigge i cookie biblioteket på maskinen og cookien bliver slet ikke skrevet.
Men hvis jeg derimod fjerner den linie der hedder header(\"location.... osv så der kun er setcookie linien tilbage så skriver den fint cookien.
Hvad poekker sker der lige her?

Jeg kører PHP 4.03 som CGI på en IIS server.
Avatar billede razor Nybegynder
22. november 2000 - 21:20 #1
prøv lige at køre dem omvendt..

header(\"location: default.php\");
Setcookie(\"sbox\", \"True\", time()+1200);

:o)
Avatar billede mlykke Nybegynder
22. november 2000 - 21:23 #2
Det hjælper ikke.
I dit eksempel redirecter du jo mig før jeg kan få skrevet cookien.
Avatar billede erikjacobsen Ekspert
22. november 2000 - 21:36 #3
Der går rygter om at lige netop en IIS-server ikke kan klare både at sætte en cookie og lave
en redirection i samme hug (men at Microsoft vistnok har et hack til netop PHP). Men prøv at
lede efter sådan noget her på eksperten.

Og nej: siden bliver ikke redirected i det øjeblik du siger
  header(\"location: default.php\");
det sker først når hele siden er \"kørt\" færdig. Så rækkefølgen har ikke noget at sige hvad
det angår.
Avatar billede mlykke Nybegynder
22. november 2000 - 21:40 #4
Ahh...takker.
Men det er sku da mildest talt noget lort.
Hvad gør man så? Du vil da ikke bilde mig ind at man så ikke kan bruge PHP til noget der er relateret til cookies fordi det er en NT server?
Det virker da underligt.
Avatar billede erikjacobsen Ekspert
22. november 2000 - 22:04 #5
Ja, men det er jo også Microsoft. Jeg tror nok deres løsning havde noget at gøre med
at få PHP til at køre med \"Non Parsable Headers\" (nph) - prøv også at lede efter det.
Men som sagt - det er kun hvis du på samme side laver en redirect. I PHP kunne du måske
overveje at lave en include i stedet for?
Avatar billede mlykke Nybegynder
22. november 2000 - 22:06 #6
En include?? I hvilken sammenhæng skal den lige forståes?

Her er tale om et loginscript som gerne skulle sætte en cookie med div. værdier i, efter et accepteret login. Derefter skal man smides videre til hovedsiden, men stort set alle siderne benytter én eller flere værdier fra den cookie der bliver skrevet.
Avatar billede erikjacobsen Ekspert
22. november 2000 - 22:20 #7
Det er vel noget i retning af at


  SetCookie(\"sbox\",\"true\",....);
  $sbox=\"true\";    // skal være tilgængelig på den inkluderede side - du kan ikke bruge $HTTP_COOKIE_VARS
  include(\'default.php\');
  exit;  // så kommer der ikke mere fra denne side

med lidt helt svarer dette til at redirecte til default.php - bortset fra det der står i adresselinien i browseren.
Du skal nok undlade at komme med noget HTML før disse linier, da de vil forstyrre HTML-en i default.php


Avatar billede erikjacobsen Ekspert
22. november 2000 - 22:21 #8
mon ikke jeg mener: \"med lidt held\"  ?
Avatar billede mlykke Nybegynder
22. november 2000 - 22:23 #9
Jo mon ikke du gør :)
Nå men hvis du skal have pointene så lav lige et svar :)
Avatar billede mlykke Nybegynder
22. november 2000 - 22:24 #10
Dog virker den sidste metod eikke helt...jeg har i de fleste af mine scripts en mode variable som skal afhængig af hvad der skal ske på sidne og det går jo ikke helt at include side.php?mode=something

Så jeg er ligevidt....
Avatar billede erikjacobsen Ekspert
22. november 2000 - 22:26 #11
Med fornøjelse - men virker det? Og kan du bruge det? Det burde også gå lidt
hurtigere for brugeren, for en redirect skal ud og \"vende\" på brugerens maskine, og
lave endnu en forespørgsel. Om der er negative ting, skal jeg ikke lige kunne sige....
Avatar billede mlykke Nybegynder
22. november 2000 - 22:28 #12
Nææ...det virker ikke...men det opdager du om 2 minutter når du får en mail fra eksperten :) Men du har alligevel svaret så pointene skal du nok få.... jeg skal bare have fundet en løsning :)
Avatar billede erikjacobsen Ekspert
22. november 2000 - 22:38 #13
  $mode=\"Something\";
  include(\'side.php\');

man kan godt!
Avatar billede mlykke Nybegynder
22. november 2000 - 22:41 #14
Ahh ja...doh! det tænke jeg ikke lige på...thansk :)) Det må være i ren irritation over at det ikke virker ordentligt med cookies...
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