(php) verwijderen van cookie en refresh, werkt niet correct

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
ik ben bezig met een website voor ouderen, mensen moeten dus kunnen kiezen hoe groot het lettertype weergegeven moet worden. Dit werkt allemaal perfect dmv een cookie. Hij zet die cookie in index.php en refeshed hem daarna waarna hij ziet dat die cookie aanwezig is.

index.php
code:
1
2
3
4
5
6
7
8
if (!isset($_COOKIE['fontsize']))
{
grootte selecteren
}
if (isset($_COOKIE['fontsize']))
{
website
}


setcookie.php
code:
1
2
3
$fontsize = $_GET['size'];
setcookie("fontsize", $fontsize, time()+3600*24*365);
header("Location: index.php");


Maar ik wil dat als de gebruiker een foute keuze maakt dat deze kan klikken op groote opnieuw kiezen. Dit had ik gedaan door middel van de onderstaande code.

delcookie.php

code:
1
2
3
$fontsize = $_GET['size'];
setcookie("fontsize","", time()-3600*24*365);
header("Location: index.php");


En als hij de pagina vernieuwd ziet hij de cookie niet meer en kan de gebruiker opnieuw kiezen. Niet dus. Als ik hem nogmaals handmatig vernieuw kan hij wel kiezen.

Hoe kan het dat hij pas bij de 2e refesh ziet dat de cookie er niet meer is en hij opnieuw moet kiezen?

[ Voor 6% gewijzigd door Compusmurf op 04-01-2005 15:29 ]

http://Compusmurf.xs4all.nl


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Als je je font-size niet absoluut maar relatief defineert (met % en em eenheden), kunnen ze met ctrl+scroll of view => text size ook al een heel eind komen. Is dat niet een betere oplossing?

index.php

PHP:
1
2
3
4
5
6
7
8
if (!isset($_COOKIE['fontsize']))
{
grootte selecteren
}
if (isset($_COOKIE['fontsize']))
{
website
}

=>
PHP:
1
2
3
4
5
6
7
8
if (isset($_COOKIE['fontsize']))
{
website
}
else
{
grootte selecteren
}

:?

