webForumDet fria alternativet

Läsa från cookie (om den finns)

PHP

7 svar · 280 visningar · startad av Web-Tor

Medlem sedan nov. 200013 890 inlägg
Frågan#1

På en webbplats ska man själv kunna välja utseende.
Man gör det genom att byta CSS.
CSS-ens namn lagras i en cookie (jag har aldrig bakat kakor förut ;)).
Jag använder den här koden:

<?	// ***   Sätter cookie (om man ändrat CSS)   *** //
if (isset($cmdSave))
	setcookie("adminCSS", $CSS, strtotime("1 January 2010"));
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>

<?	// ***   Om man inte har valt någon CSS ännu   *** //
if (!isset($CSS))
	$CSS = "gray";
?>

<link rel="stylesheet" type="text/css" href="inc/admin_<?=$CSS?>.css" />
</head>
<body>

<div>
<form method="post" action="<?=$PHP_SELF?>">
	<select name="CSS">
		<option value="gray" <? echo (($CSS=="gray")?"selected":"")?>>Grå</option>
		<option value="orange" <? echo (($CSS=="orange")?"selected":"")?>>Orange</option>
	</select>
	<input type="submit" value="Välj" name="cmdSave" class="SaveButton" />
</form>

<a href="<?=$PHP_SELF?>">Länk</a>

</div>

</body>
</html>

MEN… om jag klickar på länken så "glöms" ju CSS-ens namn bort.
Jag har ingen lust att skicka med CSS-namnet i länken.

Hur gör jag?

Medlem sedan dec. 2001314 inlägg
#2

Varför har du döpt kakan till "adminCSS" när du anropar variabeln "CSS"?

Medlem sedan nov. 200013 890 inlägg
#3

Hur ska det se ut då?

Medlem sedan dec. 2001314 inlägg
#4

Ändra till

setcookie("CSS", $CSS, strtotime("1 January 2010"));

men det förutsätter då att du har "register_globals" på. Annars får du ändra alla $CSS till $_COOKIE['CSS'].

Medlem sedan nov. 200013 890 inlägg
#5

Det funkar inte riktigt. Kolla på den här sidan. När man val "Orange" så går det inte att välja tillbaka till "Grå". :q

Medlem sedan dec. 2001314 inlägg
#6

Använder du exakt den koden som du skrivit ovan?

Medlem sedan mars 2001593 inlägg
#7

men kan du inte lägga det i en session istället?

Medlem sedan nov. 200013 890 inlägg
#8

Använder du exakt den koden som du skrivit ovan?

Ja

men kan du inte lägga det i en session istället?

Nej, jag vill ju att användare ska få "rätt" CSS nästa gång han går in på sidan. ;)

Jag har gjort om alltihopa, och nu funkar det. Jag använder två sidor i stället:

start.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>

<?	// ***   Kollar om det finns nån kaka med vald CSS   *** //
if (isset($CSS))
	$CSS = $CSS;
else
	$CSS = "gray";
?>

<link rel="stylesheet" type="text/css" href="inc/admin_<?=$CSS?>.css" />
</head>
<body>

<form method="post" action="change_CSS.php">
	<select name="fltCSS">
		<option value="gray" <? echo (($CSS=="gray")?"selected":"")?>>Grå</option>
		<option value="orange" <? echo (($CSS=="orange")?"selected":"")?>>Orange</option>
	</select>
	<input type="submit" value="Välj" name="cmdSave" class="SaveButton" />
</form>

</body>
</html>

change_CSS.php

<?    // ***   Sätter cookie (om man ändrat CSS)   *** //
if (isset($cmdSave))
	setcookie("CSS", $fltCSS, strtotime("1 January 2010"));
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script language="JavaScript">
<!-- // Laddar om sidan
	location.href="start.php"
	parent.menu.location.reload();
//-->
</script>
</head>
<body>

</body>
</html>
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)