---
title: "Session mellan funktioner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/40904-session-mellan-funktioner"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "web00132"
published: "2002-04-05T00:21:28.000Z"
updated: "2002-04-08T14:32:00.000Z"
replies: 41
views: 753
page: 1
pages: 3
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/40904-session-mellan-funktioner"
---

# Session mellan funktioner

_Sida 1 av 3._

## #1 — web00132, 2002-04-05T00:21Z

Jag har ett sessionsproblem. På min site kommer man först till en  inloggningssida där man skriver in loginnamn och så, när man submittat körs sedan lite kod som kollar om användarnamn o lösen stämmer, gör den det så vill jag skapa en session och lite sessionsvariabler och sedan skicka vidare användaren till en startsida. Enkelt!
Mitt problem är att all kod ligger i funktioner i en och samma fil. Det enda som händer när man loggar in osv är att man skickas till en annan funktion i samma fil och då vill inte min session hänga med. 
Hur gör man detta? Måste man köra session_start i varje funktion? Hur går det till?

ps. Jag har ställt ngn liknande fråga förut men fortfarande inte lyckats lösa det. ds.

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

## #2 — ThACRoW, 2002-04-05T11:21Z

Kan du inte visa lite kod... ?

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

## #3 — 2bas, 2002-04-05T11:59Z

Hmmm, sessions mellan funktioner??

Menare du att du inte kommer åt sessionvariablerna inne i funktionen. Det beror på att variablerna kanske inte är globala.
Prova att lägga till 

global $variabel1; i början av funktionen, så borde variabeln vara tillgänglig i den funktionen.

typ:

```php
function Sum()
{
    global $a, $b;

    $b = $a + $b;
}
```

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

## #4 — web00132, 2002-04-05T19:34Z

Hmm, verkar inte fungera så bra.
Så här har jag gjort:

 \- Efter inloggningen startar en session..

```
session_start();
session_register("blnValidUser");
session_register("name");
$blnValidUser = true;
$name = $HTTP_POST_VARS[login];
global $blnValidUser;
global $name;
header("location: index.php?loggedin=true");
```

 \- Sedan skickas man till adressen ovan..

```
elseif ($loggedin == true)
{
	ShowStart();
}
```

 \- Till sist hamnar man här..

```
function ShowStart()
{
	Print "Nu är du inloggad ".$name."!";
}
```

I name-variabeln visas tyvärr ingenting och det är det som är mitt problem.

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

## #5 — ThACRoW, 2002-04-05T19:39Z

Prova kalla variablen så här istället:

```php
function ShowStart()
{
	Print "Nu är du inloggad ".$_SESSION[name]."!";
}
```

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

## #6 — Matte, 2002-04-05T19:40Z

Du bör ha "fnuttar" i arrayindexet. Prova med:

$name = $HTTP_POST_VARS\['login'\];

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

## #7 — web00132, 2002-04-05T19:50Z

Name-variabeln får ett värde genom HTTP_POST..  osv, det är inte det som är problemet, och $\_SESSION-grejen fungerar inte heller.

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

## #8 — Matte, 2002-04-05T20:10Z

Nytt försök:

```
function ShowStart()
{
  global $name;
  Print "Nu är du inloggad ".$name."!";
}
```

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

## #9 — web00132, 2002-04-05T20:55Z

Tack för hjälpen men det fungerar bara inte. Ngt annat förslag??

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

## #10 — Tim, 2002-04-05T21:16Z

Det beror på vad för php version du har, dvs om du har register_globals på eller av. Ifall dom är av så tror jag det här kan fungera bättre.

session_start();
$\_SESSION\["blnValidUser"\] = "true";
$\_SESSION\["name"\] = $\_POST\["login"\];
header("location: index.php?loggedin=true");

function ShowStart()
{
	Print "Nu är du inloggad".  $\_SESSION\["name"\]."!";
}

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

## #11 — web00132, 2002-04-05T22:23Z

Nope, det vill sig inte.

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

## #12 — ThACRoW, 2002-04-05T23:48Z

Stöder äns din PHP version Sessioner?  ;)

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

## #13 — web00132, 2002-04-05T23:59Z

Eh, jag antar det.
Jag kör:
Apache/1.3.17 (Unix) FrontPage/4.0.4.3 PHP/4.0.4pl1

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

