cookie bewaart niet? (denk ik)

Status
Niet open voor verdere reacties.

pontoe

Gebruiker
Lid geworden
9 jan 2008
Berichten
351
ey all,
ik heb een website waar je je eigen layout kan kiezen, maar op de een of andere manier, wanneer je naar een andere pagina gaat, verandert hij steeds terug naar de eerste layout uit de lijst... vroeger had ik dat probleem niet. ik dacht dat het aan mijn computer lag, maar anderen hebben er ook last van. dit is de code die ik gebruik voor het kiezen van een layout:
Code:
<?
$header = 'header_2';
$footer = 'footer';

$templates = array('header' => 'legerprint','header_2' => 'vrolijke blokjes','header_3' => 'black/white','header_4' => 'flowerfield','header_5' => 'vuur');
if (!empty($_REQUEST["template"]))
{
    $header = $_REQUEST["template"];
    $footer = preg_replace('header','footer',$header);
    setcookie("g3blayout", $header, time()+31536000, '/');
}
else if (isset($_COOKIE['g3blayout']))
{
    $header = $_COOKIE["g3blayout"];
    $footer = preg_replace('header','footer',$header);
}
else
{
    setcookie("layout", $header, time()+31536000, '/');
}

$html = "<form name='form' href='$PHP_SELF'>
<select name='template' onChange='this.form.submit();'>";
foreach ($templates as $template => $naam)
{
$html .="<option value='$template'";
if ($header == $template)
{
    $html .="selected=selected";
}
$html .=">$naam</option>";
}
$html .= "</select><br/>";
echo $html;

?>

daarna begint elke pagina met
Code:
<?php include("template.php"); ?>
<?php include($header.'.php'); ?>
in die headers staan o.a. de achtergrond, kleuren voor de tekstblokken, de begintags die elke pagina heeft (zoals <html> enzo), etc. wat kan het probleem zijn?
 
ten eerste vind ik je script van zichzelf al vreemd, waar staan al die lay-outten?

Maargoed, zoals ik het zou doen is met een session:
- maak voor elk van jou een lay-out met dezelfde classes/id's.
- maak een form waarin je kan kiezen tussen die lay-outs
- maak een session ($template is de variabele die je uit het form haalt, maak daar dezelfde namen van als de templates die je maakt:
PHP:
session_start()
$_SESSION['template'] = "$template";

en nu op elke pagina:
PHP:
session_start()
$template = $_SESSION['template'];
echo "<link href='$template.css' rel='stylesheet' type='text/css'>";

dit is zoals ik het zou doen. Maar als je het langer zou willen bewaren (want sessions gelden totdat de browser wordt afgesloten) kan je het doen door middel van een database en ip-adressen...
 
de lay-outs staan op de host, in de vorm van 5 verschillende headers :P . maar dat idee van die sessions is wel goed... bedankt! wat jij nu in feite doet met die sessions had ik eerst met cookies :P maar dat wou dus niet meer lukken... maar ik snap jouw code niet helemaal; moet die eerste bij dat script in wat ik hier gepost heb, en die 2e gewoon op elke pagina? die code bovenaan staat namelijk ook gewoon op elke pagina, het is een include op elke pagina... en waar in dat script moet het dan komen? want het wil nu nog niet echt lukken ^^

in mijn eigen script zit volgens mij een of ander probleem dat hij alleen een cookie aanmaakt als die nog niet bestaat... want hij maakt 1 keer een cookie aan, en vanaf dan gaat hij altijd terug naar die geloof ik. of hij verandert $header helemaal niet, want later in de code staat weer $header, dat wordt vervangen door die header waar de goede layout in staat...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan