---
title: "Sessionsvariabler funkar inte"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/95030-sessionsvariabler-funkar-inte"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "nadabalunas"
published: "2004-01-16T17:36:14.000Z"
updated: "2004-01-17T20:10:07.000Z"
replies: 7
views: 223
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/95030-sessionsvariabler-funkar-inte"
---

# Sessionsvariabler funkar inte

## #1 — nadabalunas, 2004-01-16T17:36Z

Jag har ett loginscript som kortfattat ser ut så här:

//SQLkontroll av användarnamn och lösen här.
//Sql-frågan returnerar recordsetet $RecSet

Om användaren gör en lyckad inloggning vill jag sätta ett par sessionsvariabler 
och sen redirecta till användarens hemsida med hjälp av javascript.

```php
 
<?
if(användaren_existerar)
{
   session_start();
   session_register('userid');
   $userid=$RecSet["userid"]
   session_register('email');
   $email=$RecSet["email"]
   
   /*
   Jag har även provat denna variant utan resultat.
   $_SESSION['userid']=$RecSet["userid"];
   $_SESSION['email']=$RecSet["email"];
   */

   <script language="JavaScript">
   <!--
   document.location.href='<?=$_SERVER['DOCUMENT_ROOT']?>/users/index.php';
   //-->
   </script>
}
?>
```

 

Problemet är att när jag försöker att kolla sessionsvariablerna från /users/index.php så är 
$\_SESSION arrayen tom, eller ja nästan.
Variablerna finns när man loopar igenom arrayen, men det finns inga värden till dem.
Ex:

```php
<?
session_start();
while (list ($key, $val) = each ($_SESSION))
{
   echo "$key = $val <br>";
}
?>
```

 
Det som skrivs ut i denna loop är bara userid='' samt email=''.
Men om jag gör om inloggningen igen så finns variablerna där...
Vad har jag gjort för fel?

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

## #2 — Qimen, 2004-01-16T17:40Z

Prova lägg $userid före session_register och sätta session_start överst på sidan.

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

## #3 — nadabalunas, 2004-01-16T20:28Z

Ingen lycka tyvärr..

Jag provade ditt förslag, men med samma resultat...

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

## #4 — Matte, 2004-01-16T21:27Z

Sessionsvariabler sätts ju, så det verkar inte vara något fel på själva sessionshanteringen.

Däremot verkar något strula vid tilldelningen av värde. Har du kollat att du verkligen har något värde i $RecSet ?

Testa något på det här hållet för felsökning:

```php
<?php
if(användaren_existerar)
{
   session_start();
/*
   session_register('userid');
   $userid=$RecSet["userid"]; <-- Här saknades semikolon
   session_register('email');
   $email=$RecSet["email"]; <-- Här saknades semikolon
*/

   echo "<pre>";
   echo "\$Recset: ";
   print_r($RecSet);

   $_SESSION['userid']=$RecSet["userid"];
   $_SESSION['email']=$RecSet["email"];

   echo "\$_SESSION: ";
   print_r($_SESSION);
   echo "</pre>";

   echo "<a href='/users/index.php'>Gå till sida</a>";

   exit;

   <script language="JavaScript">
   <!--
   document.location.href='<?=$_SERVER['DOCUMENT_ROOT']?>/users/index.php';
   //-->
   </script>
}
?>
```

Vad får du för utfall ?

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

## #5 — nadabalunas, 2004-01-17T09:51Z

Svar till Matte:

Att jag glömt semikolon var bara en miss när jag skrev av koden.
Dessa finns i den 'skarpa' versionen.

Med hjälp av den kod du postade så visade det sig att alla variabler finns i recordsettet, samt även är korrekt tilldelade till $\_SESSION.
Däremot när man redirectas till /users/index.php så är alla sessionsvariabler tomma.

Detta verkar vara helskumt...
Kan det ha något med javascriptet att göra?
Eller att man redirectar till en underkatalog där /users/-katalogen finns?

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

## #6 — nadabalunas, 2004-01-17T10:32Z

Kanske har löst problemet...

Jag hade i min loginfunktion skrivit global $\_SESSION.
Detta eftersom jag behöver komma åt $\_SESSION inuti funktionen(duh...).
När jag tog bort den raden så funkade det klockrent!

Vad händer egentligen när man 'global-ar' $\_SESSION?
Sätts den till NULL eller blir den unsettad?

Skumt, men troligtvis löst!

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

## #7 — Matte, 2004-01-17T10:40Z

$\_POST, $\_GET, $\_SESSION m.fl är superglobala och behöver inte globaldeklareras i funktioner.

Däremot tycker jag det är konstigt att det skulle kunna få den effekt du visade på för att du gjorde det.

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

## #8 — nadabalunas, 2004-01-17T20:10Z

Man tackar.

Jag tycker också att det är ganska konstigt, men tusen tack för hjälpen och förklaringen av superglobalisarna!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/95030-sessionsvariabler-funkar-inte