## #14 — Tim, 2002-04-06T09:12Z

Jag föreslår att du uppgraderar PHP.

$\_SESSION\[\] metoden är ny från och med ver. 4.1.1 och uppåt.

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

## #15 — SPiN, 2002-04-06T10:52Z

Du ska inte behöva sätta $\_SESSION\[\] till global, de är det automagiskt. Testa det här:

```
<?php
session_start ();

$blnValidUser = true;
$userName = "Namnet";

session_register ( "blnValidUser" );
session_register ( "userName" );

header ( "sida2.php" );
?>
```

Sida2.php:

```
<?php
session_start (); // Kan det bero på att du har glömt denna?

if ( $_SESSION[ 'blnValidUser' ] ) {
     echo "Inloggad";
}
else {
     echo "Inte inloggad";
}
?>
```

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

## #16 — Matte, 2002-04-06T11:06Z

Nu är ju SPIN våran store PHP-guru så jag har väl missuppfattat det hela. Som jag har uppfattat manualen så ska man om man har register_globals=on använda session_register() och om man har register_globals=off använda $\_SESSION\[\] alternativt i äldre versioner $HTTP_SESSION_VARS\[\].
Så är det i allafall när jag har testat på 4.0.6;  är register_globals på så funkar det inte riktigt med $HTTP_SESSION_VARS och tvärtom är register_globals av så fungerar det inte alls med session_register(). Men det kanske är annorlunda i 4.1.

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

## #17 — web00132, 2002-04-06T11:21Z

Puh.. ok. Tyvärr kan jag inte bestämma så mkt vilken PHP-version som finns på servern jag jobbar mot men jag har installerat senaste PHP-versionen hemma nu.

Det funkar om jag lägger alla funktioner i olika filer men det är ju precis det jag inte vill, jag vill ha allt i en och samma fil.
Frågan är då t ex: måste jag skriva session_start högst upp i filen fast den ska starta i min Login-funktion?

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

## #18 — Matte, 2002-04-06T12:02Z

Som du själv beskriver det så verkar ju själva session-hanteringen fungera eftersom det fungerar med olika filer. Då kommer vi tillbaka till ursprungsfrågan du ställde: hur får man det att fungera i en function. Själv har jag inte tid att testa mig fram hur du ska gå tillväga, men en "fuskväg" skulle ju kunna vara att ersätta:

```
elseif ($loggedin == true)
{
	ShowStart();
}
```

och

```
function ShowStart()
{
	Print "Nu är du inloggad ".$name."!";
}
```

 
med

```
elseif ($loggedin == true)
{
	Print "Nu är du inloggad ".$name."!";
}
```

Sedan till frågan om session_start(). Med den php-versionen du har att tillgå så är troligtvis register_globals satt till on. Som jag har läst manualen så är det inte nödvändigt att använda session_start när man använder session_register (men det är dock en god vana att göra det), och det fungerar utan session_start på den php-version jag har på mitt webbhotell (4.0.4pl1).

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

## #19 — web00132, 2002-04-06T12:34Z

Nu har jag testat alla förslag jag fått men sessionsvariabeln vill inte följa med.

```
if(md5($password) == $HTTP_POST_VARS[pass])
{
	session_start();
	$blnValidUser = true;
	$name = $l;
	session_register("blnValidUser");
	session_register("name");
//	if (isset($name))
//	{
//		print $name;
//	}
	header("location: index.php?loggedin=true");
}
```

Om jag tar bort kommenterar in if-satsen(och kommenterar ut header-grejen) här ovan skriver den ut rätt värde(name-variabeln). Om jag låter det stå som det gör nu hamnar man här:

```
elseif ($loggedin == true)
{
	session_start();
	Print "Nu är du inloggad ".$name."!";
}
```

Då skrivs inte name-variabeln ut. Det funkar inte hur jag än gör! Jag blir galen!

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

## #20 — Matte, 2002-04-06T13:33Z

Prova det här:

```
elseif ($loggedin == true)
{
	session_start();
	session_register("name");
	Print "Nu är du inloggad ".$name."!";
}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/40904-session-mellan-funktioner  
Nästa sida: https://www.webforum.nu/amne/php/40904-session-mellan-funktioner/page2.md
