---
title: "Kakor som inte dör"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16496-kakor-som-inte-dör"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Chavez"
published: "2001-12-27T13:55:00.000Z"
updated: "2001-12-27T19:19:00.000Z"
replies: 4
views: 222
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/16496-kakor-som-inte-dör"
---

# Kakor som inte dör

## #1 — Chavez, 2001-12-27T13:55Z

Trixar lite med ett inloggningssystem som inte vill fungera. Förenklat fungerar det såhär: 

**Inloggning** 

```
//Man har fyllt i forumläret

$result  = mysql_query("SELECT * from users WHERE username='$HTTP_POST_VARS[username]'") or die (mysql_error()); 
$row = mysql_fetch_array($result); 

if ($HTTP_POST_VARS[password] == $row[password]) {

        //Ta från arrayen och plocka ner det i vanliga variabler
        $userid = $row[id];
        $userlevel = $row[userlevel];
        $username = $row[username];
        $time = time();

        //Sätt session variablerna
        $session_userid = $userid;
        $session_userlevel = $userlevel;
        $session_username = $username;
        $session_last_activity = $time;
        
        //Samma variabler, men för kakorna.
        $livstid = time() + (60*60*24); //Ett dygns livstid
        setcookie("cookie_userid", $userid, $livstid);
        setcookie("cookie_userlevel", $userlevel, $livstid);
        setcookie("cookie_username", $username, $livstid);
        setcookie("cookie_last_activity", $time, $livstid);

        header("Location: index.php");
}
```

Så långt fungerar allt väl, både sessionvariablerna och kakorna blir satta som de ska. Sedan har jag filen global.php som inkluderas på varje sida i systemet.

**global.php**

```
session_register("session_userid");
session_register("session_userlevel");
session_register("session_username");
session_register("session_last_activity");
session_register("session_redir");

if (!$HTTP_SESSION_VARS[session_userid]) {
    //Om man stängt webbläsarfönstret så hämtar vi upp det ur kakorna.
    $session_userid = $cookie_userid;
    $session_userlevel = $cookie_userlevel;
    $session_username = $cookie_username;
    $session_last_activity = $cookie_last_activity;
    
}
```

Den är till för att man inte skall bli utloggad så fort som man stänger ner webbläsaren. Nya sessions variabler skapas ur kakorna. Nu till delen där det är något lurt, utloggningen: 

**Utloggning**

```
//Radera ut session variablerna
session_unset();

//Sätt tomma kakor
setcookie("cookie_userid");
unset($cookie_userid);
setcookie("cookie_userlevel");
unset($cookie_userlevel);
setcookie("cookie_username");
unset($cookie_username);
setcookie("cookie_last_activity");
unset($cookie_last_activity);

header("Location: index.php");
```

Det är som sagt här det strular. Kakorna blir inte nollställda, och jag kan inte förstå varför! Och eftersom inte kakorna "dör" så skapas det ju hela tiden nya sessioner i global.php. Varför dör inte kakorna? Där har ni något att bita i! :)

**Psst ..** Kan hända att det finns lite "parse errors" i koden ovan. Men den funkar och köra, när jag föenklade den hit kom det nog med lite fel. Men ni fattar sammanhanget iaf.

Tacksam för hjälp!

Permalänk: https://www.webforum.nu/p/16496

## #2 — Hansen, 2001-12-27T15:18Z

> When deleting a cookie you should assure that the expiration date is in the past, to trigger the removal mechanism in your browser.

```
setcookie ("TestCookie", "", time() - 3600);
```

 <http://www.php.net/manual/en/function.setcookie.php>

Permalänk: https://www.webforum.nu/p/325484

## #3 — Chavez, 2001-12-27T15:39Z

Tänka sig, det ser ut som om det fungerar. Men varför fungerar det inte att bara sätta den? Har jag lärt mig och jag har för mig att det visas i de flesta exempel?

Permalänk: https://www.webforum.nu/p/325485

## #4 — SPiN, 2001-12-27T16:32Z

En fråga bara:

> if (!$HTTP_SESSION_VARS\[session_userid\]) {
> //Om man stängt webbläsarfönstret så hämtar vi upp det ur kakorna.
> $session_userid = $cookie_userid;
> $session_userlevel = $cookie_userlevel;
> $session_username = $cookie_username;
> $session_last_activity = $cookie_last_activity;
>
> }

Är du säker på att det fungerar? $HTTP_SESSION_VARS ( POST, GET & COOKIE för den delen också ) finns ALLTID, dock finns de utan värden. Alltså borde det kanske se ut:

```
if ( $HTTP_SESSION_VARS['lala'] == "" )
```

Så sägs det ivf, men det är ju alltid kul om det funkar ändå. :)

Permalänk: https://www.webforum.nu/p/325486

## #5 — Chavez, 2001-12-27T19:19Z

Jo, det fungerar. Det fungerar inte om man gör på detta viset: 
if ($HTTP_SESSION_VARS) {

Men eftersom jag kör med en specifik variabel: $HTTP_SESSION_VARS\[variabeln\] så finns den ju inte annat än när jag skapar den.

Permalänk: https://www.webforum.nu/p/325487

---

Tråden på webben: https://www.webforum.nu/amne/php/16496-kakor-som-inte-dör
