Avatar billede minijensen1 Nybegynder
08. april 2002 - 18:48 Der er 24 kommentarer og
1 løsning

Cookie

jeg er ved at lave et autologin men kan ikke helt få det til at virke ..

jeg sætter cookien med
  setCookie("autologin", $nick, time() + 3600 * 24 * 365);

og prøver at læse den igen med
if (IsSet($HTTP_COOKIE_VARS["autologin"])) {
  $nick = $HTTP_COOKIE_VARS["autologin"];
}

men den får aldrig sat cookien .. jeg har tjekket om cookien er der med phpinfo(); ..
men det værste er at når jeg laver disse to filer så virker det ..

setcookie.php
-------------
$nick = "test";
setCookie("autologin", $nick, time() + 3600 * 24 * 365);

getcookie.php
-------------
if (IsSet($HTTP_COOKIE_VARS["autologin"])) {
  echo("autologin er aktiveret");
} else {
  echo("autologin er deaktiveret");
}


hvad er det lige jeg gør galt ..? i må sige til hvis i skal bruge mere kode ...
Avatar billede fangel Nybegynder
08. april 2002 - 18:53 #1
jeg tror jeg ved hvorfor, men ik' hvordan man kommer af med det...

cookie() er ligsom header() hvis der er noget output før tag'et, så laver den fejl, cookie() skriver bare ikke fejlen...

har du evt en header() efter dit cookie() tag, det er nok derfor...

Dea_PG
Avatar billede erikjacobsen Ekspert
08. april 2002 - 18:57 #2
Du kan ikke aflæse din cookie på samme side som du sætter den -
hvis ellers det er hvad du mener.
Avatar billede minijensen1 Nybegynder
08. april 2002 - 19:01 #3
der kommer ikke noget output før tagget ..
jeg har en lille stump kode som tjekker at man har mærket "autologin" af når man logger ind .. jeg skrev echo("Autologin er sat til"); istedet for setCookie("autologin", $nick, time() + 3600 * 24 * 365); og det skrev den når jeg kørte den kode ..

koden til at tjekke cookien har jeg i login.php til når folk skal til at logge ind og koden til at sætte den har jeg i validatelogin.php, så det er ikke fordi det er på samme side ..

men jeg har efter min setcookie() en header("location: nyside.php"); .. er det der min fejl ligger ..?
Avatar billede fangel Nybegynder
08. april 2002 - 19:04 #4
prøv at byt den ud med

      ?>
      <html>
      <head>
      <meta http-equiv="refresh" content="0;URL=den_side_du_skal_til.html">
      </head>
      <body>Vent...</body>
      </html>
      <?php

og se om det virker... det gjorde det for mig...

Dea_PG
Avatar billede erikjacobsen Ekspert
08. april 2002 - 19:04 #5
Nu kører du vel ikke PHP på en Windows-box med IIS - vel ?
Avatar billede minijensen1 Nybegynder
08. april 2002 - 19:06 #6
ehm .. jow erik .. det gør jeg .. det er ikke godt eller hvad ..?
Avatar billede fangel Nybegynder
08. april 2002 - 19:08 #7
hmm... jeg køre Apache på Win XP, virker fint...
Avatar billede erikjacobsen Ekspert
08. april 2002 - 19:10 #8
Nej, det er ikke godt, slet ikke godt. Microsoft indrømmer gerne
at de ikke kan finde ud at sætte en cookie og lave en redirection
i samme HTTP-header.

Deas workaround er én mulighed.

Jeg ved ikke om der er pathces til IIS der kan klare sagerne, det
interesserer mig li'som ik'
Avatar billede minijensen1 Nybegynder
08. april 2002 - 19:14 #9
dåmme M$ ..
så må jeg prøve med det andet .. men synes ikke helt at jeg kan få det til at virke ..
min validatelogin.php ser sådan ud nu:

<?
  include("settings.php");

  if (empty($name) || empty($kode)) {
    Header("Location: ".info(1)."/login.php");
  } else {
    $res = sqlexec("SELECT nick,pass FROM users WHERE (nick = \"".$name."\" && aktivkode = \"\")");
    $row = mysql_fetch_array($res);
    if ($row["pass"] == $kode) {
      $nick = $row["nick"];
      if (!empty($autologin)) {
        setCookie("autologin", $nick, time() + 3600 * 24 * 365);
      }
      $CookieUser = $nick;
      session_set_cookie_params("CookieUser", 600);
      session_register("CookieUser");
      sqlexec("UPDATE users SET lastseen = NOW() WHERE (nick = \"".$nick."\");");
      sqlexec("INSERT INTO loginlog (dato,ip,bruger) VALUES (NOW(), \"".$REMOTE_ADDR."\", \"".$nick."\");");
      ?>
      <html>
      <head>
      <meta http-equiv="refresh" content="0;URL=<?=info(1);?>">
      </head>
      <body>Logger ind .. et øjeblik ..</body>
      </html>
      <?
    } else {
      Header("Location: ".info(1)."/login.php?err=1");
    }
  }
