webForumDet fria alternativet

Stora problem med Sessions

PHP

11 svar · 373 visningar · startad av Ricki

Medlem sedan juni 2000373 inlägg
Frågan#1

Tjena,
Jag har ett mycket irriterande problem med session. Ibland funkar det och ibland inte... Även fast man tilldelar en session ett värde så glömmer den bort det på något sätt...

Denna kod används för att sätta en session:

<?php
session_start();
$_SESSION['familj'] = 'rickard';
?>

Och denna kod används för att kolla om den finns. Och även om jag har satt sessionen som ovan så säger den att den inte finns, för den redirectar till sidan!

<?php
// Kolla om man loggat in
session_start();
if (!isset($_SESSION['familj']))
{
	header("Location: index.php");
}
?>

Är det någon som vet vad som blir fel??
Mycket tacksam för svar!

Medlem sedan okt. 20001 285 inlägg
#2

Du måste registrera en sessionvariabel :h

<?
session_start();
$familj = "rickard";
session_register("familj");
header ("location: /index.php");
exit;
?>

Och om du vill sätta flera variabler..

<?
session_start();
$city = "ankeborg";
$webforum = $row['forum'];
$username = $_POST['username'];
$session_id = "$PHPSESSID";
session_register("city", "webforum", "username", "session_id");
header ("location: /index.php");
exit;
?>

Avsluta sessionen..

<?
mysql_query("UPDATE members etc.... ") or die ("Kan inte sova!");
session_unset();
session_destroy();
header ("location: /index.php");
exit;
?>

They say if you play a microsoft cd backwards, you will hear satanic messages, thats nothing, if you play it forwards it'll install windows.. :l

Medlem sedan juni 2000373 inlägg
#3

Det fungerar ändå inte... Vad kan vara fel?
Jag ser att sessionen läggs till i den där PHP/sessiondata mappen, men ändå kan kan jag inte nå den sedan... Mycket skumt!

Medlem sedan juni 2000373 inlägg
#4

Är det ingen som vet som kan vara fel...
Om ni inte vet så kan ni väl skriva hur ni gör att att kontrollera om en person är inloggat med hjälp av sessions....
Plz, det är viktigt!

Medlem sedan aug. 20002 975 inlägg
#5

Personligen så gör jag som du visade i ditt första inlägg i den här tråden.
Med ett litet tillägg. Jag skriver exit; på raden efter header(). Detta gör jag för att skriptet inte ska hinna fortsätta exekveras vidare några rader, innan det skickar vidare.

Medlem sedan maj 2002647 inlägg
#6

Det kan även vara någe med dina inställningar i php.ini... inte säkert men det kan bråka ibland.

Medlem sedan juni 2000373 inlägg
#7

Tjena,
Nu har jag kommit på vad det är som krånglar (tror jag).
Om jag skriver ut sessionen på samma sida som den sätts, så funkar det...

Men när jag gör:
header("Location: kalender.php");
Funkar det inte i kalender.php.

Om jag däremot sätter sessionen i login.php och sedan själv går till kalender.php så funkar det.

Tömmer [header("Location: kalender.php");] sessionminnet på något sätt? Finns det någon parameter man kan skicka med för att den inte ska tömma....

Mycket tacksam för svar!

Medlem sedan aug. 20002 975 inlägg
#8

Testa med

header("Location: kalender.php?".SID);
Medlem sedan juni 2000373 inlägg
#9

Tackar, nu fungerar det... Men varför måste man ha med den där grejen?
Kommer ju dessutom en lång jäkla id grej i adressfältet!

EDITEDITEDIT

När jag undersökte problemet vidare var jag tvungen att skicka med SID på alla sidor för att det skulle fungera... Måste det vara så. Det känns ju lite jobbigt att lägga in det på varenda redirect!

Medlem sedan okt. 20001 285 inlägg
#10

Du har väl session_start(); längst upp på alla sidor ?

:l :stud :r ;)

Medlem sedan juni 2000373 inlägg
#11

Fuel skrev:

Du har väl session_start(); längst upp på alla sidor ?

:l :stud :r ;)

Japp, det har jag...

Medlem sedan apr. 2000137 inlägg
#12

I din php.ini så kan du ställa in

session.use_trans_sid = 1

någonstans.

Ifall du kör linux måste du nog kompillera in det.

369 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
233 ms — ändringar (db)