[ Voor 78% gewijzigd door Michali op 04-01-2005 15:38 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Ik snap niet helemaal wat je bedoelt maar denk dat ik het iets duidelijker meot maken. Het is voor ouderen dus ik heb een interfaceje gemaakt waarin ze dat kunnen selecteren. Want een select menu dat snappen sommige waarschijnlijk niet en daarom heb ik het op deze manier gedaan.

http://Compusmurf.xs4all.nl


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Compusmurf schreef op dinsdag 04 januari 2005 @ 15:33:
Ik snap niet helemaal wat je bedoelt maar denk dat ik het iets duidelijker meot maken. Het is voor ouderen dus ik heb een interfaceje gemaakt waarin ze dat kunnen selecteren. Want een select menu dat snappen sommige waarschijnlijk niet en daarom heb ik het op deze manier gedaan.
Nou ik neem aan (hopelijk) dat je je font in css defineert. Ik neem ook aan dat je iets als dit doet:
Cascading Stylesheet:
1
font-size: 12px;

Dan heb je je font dus absoluut gedefineert en kan de grote (in IE iig) niet aangepast worden. Dit kan wel als je hem relatief defineert:
Cascading Stylesheet:
1
2
3
font-size: 95%;
/* of */
font-size: 0.9em;

Mensen kunnen dan naar eigen wensen de tekst grote instellen en hoef je niet zo moeilijk te gaan doen met dit soort scriptjes.

Over je probleem weer even. Het enige wat ik kan bedenken is dat je met een te oude php versie werkt of dat je configuratie niet goed is. $_COOKIE bestaat sinds php 4.1.0. Je kunt anders Mischien dat je een te oude versie hebt, dan kun je $_HTTP_COOKIE_VARS gebruiken of beter nog, gewoon php upgraden. En controleer je config anders een goed.

[ Voor 17% gewijzigd door Michali op 04-01-2005 15:44 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Michali schreef op dinsdag 04 januari 2005 @ 15:38:
[...]


Nou ik neem aan (hopelijk) dat je je font in css defineert. Ik neem ook aan dat je iets als dit doet:
Cascading Stylesheet:
1
font-size: 12px;

Dan heb je je font dus absoluut gedefineert en kan de grote (in IE iig) niet aangepast worden. Dit kan wel als je hem relatief defineert:
Cascading Stylesheet:
1
2
3
font-size: 95%;
/* of */
font-size: 0.9em;

Mensen kunnen dan naar eigen wensen de tekst grote instellen en hoef je niet zo moeilijk te gaan doen met dit soort scriptjes.

Over je probleem weer even. Het enige wat ik kan bedenken is dat je met een te oude php versie werkt of dat je configuratie niet goed is. $_COOKIE bestaat sinds php 4.1.0. Je kunt anders Mischien dat je een te oude versie hebt, dan kun je $_HTTP_COOKIE_VARS gebruiken of beter nog, gewoon php upgraden. En controleer je config anders een goed.
Ik gebruik versie 4.3.9 dus denk niet dat dit te oud is voor dit soort functies.

http://Compusmurf.xs4all.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Oudere mensen (die internetten? wauw) hebben waarschijnlijk toch al grote lettertypes ingesteld staan in hun browser.

Waarom moeten ze dus persé voor jouw site, in plaats van dat het meteen werkt, nog eerst door extra schermen heen gaan klikken zodat de fontgrootte in jouw site eindelijk óók goed werkt? En als hun computers zo ingesteld staan dat cookies niet geaccepteerd worden (default in IE6), dan werkt het òf nog eens niet, òf ze moeten het elke keer als ze je pagina bezoeken opnieuw instellen.

Misschien denk je dat je ze op deze manier een plezier aan het doen bent, maar ik ben bang dat je alleen het tegenovergestelde bereikt.

Ik zou dus voor de oplossing met relatieve fontgroottes gaan. Het is minder moeite om te maken, en bruikbaarder.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Compusmurf schreef op dinsdag 04 januari 2005 @ 15:47:
[...]


Ik gebruik versie 4.3.9 dus denk niet dat dit te oud is voor dit soort functies.
Zou je anders een stukje van je phpinfo() output kunnen laten zien? Ik zou het anders ook niet weten. Je zet deze cookies toch wel in dezelfde frame en niet in een iframe oid. IE kan daar nog wel eens problemen mee hebben, met sessies iig.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Je verhaal is niet helemaal duidelijk/compleet, maar volgens mij komt het omdat je je koekie pas zet bij je tweede pagina. Klopt dat?

Eigenlijk moet je dan nog een keer refreshen, omdat de cookie pas op het einde van de pagina gezet wordt. Je kunt dat anders doen door het cookie met javascript te zetten:

code:
1
document.cookie = "fontsize=10px";


Dan is die variabele wel bij je eerste refresh beschikbaar.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 04 januari 2005 @ 15:50:
Oudere mensen (die internetten? wauw) hebben waarschijnlijk toch al grote lettertypes ingesteld staan in hun browser.

Waarom moeten ze dus persé voor jouw site, in plaats van dat het meteen werkt, nog eerst door extra schermen heen gaan klikken zodat de fontgrootte in jouw site eindelijk óók goed werkt? En als hun computers zo ingesteld staan dat cookies niet geaccepteerd worden (default in IE6), dan werkt het òf nog eens niet, òf ze moeten het elke keer als ze je pagina bezoeken opnieuw instellen.

Misschien denk je dat je ze op deze manier een plezier aan het doen bent, maar ik ben bang dat je alleen het tegenovergestelde bereikt.

Ik zou dus voor de oplossing met relatieve fontgroottes gaan. Het is minder moeite om te maken, en bruikbaarder.
Als TS dat toch wil, zie zijn wij dan om dat tegen te spreken. En geen cookies is volgens mij niet de default in IE6.

Ik zou trouwens wel voor de optie zonder meerdere schermen gaan, maar dan een dropdown ergens in de layout verwerken en met een javascriptfunctie het cookie zetten en refreshen.

[ Voor 9% gewijzigd door Verwijderd op 04-01-2005 15:58 ]


Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Ik zet de cookie idd pas in de 2e pagina. Het gaat als volgt

Bezoeker gaat naar website,

index.php
cookie keuze (onclick setcookie.php)
refesh door setcookie.php
index.php ziet cookie en laat website zien.

klik op delcookie (onclick delcookie.php)
cookie verwijderd en refesh
index.php ziet cookie zou cookie niet moeten zien en dus nieuwe keuze.

Ik heb het ook ff in mozilla en firefox geprobeerd, daar werkt het script wel gewoon in. Dus lijkt toch op een IE bug ofzo

De php output.

Afbeeldingslocatie: http://www.xs4all.nl/~devriesm/phpinfo_tumb.gif

[ Voor 15% gewijzigd door Compusmurf op 04-01-2005 16:17 . Reden: Sorry dat ik geen tumb had gemaakt. is nu veranderd ]

http://Compusmurf.xs4all.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Je zult toch echt wat verder moeten testen, want met deze info kunnen wij ook niks. Maak bv eens een script dat alleen een cookie zet en vraag dat dan weer op. Bij de basis beginnen dus.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 04 januari 2005 @ 15:56:
[...]
Als TS dat toch wil, zie zijn wij dan om dat tegen te spreken.
Misschien. Maar het gebeurt volgens mij nogal vaak dat we hier een vraag krijgen[1] over een oplossingstrategie die niet helemaal blijkt te werken (en waar dan de fouten uitgevist moeten worden), terwijl een andere oplossingstrategie vaak beter zou zijn voor het probleem dat de vrager eigenlijk op wil lossen.

Het probleem is dat wij dat vaak niet weten (omdat de TS het er niet bij zegt), en dat de TS het zelf niet ziet omdat hij te diep in `zijn' probleem zit en het overzicht kwijt is.

Imho is het wel nodig om de vrager in zo'n geval op het bredere plaatje te wijzen. Als hij daarna niet wil luisteren is dat natuurlijk zijn zaak.


[1] En als niet hier in P&W is dan bij mij toch regelmatig via andere kanalen.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP is ondertussen lang geleden, maar moeten die berekeningen niet tussen haken?

time() - (3600 * 24 * xx)

ben er niet zeker van

Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Verwijderd schreef op dinsdag 04 januari 2005 @ 16:20:
[...]


Misschien. Maar het gebeurt volgens mij nogal vaak dat we hier een vraag krijgen[1] over een oplossingstrategie die niet helemaal blijkt te werken (en waar dan de fouten uitgevist moeten worden), terwijl een andere oplossingstrategie vaak beter zou zijn voor het probleem dat de vrager eigenlijk op wil lossen.

Het probleem is dat wij dat vaak niet weten (omdat de TS het er niet bij zegt), en dat de TS het zelf niet ziet omdat hij te diep in `zijn' probleem zit en het overzicht kwijt is.

Imho is het wel nodig om de vrager in zo'n geval op het bredere plaatje te wijzen. Als hij daarna niet wil luisteren is dat natuurlijk zijn zaak.


[1] En als niet hier in P&W is dan bij mij toch regelmatig via andere kanalen.
Ik vind dat jullie beide gelijk hebben. Het is misschien een betere oplossing die er werd aangekaart, maar het is ook leerzaam om het probleem op te lossen omdat het misschien in de toekomst wel nodig is. Dit draagt tevens bij aan een betere denkwijze.
Verwijderd schreef op dinsdag 04 januari 2005 @ 16:11:
Je zult toch echt wat verder moeten testen, want met deze info kunnen wij ook niks. Maak bv eens een script dat alleen een cookie zet en vraag dat dan weer op. Bij de basis beginnen dus.
Maar ik heb ook nog eventjes een scriptje geschreven. Dit werkt wel. Misschien dat het helpt en denk het wel want ga het zo ff toepassen op de website en kijken of het dan wel werkt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//----------------------------------------------------------------
if (!isset($_COOKIE['fontsize']))
{

echo "Cookie bestaat niet.";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<a href='index.php?cookie=setcookie'>setcookie</a>";
echo "<br>";
echo "<br>";
echo "<a href='index.php?cookie=delcookie'>delcookie</a>";
}

//----------------------------------------------------------------
if (isset($_COOKIE['fontsize']))
{

echo "Cookie bestaat wel.";
echo "<br>";
echo "<br>";
echo "<br>";
echo "<a href='index.php?cookie=setcookie'>setcookie</a>";
echo "<br>";
echo "<br>";
echo "<a href='index.php?cookie=delcookie'>delcookie</a>";
}

//----------------------------------------------------------------
if ($_GET['cookie'] == "setcookie")
{
$fontsize = $_GET['size'];
setcookie("fontsize", "12px", time()+3600*24*365);
echo "<br>";
echo "<br>";
echo "cookie gezet";
header("Location: index.php");

}

//----------------------------------------------------------------
if ($_GET['cookie'] == "delcookie")
{
$fontsize = $_GET['size'];
setcookie("fontsize","", time()-3600*24*365);
echo "<br>";
echo "<br>";
echo "cookie verwijderd";
header("Location: index.php");
}
?>

http://Compusmurf.xs4all.nl


Acties:
  • 0 Henk 'm!

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Verwijderd schreef op dinsdag 04 januari 2005 @ 15:54:
Je verhaal is niet helemaal duidelijk/compleet, maar volgens mij komt het omdat je je koekie pas zet bij je tweede pagina. Klopt dat?

Eigenlijk moet je dan nog een keer refreshen, omdat de cookie pas op het einde van de pagina gezet wordt. Je kunt dat anders doen door het cookie met javascript te zetten:

code:
1
document.cookie = "fontsize=10px";


Dan is die variabele wel bij je eerste refresh beschikbaar.
Je had idd gelijk, nu heb ik alles op 1 pagina zoals op de vorige post en werkt het perfect.

Iedereen tnkx voor de hulp.

http://Compusmurf.xs4all.nl

Pagina: 1