PDA

Bekijk Volledige Versie : Cookie wordt niet goed uitgelezen of opgeslagen



# martin
27/11/05, 16:00
Beste nieuwsgroep.

Met behulp van een PHP script laat ik de bezoeker een thema (stijlsheet)
kiezen voor de pagina. Dat wordt opgeslagen als cookie zodat het gekozen
thema ook voor volgende pagina's gebruikt wordt.

Nu zit ik met het volgende probleem: als de bezoeker een thema kiest op de
index.php blijft deze hetzelfde voor alle volgende pagina's binnen het
domein. Maar kiest de bezoeker op een andere pagina dan index.php een thema
is deze alleen op dat moment actief. Wanneer er doorgeklikt wordt naar een
andere pagina wordt het op de index.php gekozen thema weer gebruikt.

De bedoeling is dat de bezoeker op welke pagina dan ook een thema kiest dat
actief blijft tot er een andere gekozen wordt.

Wat zou er in het script gezet moeten worden zodat dit probleem opgelost is?

Ik gebruik het volgende script dat op iedere pagina geinclude wordt (nog
voor <html> ):

------------- START -------------

<?php

$ThemaNaam[] = "Oranje";
$ThemaURL[] = "http://***.nl/stijl/oranje.css";
$ThemaNaam[] = "Oranje";
$ThemaURL[] = "http://***.nl/stijl/oranje.css";
$ThemaNaam[] = "Blauw";
$ThemaURL[] = "http://***.nl/stijl/blauw.css";
$ThemaNaam[] = "Zwartwit";
$ThemaURL[] = "http://***.nl/stijl/zwartwit.css";

$VolgendJaar = mktime(0,0,0,date("n"),date("j"),date("Y")+1);

if($HetThema) { setcookie("Thema","$HetThema", date("U",$VolgendJaar));
$Thema = $HetThema; }
elseif(!$Thema) { $Thema = "0"; }
$Thema = intval($Thema);

?>

------------- EINDE -------------


Het thema wordt met de volgende code in de pagina geladen:


------------- START -------------

