Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 17:07 Der er 23 kommentarer og
2 løsninger

Header() og setcookie()

Jeg er ved at lave et script, som skal gemme en cookie, og derefter sende brugeren videre til næste side. Jeg har prøvet dette:

if($test)
{
setcookie("status","ok",time()+86400);
header(location: side2.php3");
}

Men det virker ikke, den vil ikke gemme cookien. Derefter har jeg prøvet at fjerne header-linien, så virker det.
Det ser ud til at de to kommandoer bare ikke dur sammen. Nogen forslag ?
Avatar billede Slettet bruger
24. april 2000 - 17:15 #1
Jeg har også samme problem...
Så jeg lytter med...

Men din redirect er ihvertfald forkert!
Sådan:

header("Location: side2.php3");
Avatar billede Slettet bruger
24. april 2000 - 17:17 #2
Har du prøvet at bytte om på dem?
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 17:30 #3
Ja, men selvom de er ombyttede er den ikke glad for det!
Avatar billede Slettet bruger
24. april 2000 - 17:36 #4
Jeg anbefaler dette spørgsmål til nogle andre PHP "nerdz"
og så kan vi måske få hurtigere svar!
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 17:38 #5
Det ville bor være dæjli ;-)
Avatar billede lojmann Nybegynder
24. april 2000 - 17:59 #6
setcookie("coo_email","$email",time()+86400);
setcookie("coo_ID","$ID",time()+86400);
header("Location: step2.php");