?>

men den skriver stadig ikke cookien ..
Avatar billede minijensen1 Nybegynder
08. april 2002 - 20:54 #10
jeg fandt ud af hvordan jeg gjorde .. jeg brugte header til at redirecte til default.php men så satte jeg bare ?auto=true på efter og så tjekkede i default om cookien skulle skrives og det ser ud til at virke :-)

tak for hjælpen ..
Avatar billede fangel Nybegynder
08. april 2002 - 21:42 #11
var så lidt...
Avatar billede minijensen1 Nybegynder
08. april 2002 - 21:43 #12
nogen af jer som vil have point ..? eller skal jeg bare selv tage dem ..?
Avatar billede erikjacobsen Ekspert
08. april 2002 - 21:47 #13
Giv dem til Microsoft som tak for mange undeholdende timer
med deres produkter.
Avatar billede minijensen1 Nybegynder
08. april 2002 - 22:38 #14
hehe .. tror at jeg vil sende dem en check på 30 point til eksperten så :-S ..

takker endnu en gang for hjælpen .. og da også for pointene :-)
Avatar billede fangel Nybegynder
09. april 2002 - 13:32 #15
tænk hvis man havde Win 98 eller Win Me, de kan ikke køre Apache, så skal man jo bruge IIS eller PWS... APache er nu det bedste...

Dea_PG
Avatar billede minijensen1 Nybegynder
09. april 2002 - 15:09 #16
jeg har da kørt Apache på en Win98 ..?!? ..
tjaah .. jeg ville også have brugt Apache hvis ikke det var fordi jeg har nogle systemmer jeg engang lavede i ASP .. startede i ASP fordi jeg synes at det så nemmest ud .. men er efterhånden hoppet over til PHP ..
Avatar billede fangel Nybegynder
09. april 2002 - 15:54 #17
det er ik' så dumt enda'...

jeg trorede ikke Apache kunne køre på 98, eftersom det ikke kan på Me...
Avatar billede erikjacobsen Ekspert
09. april 2002 - 19:20 #18
Kan apache ikke køre på Windows ME ?? Er det virkelig korrekt?
Det har nu mest bare fordi jeg er nysgerrig - ikke ford i jeg nogensinde
ville købe WME. Men jeg har da haft Apache kørende på W95. Eneste
"problem" var en synlig dos-prompt.
Avatar billede minijensen1 Nybegynder
09. april 2002 - 19:31 #19
det er også det eneste problem jeg havde med Apache på W98 .. men der hentede jeg et lille program som flyttede den synlige dosprompt ned i systray ..
Avatar billede fangel Nybegynder
09. april 2002 - 19:32 #20
hmm... kender en der har Me, han kan ikke få det til at virker...

Apache kræver jo, for at køre ordenligt, muligheden for "services" og det er kun NT, 2000 og XP Pro der har det...
Avatar billede erikjacobsen Ekspert
09. april 2002 - 19:34 #21
Ja, ok, som service havde jeg den da ikke kørende under W95, men
til sjov (og almindelig offline scriptudvikling) er det da fint nok at
starte den selv. Men det er nok en drastisk konklusion, at når du
kender én, der ikke kan få det til at virke under WME, så kan det
ikke lade sig gøre.
Avatar billede fangel Nybegynder
09. april 2002 - 19:48 #22
hmm... der står i Apache's Readme fil at man ikke kan...

---apache's WIN-README.txt---
WARNING
  -------

  Apache should never be used as a production server under any
  consumer operating system such as Windows 95, 98, or ME (Millennium
  Edition).  Only Windows NT 4.0 or 2000 should be considered, and only
  with appropriate NTFS file system and user security administration.
  Apache runs on these consumer Windows environments only to
  provide test, development or trusted intranet server platforms.

  Apache on Win32 should be considered initial-release quality code.....
-------

men når jeg læser det igen står der:

Apache skal ALDRIG kære som produktions server (altså til prof brug) op 95, 98 og Me...

Dea_PG
Avatar billede fangel Nybegynder
09. april 2002 - 19:48 #23
hov, kære = køre
Avatar billede erikjacobsen Ekspert
09. april 2002 - 19:53 #24
"at man ikke kan" - der står da at den kører, sådan indirekte.

Men selvfølgelig ikke som "rigtig" webserver på nettet. For sjov,
til udvikling, der er den da ganske god.
Avatar billede fangel Nybegynder
09. april 2002 - 19:56 #25
ja, det har du ret i...
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