webForumDet fria alternativet

Sessioner i safari

7 svar · 493 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena
Har gjort ett mycket enkelt phpscript som ändrar bakgrundfärg beroende på en sessions värde.
Första gången man kommer till sidan (sessionen finns inte) så är det en färg. Samtidigt får sessionen ett värde som gör att bakgrunden ändras.

Problemet jag nu stött på är att Safari behåller sessionen även fast man stänger webläsaren.
Det känns ju helt fel, 'får' det ens vara så? Medtanke på att sessioner används för att lagra information tempoärt genom flera sidor?

Allt funkar som det ska i både Netscape, IE och Firefox, men alltså inte i safari.

Min fråga är alltså, hur ska jag lösa det här?
Tack på förhand!

tydalMedlem sedan juni 20034 013 inlägg
#2

Enligt specen är det så att om du inte talar om hur länge cookien ska leva så ska den tas bort "when the user's session ends".

Det du kan göra är att sätta en gräns, i sekunder:

ini_set("session.cookie_lifetime", 1200);

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Tack för ett snabbt svar, men det funkar fortfarande i safari.
Har lagt detta nästan högst upp i min kod, efter ngra headers:

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
ini_set("session.cookie_lifetime", 1200);
?>
<?php
ob_start();
session_start();
// Kontroll för exekvering av undersidor:
if(isset($_GET['page'])){
	$page = $_GET['page'];
}else{
	// ÄNDRA VÄRDET AV DENNA VARIABEL FÖR ATT SÄTTA STARTSIDA \\
	$page = "hem.html";
}
if (file_exists($page . ".html")) {
	$fName = $page . ".html";
} else {
	$fName = "error404.html";
}
if(isset($_GET['page']) && $_GET['page'] == "reload_site"){
	unset($_SESSION['vCount']);
//	session_unset();
}
if(isset($_SESSION['vCount']) && $_SESSION['vCount'] == 1){
	// Bakgrund ska vara vit, visa rosa meny:
	$setBackground	= "#FFF";
	$setPicsPrefix	= "2";
	$setmenuLinkA	= "#000";
	$setmenuLinkH	= "#E00085";
}else{
	// Bakgrund ska vara rosa och menyn vit:
	$_SESSION['vCount'] = 1;
	$setBackground = "#E00085";
	$setPicsPrefix	= "1";
	$setmenuLinkA	= "#FFF";
	$setmenuLinkH	= "#000";
}
?>
<html>
<head>
<meta name="generator" content="Editplus">
<meta name="author" content="Micke Andersson 2006">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="Keywords" content="">
<meta name="Description" content="">
<link rel="stylesheet" href="css/style.css" type="text/css">
<!--
#######################################################################
# Skapad 2006-03-13 Av Micke Andersson ([url]http://www.MickeA.com[/url]) © 2006 #
# All kod, script & bilder och skyddas enligt lagen om upphovsrätt.   #
#######################################################################
-->
<title>Index - <?=$setBackground?></title>
<script language="javascript" type="text/javascript" src="css/menu.js"></script>
<style type="text/css">
/* CSS FÖR MENYN, DENNA MÅSTE LIGGA HÄR FÖR ATT DET SKA FUNGERA */
html, body
	{
	padding:			0px;
	background-color:		<?=$setBackground?>;
	text-align:			center;
	}
a.menuChoice:link, a.menuChoice:active, a.menuChoice:visited
	{
	text-decoration:			none;
	color:						#FFF; 
	font:						bold 12px verdana;
	}
a.menuChoice:hover
	{
	color:						black;
	}
a.menulink:link, a.menulink:active, a.menulink:visited
	{ 
	text-decoration:			none; 
	color:						<?=$setmenuLinkA?>; 
	font:						11px verdana; 
	margin:						0px; 
	padding:					0px; 
	}
a.menulink:hover
	{
	color:						<?=$setmenuLinkH?>;
	}
.menu
	{
	padding-left:				7px; 
	margin-bottom:				0px; 
	background-color:			transparent; 
	text-align:					left; 
	vertical-align:				top; 
	display:					none;
	border:						0px;
	}
</style>
</head>
<body>
<div id="container1">
	<div id="topCont"><a href="default.php?page=reload_site"><img src=="img/logga.jpg" alt="LOGOTYPE HÄR"></a></div>
	<div id="container2">
		<div id="menuCont">
		<?php
		require("menu.php");
		?>
		</div>
		<div id="mainCont"><iframe name="namn" src="<?=$fName?>" frameborder="0" scrolling="auto"></iframe></div>
	</div>
</div>
</body>
</html>

Ser någon fel i min kod, säg gärna till, är ingen klippa på php ;)
Tack!

tydalMedlem sedan juni 20034 013 inlägg
#4

1200 sekunder är 20 minuter och du svarade inom 20 minuter, alltså kan du inte ha hunnit testa om det funkade :-)

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

aha, ok.
Läste mig nyss till på php.net att om jag anger värdet '0' innebär det "Until the browser is closed" vilket låter som något jag vill ha.

Ser phpkoden 'bra' ut i övrigt, ligger allt 'där det ska' ?

Tack!

bassebhuMedlem sedan nov. 20016 480 inlägg
#6

MickeA.com skrev:

aha, ok.
Läste mig nyss till på php.net att om jag anger värdet '0' innebär det "Until the browser is closed" vilket låter som något jag vill ha.

Ser phpkoden 'bra' ut i övrigt, ligger allt 'där det ska' ?

Tack!

Tjaa, tar du bort det här så tjänar du 7 tecken kod ;)

?>
<?php
tydalMedlem sedan juni 20034 013 inlägg
#7

MickeA.com skrev:

Läste mig nyss till på php.net att om jag anger värdet '0' innebär det "Until the browser is closed" vilket låter som något jag vill ha.

Det var det du hade :-)

Specen säger "until the user's session ends" och det tolkar Internet Explorer, Firefox, Opera med flera som "tills man stänger webbläsaren" (och därför står det så på php.net). Men tydligen gör inte Safari det och då kan du i stället sätta en gräns.

0 innebär ju att det inte finns någon gräns, mer då än att specen säger att det innebär until the user's session ends...

tydalMedlem sedan juni 20034 013 inlägg
#8

Förresten, jag skulle ta bort header-raderna i början där för att testa så det inte är den biten som ställer till det i Safari. Vill man veta om det är en viss faktor (session-cookien) som orsakar ett visst beteende (kvarstående session) så bör man ta bort alla andra faktorer för att se om beteendet behålls.

Så korta ner inledningen till:

<?php
session_start();
// Kontroll för exekvering av undersidor:
// och sedan vidare med din befintliga kod.

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