<?php echo("<link rel='stylesheet' type='text/css'
href='$ThemaURL[$Thema]'>"); ?>

------------- EINDE -------------


En met de volgende links kan een thema worden gekozen:


------------- START -------------

<?php

echo("<a href='$PHP_SELF?HetThema=1'>Oranje</a>
<a href='$PHP_SELF?HetThema=2'>Blauw</a>
<a href='$PHP_SELF?HetThema=3'>Zwart-wit></a>
?>

------------- EINDE -------------

Alvast bedankt :)

# martin

Gerard van Wilgen
27/11/05, 16:15
# martin wrote:
> Beste nieuwsgroep.
>
> Met behulp van een PHP script laat ik de bezoeker een thema (stijlsheet)
> kiezen voor de pagina. Dat wordt opgeslagen als cookie zodat het gekozen
> thema ook voor volgende pagina's gebruikt wordt.

Maar een cookie moet wel een keer gelezen worden. Alleen opslaan is niet
voldoende.

--

Gerard van Wilgen

www.majstro.com - Veeltalig vertaalwoordenboek
www.erotikejo.com - Internationaal sexportaal

Erik Baas
27/11/05, 16:15
# martin wrote:

> PHP script [...] thema (stijlsheet)
> kiezen voor de pagina. Dat wordt opgeslagen als cookie zodat het gekozen
> thema ook voor volgende pagina's gebruikt wordt.

> Nu zit ik met het volgende probleem: als de bezoeker een thema kiest op de
> index.php blijft deze hetzelfde voor alle volgende pagina's binnen het
> domein. Maar kiest de bezoeker op een andere pagina dan index.php een thema
> is deze alleen op dat moment actief. Wanneer er doorgeklikt wordt naar een
> andere pagina wordt het op de index.php gekozen thema weer gebruikt.

En welk thema wordt er gebruikt als je daarna weer op die "andere"
pagina terug komt ? Ik zit n.l. te denken aan de "Path"-property van het
cookie...

--
Erik.

# martin
27/11/05, 16:30
Hieronder volgt een reactie op dit bericht:
> # martin wrote:
>
>> PHP script [...] thema (stijlsheet)
>> kiezen voor de pagina. Dat wordt opgeslagen als cookie zodat het
>> gekozen thema ook voor volgende pagina's gebruikt wordt.
>
>> Nu zit ik met het volgende probleem: als de bezoeker een thema kiest
>> op de index.php blijft deze hetzelfde voor alle volgende pagina's
>> binnen het domein. Maar kiest de bezoeker op een andere pagina dan
>> index.php een thema is deze alleen op dat moment actief. Wanneer er
>> doorgeklikt wordt naar een andere pagina wordt het op de index.php
>> gekozen thema weer gebruikt.
>
> En welk thema wordt er gebruikt als je daarna weer op die "andere"
> pagina terug komt ? Ik zit n.l. te denken aan de "Path"-property van
> het cookie...

Dan wordt het op index.php gekozen thema weer gebruikt.

Voor de eerste keer wordt oranje.css geladen. Als er op "/index.php" of
"/copyright.php" voor blauw wordt gekozen, blijft dat actief.
"/algemeen/info.php" is dan dus blauw, evenals "/algemeen/contact.php".

Kiest de bezoeker op "algemeen/info.php" voor het zwart-wit thema, is dat
alleen op dat moment actief. Gaat hij door naar "algemeen/contact.php" is
het blauwe thema (gekozen in een "/" pagina) weer actief. Gaat hij terug
naar de pagina waar voor zwart-wit is gekozen, is deze pagina ook blauw.

Alleen het thema dat in de root wordt gekozen wordt dus opgehaald...

Bedankt voor je hulp.

Martin.

# martin
27/11/05, 19:15
Hieronder volgt een reactie op dit bericht:
> # martin wrote:
>> Beste nieuwsgroep.
>>
>> Met behulp van een PHP script laat ik de bezoeker een thema
>> (stijlsheet) kiezen voor de pagina. Dat wordt opgeslagen als cookie
>> zodat het gekozen thema ook voor volgende pagina's gebruikt wordt.
>
> Maar een cookie moet wel een keer gelezen worden. Alleen opslaan is
> niet voldoende.

Zie je iets in de code dat niet klopt?

Voor de eerste keer wordt oranje.css geladen. Als er op "/index.php" of
"/copyright.php" voor blauw wordt gekozen, blijft dat actief.
"/algemeen/info.php" is dan dus blauw, evenals "/algemeen/contact.php".

Kiest de bezoeker op "algemeen/info.php" voor het zwart-wit thema, is dat
alleen op dat moment actief. Gaat hij door naar "algemeen/contact.php" is
het blauwe thema (gekozen in een "/" pagina) weer actief. Gaat hij terug
naar de pagina waar voor zwart-wit is gekozen, is deze pagina ook blauw.

Alleen het thema dat in de root wordt gekozen wordt dus opgehaald...

Bedankt voor je hulp.

Martin.

Gerard van Wilgen
27/11/05, 22:15
# martin wrote:
> Hieronder volgt een reactie op dit bericht:
>
>># martin wrote:
>>
>>>Beste nieuwsgroep.
>>>
>>>Met behulp van een PHP script laat ik de bezoeker een thema
>>>(stijlsheet) kiezen voor de pagina. Dat wordt opgeslagen als cookie
>>>zodat het gekozen thema ook voor volgende pagina's gebruikt wordt.
>>
>>Maar een cookie moet wel een keer gelezen worden. Alleen opslaan is
>>niet voldoende.
>
>
> Zie je iets in de code dat niet klopt?

Ik heb de code niet zo goed bekeken, maar het viel me op dat hierin de
cookie alleen wordt opgeslagen. Het teruglezen gebeurt dus blijkbaar
elders. Misschien zit daar een fout.

Kun je een voorbeeld geven van een pagina waarin deze code gevoegd wordt?


--

Gerard van Wilgen

www.majstro.com - Veeltalig vertaalwoordenboek
www.erotikejo.com - Internationaal sexportaal

# martin
28/11/05, 21:45
Hieronder volgt een reactie op dit bericht:
> Beste nieuwsgroep.
>
> Met behulp van een PHP script laat ik de bezoeker een thema
> (stijlsheet) kiezen voor de pagina. Dat wordt opgeslagen als cookie
> zodat het gekozen thema ook voor volgende pagina's gebruikt wordt.
>
> Nu zit ik met het volgende probleem: als de bezoeker een thema kiest
> op de index.php blijft deze hetzelfde voor alle volgende pagina's
> binnen het domein. Maar kiest de bezoeker op een andere pagina dan
> index.php een thema is deze alleen op dat moment actief. Wanneer er
> doorgeklikt wordt naar een andere pagina wordt het op de index.php
> gekozen thema weer gebruikt.
> De bedoeling is dat de bezoeker op welke pagina dan ook een thema
> kiest dat actief blijft tot er een andere gekozen wordt.
>
> Wat zou er in het script gezet moeten worden zodat dit probleem
> opgelost is?
> Ik gebruik het volgende script dat op iedere pagina geinclude wordt
> (nog voor <html> ):
>
> ------------- START -------------
>
> <?php
>
> $ThemaNaam[] = "Oranje";
> $ThemaURL[] = "http://***.nl/stijl/oranje.css";
> $ThemaNaam[] = "Oranje";
> $ThemaURL[] = "http://***.nl/stijl/oranje.css";
> $ThemaNaam[] = "Blauw";
> $ThemaURL[] = "http://***.nl/stijl/blauw.css";
> $ThemaNaam[] = "Zwartwit";
> $ThemaURL[] = "http://***.nl/stijl/zwartwit.css";
>
> $VolgendJaar = mktime(0,0,0,date("n"),date("j"),date("Y")+1);
>
> if($HetThema) { setcookie("Thema","$HetThema",
> date("U",$VolgendJaar)); $Thema = $HetThema; }
> elseif(!$Thema) { $Thema = "0"; }
> $Thema = intval($Thema);
>
>>
>
> ------------- EINDE -------------
>
>
> Het thema wordt met de volgende code in de pagina geladen:
>
>
> ------------- START -------------
>
> <?php echo("<link rel='stylesheet' type='text/css'
> href='$ThemaURL[$Thema]'>"); ?>
>
> ------------- EINDE -------------
>
>
> En met de volgende links kan een thema worden gekozen:
>
>
> ------------- START -------------
>
> <?php
>
> echo("<a href='$PHP_SELF?HetThema=1'>Oranje</a>
> <a href='$PHP_SELF?HetThema=2'>Blauw</a>
> <a href='$PHP_SELF?HetThema=3'>Zwart-wit></a>
>>
>
> ------------- EINDE -------------
>
> Alvast bedankt :)
>
> # martin

Het wil maar niet lukken

* snik *



# martin