virker hos mig...;-)
Avatar billede Slettet bruger
24. april 2000 - 18:03 #7
åbenbart ikke hos os!
Avatar billede lojmann Nybegynder
24. april 2000 - 18:05 #8
Kommer den slet ikke med nogle fejl???
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 18:06 #9
Nej, den laver bare ikke en cookie ;-(
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:08 #10
Der må ikke laves noget HTML overhovedet i filen før setcookie og
header - ikke engang en tom linie. Det er fordi både cookies og det
der står i headeren skal komme før eventuel HTML. Altså: Det absolut
første på filen skal være en PHP-start-fidus, i hvilken der ikke bliver
sagt echo, print deslige til output:

Linie 1: <?
Linie ?:  .....
Linie ?:  setcookie(...);
Linie ?:  header(...);
Linie ?: ?>

Er det derfor ?
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:16 #11
Åbenbart ikke  -  hehe. Smid hele koden her så vi kan se den!
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 18:17 #12
Jeg har nu prøvet, at lave det sådan:

<?
setcookie("status","ok",time()+86400);

if($test)
{
  // Funktion //
  header("location: side2.php3");
  exit();
}
?>

Men det virker heller ikke!

Hvis jeg fjernet header() i bunden, vil den godt lave cooki'en
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:27 #13
Nå, men det er måske hele koden. Du skal såmænd bare skrive "Location"
med stor L.
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 18:27 #14
Okai... Jeg har lige erfaret, at det rent faktisk virker!

Problemet er bare, at setcookie() skal være inde i if()-kommandoen, og det er det der ikke virker.

Kan man ikke lave noget andet ? Få brugeren sendt videre på en anden måde, end header("location: "); ?
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 18:33 #15
Det virker heller ikek med stort L i "location".

Erik Jacobsen: Jeg vil gerne have setcookie og header("location:") ind i en if().

Det virker, hvis jeg placerer setcookie udenfor if(), men det er ikke det der er pointen!
Den skal først gemme en cookie, og så sende videre til næste side.
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:43 #16
Dette virker altså hos mig. Prøv http://www.hasselager.net/bum.php

<?
    setcookie("status2","ok",time()+86400);

    if ($test)  {
        header("Location: side2.php3");
        exit();
    }
?>
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 18:46 #17
Ja... Men det skulle gerne se sådan her ud:

<?
    if ($test) 
    {
        setcookie("status2","ok",time()+86400);
        header("Location: side2.php3");
        exit();
    }
?>

Den skal nemmelig først lave cookie'en, når den bliver bedt om det.
Avatar billede theill Nybegynder
24. april 2000 - 18:49 #18
Jeg har haft praecis det samme problem, og saa vidt jeg har forstaaet er der ikke er nogen rigtig loesning paa. Det skulle efter sigende virker bedre (nogle gange?) paa Netscape browsere, men jeg har testet det med NN4.01, NN4.7, IE4.01, IE5.0 og IE5.5 og har _stadig_ ikke faaet det loest.

Man kan simpelthen ikke saette en cookie og derefter lave en redirect i PHP3 (faktisk heller ikke i PHP4) :o(

Jeg er blevet noedt til at saette min cookie paa den side, jeg redirecter til ... skodder lidt.

Tjek http://www.php.net/manual/function.setcookie.php3 for mere information.
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:49 #19
Jeg få en fin cookie:

  www.hasselager.net    FALSE        FALSE    956681370    status3    ok

med

<?
if($test){
  setcookie("status3","ok",time()+86400);
  header("Location: side2.php3");
  exit();
}
?>


Prøv selv - samme adresse.
Avatar billede erikjacobsen Ekspert
24. april 2000 - 18:55 #20
Nå, ok theill, det er fordi jeg bruger en ordentlig browser, Netscape 4.5, og
ikke en skodbrowser som IE. Hvis det er meningen det skal virke i IE, frafalder
jeg og anbefaler theills løsning.
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 19:18 #21
Okai... Altså kan dette ikke lade sig gøre!
Derfor er der ingen der får de 60 point's :(

Jeg vil nu ikke helt holde med dig i, at IE er en skodbrowser...!
Avatar billede the-gnu.dk Nybegynder
24. april 2000 - 19:20 #22
Ok, jeg vil gå så langt som at i skal have 30 points hver.

Erik Jacobsen skal have dem, fordi hans forslag (sikkert) virker i NN.
Theill fordi han kom med løsningen, som altså er at det ikke kan lade sig gøre.
Avatar billede erikjacobsen Ekspert
24. april 2000 - 19:24 #23
Jamen lad os holde os fra den sædvanlige "religionskrig", men blot læne
os tilbage, lukke øjnene, og forestille os verden, som den ville have set ud,
hvis Microsoft havde brugt flere kræfter på at overholde standarderne, end
på at udtænke smarte (indrømmet) finurligheder, der ikke er kompatible med
andre browsere. Drømme, drømme, drømme. Tilbage til virkeligheden. ;-)

Øh, mange tak iøvrigt!
Avatar billede theill Nybegynder
24. april 2000 - 20:28 #24
tak 'the-gnu.dk'.

Mht browserkrigen (som efterhaanden maa siges at vaere blevet vundet af MS - hvis man kigger paa en hvilken som helst browserstatistik), vil jeg ikke komme med fordele/ulemper mellem de to; bare sige ... hvilken browser har brug for at lave et reload af en side, hvis man resizer vinduet, tolker 50 pixels i et frameset som mellem 54 og 55 pixels, undgaar at farve en celle i en tabel, hvis der ikke er min. eet tegn i den, lader sig forvirre af tabeller i tabeller, hvis een af dem har et baggrundsbillede, etc ;o)

Der _er_ en logisk grund til, at IE er foretrukket af web designere.
Avatar billede topsite Nybegynder
02. juni 2002 - 20:10 #25
Har haft samme problem.. Så vidt jeg er kommet frem til er det Windows servere der har problemer med en Header under en SetCookie.

Jeg har brugt dette stykke kode til at løse problemet.
<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=lala.php">

Eksempel:


<?

  $bruger = $user;
  $kodeord = $pass;

setcookie("brugernavnet", $bruger, time()+3024000);
setcookie("kodeordet", $kodeord, time()+3024000);
//header ("Location: community.php");
  ?>
<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=community.php">
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