webForumDet fria alternativet

lyckas inte ta bort sessionsvärden?

PHPur PHP

8 svar · 489 visningar · startad av vic

Medlem sedan apr. 2006244 inlägg
Frågan#1

Hej

Håller på med ett litet e-handelssystem. När man lägger en artikell i kundvagnen sätts ett sessionsvärde ($_SESSION['recently']) som anger att man nyss laggt en vara i kundvagnen. Kunden omdirigeras till sidan han befann sig på när ha bestämde sig för att lägga artikelln i kundvagnen och kundvagnen blinkar i två färger. När kunden sedan fortsätter och byter sida så skall inte kundvagnen blinka igen! Jag tar därför bort sessionsvärdet recently på samma sida som jag kollar om det är satt för att infoga javascriptet. :e Förklaringen blev inte rolig, ja vet.. Detta är i varje fall en file som inkluderas i headern när någonting finns i kundvagnen. Har man nyss laggt in nått i kundvagnen är sessionvärdet recently satt och kundvagnen blinkar.

<?php
session_start();
?>
	<!-- Shopping cart -->
	<link rel="stylesheet" href="SYS_template/styles/shopping_cart.css" type="text/css" media="all" />
	<script type="text/javascript" src="SYS_template/javascripts/shopping_cart_control.js"></script>

<?php

if(isset($_SESSION['recently']))
	{ 
	unset($_SESSION['recently']); // fungerar inte...?
	?>
	<script type="text/javascript" src="SYS_template/javascripts/shopping_cart_blink.js"></script>
<?php 
	}
?>

Allt funkar som det ska förutom att sessionsvärdet recently inte tas bort?

Medlem sedan maj 2005562 inlägg
#2

Skriv över värdet istället.

$_SESSION['recently'] = false;
Medlem sedan apr. 2006244 inlägg
#3

jo, det är så ja löst det men prestandamässigt borde det väl vara bättre att helt ta bort variabelvärdet? Jag förstår bara inte varför det inte fungerar...

Medlem sedan maj 2005562 inlägg
#4

Tror inte unset() är synkron utan den tar bort pekaren asynkront, det går inte att avgöra när.

Prestandamässigt märker du ingen skillnad, resultatet är samma.
Den data som tidigare var knuten till $_SESSION['recently'] kommer rensas bort av systemet garbagecollection eftersom den inte längre har några pekare på sig.

Medlem sedan apr. 2006244 inlägg
#5

aha, okej, tack för svaren...

Medlem sedan juni 20006 032 inlägg
#6

Använd session_destroy()

Medlem sedan apr. 2006244 inlägg
#7

har kundvagnens varor också i sessioner, med destroy så tas väl alla sessioner bort och kundvagnen blir tom?

Medlem sedan aug. 20002 975 inlägg
#8

unset() ska ta bort sessionsvariabeln.
I PHP-versioner före 4.3.0 ligger dock en bugg att det inte går att ta bort sessionsvariabler med unset() när register_globals är satt.

Medlem sedan apr. 2006244 inlägg
#9

ok, jag kör lokalt med en äldre php-version, det förklarar saken!

133 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)