anoniem Geplaatst: 23 mei 2004 Delen Geplaatst: 23 mei 2004 [code:1:03830731fd] $cookie_naam = "htb_opmaak"; if($_GET["opmaak"] != "") { setcookie("$cookie_naam", $_GET["opmaak"]); $style = $_COOKIE["$cookie_naam"]; } elseif(!$_COOKIE["$cookie_name"] && ($_GET["opmaak"] == "")) { $style = "heineken"; } else { $style = $_COOKIE["$cookie_naam"]; }[/code:1:03830731fd]In HTML > [code:1:03830731fd] <link rel="stylesheet" type="text/css" href="opmaak/<?php echo $style; ?>.css" />[/code:1:03830731fd] Als men de site binnenkomt, dan kom je binnen met de opmaak 'heineken'. Nu heb ik ook een opmaak, grolsch, en die kun je aanklikken met de volgende link[code:1:03830731fd]<p><a href="index.php?inhoud=opmaak_wissel&opmaak=grolsch">grolsch</a></p>[/code:1:03830731fd]Als je die aanklikt, dan zie je de grolsch opmaak. Maar als je dan een ander link aanklikt, dan zie je weer de heineken opmaak. Dit is uiteraard niet de bedoeling. De waarde 'grolsch' is toch opgelsagen in het cookie? waardoor het toch grolsch moet blijven totdat het weer in een link wordt gedefineerd? Online voorbeeld: http://htb.ath.cx Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 Je kan ook met sessies werken en de opmaak in een sessionvariabele opslaan. Enne zet die Grolsch als standaard. :wink: Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 [quote:96687d6284="Sjoerd Boerhout"]Je kan ook met sessies werken en de opmaak in een sessionvariabele opslaan. Enne zet die Grolsch als standaard. :wink:[/quote:96687d6284]eeh, en hoe doen we dat? :-? Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 Hier staat een uitleg: http://www.phpfreakz.nl/artikelen.php?aid=39&print=1 Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 Maar stel wil iemand altijd het grolsch achtergrond. Dan moet ie dat elke keer instellen. Dat is niet echt handig. Daarom zou ik het tcoh liever met cookies doen. Iemand een tip om de code ietstje te verbetern? Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 En als je nou wanneer iemand een andere stijl selecteerd die style in een cookie opslaat en als sessionvariabele aanmaakt. Wanneer iemand de site weer bezoekt lees je het cookie uit en zet je hem meteen als sessionvariabele. Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 mm, dat kan ik idd doen jah. Zal ff kijken. (als iemand een verbetering voor de code heeft, natuurlijk altijd welkom :D ) Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 [quote:bc1f8c5a43="Sjoerd Boerhout"]En als je nou wanneer iemand een andere stijl selecteerd die style in een cookie opslaat en als sessionvariabele aanmaakt. Wanneer iemand de site weer bezoekt lees je het cookie uit en zet je hem meteen als sessionvariabele.[/quote:bc1f8c5a43]En wat voor voordeel biedt dit? Het is alleen maar extra werk voor niets. [quote:bc1f8c5a43="Johnny321"][code:1:bc1f8c5a43] setcookie("$cookie_naam", $_GET["opmaak"]); $style = $_COOKIE["$cookie_naam"]; [/code:1:bc1f8c5a43][/quote:bc1f8c5a43]Dit kan niet. Met setcookie wordt een cookie gezet, door dit in de header te zetten (er mag dus nog niets verstuurd zijn). Bij de volgende request is het pas beschikbaar in de $_COOKIE-array, dus niet direct. -Rémy Quote Link naar reactie
anoniem Geplaatst: 23 mei 2004 Auteur Delen Geplaatst: 23 mei 2004 Kweet niet of je de site gezien hebt, maar het is meer het probleem dat de cookie (volgens mij) maar een keer uitgelezen wordt, en daarna terug gaat naar het heineken opmaak. Probeer maar es de opmaak 'grolsch' uit; dan zie je dat die een keer verschijnt, en na het aanklikken van een link (maakt niet uit welke) dat 'ie dan weer teruggaat naar de heineken opmaak. Quote Link naar reactie
anoniem Geplaatst: 24 mei 2004 Auteur Delen Geplaatst: 24 mei 2004 Ik heb 't ff met Mozilla gecontroleerd, de cookie wordt juist weggeschreven. Wat wel een probleem is, is dat de nieuwe stijl maar tijdelijk wordt toegepast, maar dat is al eerder gezegd. Hieronder ook een aangepaste code, let vooral op de opmerking van Rémy, dat voorkomt een hoop fouten. Daarnaast moet je beter met aanhalingstekens leren werken...[code:1:6c30e4600d]// Cookie naam definieren $cookie_naam = "htb_opmaak"; // Controle op variabelen in de URI if($_GET["opmaak"] != ""){ setcookie($cookie_naam, $_GET["opmaak"]); $style = $_GET["opmaak"]; // Geen variabele via URI, wellicht al eentje in cookie? }elseif($_COOKIE[$cookie_name] != ""){ $style = $_COOKIE[$cookie_name]; // Geen variabele via URI of cookie: standaard waarde }else{ setcookie($cookie_naam, "heineken"); $style = "heineken"; }[/code:1:6c30e4600d]Zoiets zal het moeten zijn, echter niet getest. - Bas Quote Link naar reactie
anoniem Geplaatst: 24 mei 2004 Auteur Delen Geplaatst: 24 mei 2004 Zal et proberen, alvast bedankt. [edit] Ook deze werkt niet :(, heb em inmiddels in de site geimpleteerd. Nog een ingeving toevallig? Quote Link naar reactie
anoniem Geplaatst: 24 mei 2004 Auteur Delen Geplaatst: 24 mei 2004 ahum [code:1:beda9fba24] }elseif($_COOKIE[$cookie_name] != ""){ $style = $_COOKIE[$cookie_name];[/code:1:beda9fba24] $cookie_name?? $cookie_naam!! Typfout van mezelf, m'n excuus. Nu werkt het wel :oops: Quote Link naar reactie
anoniem Geplaatst: 24 mei 2004 Auteur Delen Geplaatst: 24 mei 2004 Ik heb even gekeken, en het werkt ook hier! ;) Nog ff een vraagje: heb je mijn versie gebruikt of je eigen versie? (Just wondering...) - Bas Quote Link naar reactie
anoniem Geplaatst: 24 mei 2004 Auteur Delen Geplaatst: 24 mei 2004 [quote:3f8411b6da="Johnny321"]Typfout van mezelf, m'n excuus. Nu werkt het wel :oops:[/quote:3f8411b6da]:lol:, had er ook over heen gelezen. Misschien nog een opmerking. Ik zou zelf de code bijv. als volgt schrijven: [code:1:3f8411b6da]// check if style is in cookie $style = !empty($_COOKIE['style']) ? $_COOKIE['style'] : 'heineken'; // check if style is in URI $style = !empty($_GET['style']) ? $_GET['style'] : 'heineken'; // check if style exist and set cookie switch($style) { case 'grolsh': setcookie('style', 'grolsh'); break; case 'heineken': setcookie('style', 'heineken'); break; default: // if wrong style is given setcookie('style', 'heineken'); $style = 'heineken'; }[/code:1:3f8411b6da]Dit vind ik zelf (maar wie ben ik) een stuk duidelijker, simpeler en de verschillende taken/acties zijn gescheiden. Ook wordt nu gecontroleerd of de style wel kan (zo niet dan krijg je de default waarde), zodat er geen mogelijke hacks gedaan kunnen worden of foutmeldingen te zien zijn (stel ik doe bavaria in de querystring). Ook heb ik die $cookie_naam verwijdert, want dit heeft geen nut: is het nodig dat een cookievariabele van naam kan veranderen? Dat lijkt mij niet. Misschien dat je dit in de ontwikkelingsfase nog wilt aanpassen, maar dan zou ik search&replace gebruiken in je editor. Het enige is dat er nu elke keer een cookie wordt geschreven met mijn code..., maar dit zou ik nog kunnen aanpassen als dat in de performance scheelt (maar dit is gewoon een ongetest voorbeeldje van hoe ik het zou doen ;)). -Rémy Quote Link naar reactie
anoniem Geplaatst: 25 mei 2004 Auteur Delen Geplaatst: 25 mei 2004 [quote:c4165af0b5="BasHamar"]Ik heb even gekeken, en het werkt ook hier! ;) Nog ff een vraagje: heb je mijn versie gebruikt of je eigen versie? (Just wondering...) - Bas[/quote:c4165af0b5]Jouw versie, m'n eigen werkte ondanks alles ook niet. [quote:c4165af0b5="Remytje"][quote:c4165af0b5="Johnny321"]Typfout van mezelf, m'n excuus. Nu werkt het wel :oops:[/quote:c4165af0b5]:lol:, had er ook over heen gelezen. Misschien nog een opmerking. Ik zou zelf de code bijv. als volgt schrijven: [code:1:c4165af0b5]// check if style is in cookie $style = !empty($_COOKIE['style']) ? $_COOKIE['style'] : 'heineken'; // check if style is in URI $style = !empty($_GET['style']) ? $_GET['style'] : 'heineken'; // check if style exist and set cookie switch($style) { case 'grolsh': setcookie('style', 'grolsh'); break; case 'heineken': setcookie('style', 'heineken'); break; default: // if wrong style is given setcookie('style', 'heineken'); $style = 'heineken'; }[/code:1:c4165af0b5]Dit vind ik zelf (maar wie ben ik) een stuk duidelijker, simpeler en de verschillende taken/acties zijn gescheiden.[/quote:c4165af0b5]mm, stel ik heb 300 verschillende styles.... dan krijg je een hele lange switch, ben ik niet kapot van.[quote:c4165af0b5="Remytje"]Ook wordt nu gecontroleerd of de style wel kan (zo niet dan krijg je de default waarde), zodat er geen mogelijke hacks gedaan kunnen worden of foutmeldingen te zien zijn (stel ik doe bavaria in de querystring).[/quote:c4165af0b5]Dan wordt de naam van de opmaak 'bavaria.css', dan heb je dus gewoon een kale pagina, 'k zie niet in wat voor enorm beveiligingslek hierdoor zou krijgen[quote:c4165af0b5="Remytje"]Ook heb ik die $cookie_naam verwijdert, want dit heeft geen nut: is het nodig dat een cookievariabele van naam kan veranderen? Dat lijkt mij niet. Misschien dat je dit in de ontwikkelingsfase nog wilt aanpassen, maar dan zou ik search&replace gebruiken in je editor. [/quote:c4165af0b5]Heb je op zich gelijk in, maar ik vind het zo makkelijker werken [quote:c4165af0b5="Remytje"]Het enige is dat er nu elke keer een cookie wordt geschreven met mijn code..., maar dit zou ik nog kunnen aanpassen als dat in de performance scheelt (maar dit is gewoon een ongetest voorbeeldje van hoe ik het zou doen ;)). -Rémy[/quote:c4165af0b5] Quote Link naar reactie
anoniem Geplaatst: 25 mei 2004 Auteur Delen Geplaatst: 25 mei 2004 [code:1:9e6a4f9429]// check if style is in cookie $style = !empty($_COOKIE['style']) ? $_COOKIE['style'] : 'heineken';[/code:1:9e6a4f9429]Dat is toch de verkorte 'if-notatie'? Daar ben ik nog niet zo goed in, dus dat doe ik eerst nog niet :oops: Quote Link naar reactie
anoniem Geplaatst: 25 mei 2004 Auteur Delen Geplaatst: 25 mei 2004 [quote:f200c8a61a="Johnny321"][code:1:f200c8a61a]// check if style is in cookie $style = !empty($_COOKIE['style']) ? $_COOKIE['style'] : 'heineken';[/code:1:f200c8a61a]Dat is toch de verkorte 'if-notatie'? Daar ben ik nog niet zo goed in, dus dat doe ik eerst nog niet :oops:[/quote:f200c8a61a] Dat is anders best een leuk iets om mee te werken hoor. if-voorwaarde ? <doe dit when true> : <doe dit when false>; Voorbeeld: int i = 5; ( i > 10 ) ? " i = groter dan 10" : "i = niet groter dan 10"; Quote Link naar reactie
anoniem Geplaatst: 26 mei 2004 Auteur Delen Geplaatst: 26 mei 2004 [quote:df41f26a5d="Johnny321"]mm, stel ik heb 300 verschillende styles.... dan krijg je een hele lange switch, ben ik niet kapot van.[/quote:df41f26a5d]Maar bij 300 styles zou ik ook geen switch gebruiken, dan zou ik het anders oplossen ;). [quote:df41f26a5d="Johnny321"]Dan wordt de naam van de opmaak 'bavaria.css', dan heb je dus gewoon een kale pagina, 'k zie niet in wat voor enorm beveiligingslek hierdoor zou krijgen[/quote:df41f26a5d]Misschien dat dit geen enorm beveiligingslek is, maar als je een waarde krijgt die je niet verwacht, dan klopt er iets niet. Of jij hebt dan iets fout gedaan of een gebruiker geeft express een verkeerde waarde op (en dat is meestal niet met goede bedoelingen). Omdat je hierop controleert kan je een logmelding laten maken zodra dit gebeurt, zodat je kan bepalen wat er aan de hand is (mogelijke hacker\foutje van jou). Dit zal voor een site zoals jouw niet veel uitmaken, maar stel dat je een site voor een bank aan het programmeren bent. Dan wil ik dit soort info wel weten ;). -Rémy Quote Link naar reactie
anoniem Geplaatst: 26 mei 2004 Auteur Delen Geplaatst: 26 mei 2004 [quote:73ad439a8f="Sjoerd Boerhout"][quote:73ad439a8f="Johnny321"][code:1:73ad439a8f]// check if style is in cookie $style = !empty($_COOKIE['style']) ? $_COOKIE['style'] : 'heineken';[/code:1:73ad439a8f]Dat is toch de verkorte 'if-notatie'? Daar ben ik nog niet zo goed in, dus dat doe ik eerst nog niet :oops:[/quote:73ad439a8f] Dat is anders best een leuk iets om mee te werken hoor. if-voorwaarde ? <doe dit when true> : <doe dit when false>; Voorbeeld: int i = 5; ( i > 10 ) ? " i = groter dan 10" : "i = niet groter dan 10";[/quote:73ad439a8f]mm, ben er nog steeds niet kapot van.[quote:73ad439a8f="Remytje"][code:1:73ad439a8f]{ case 'grolsh': setcookie('style', 'grolsh'); break; case 'heineken': setcookie('style', 'heineken'); break; default: // if wrong style is given setcookie('style', 'heineken'); $style = 'heineken'; }[/code:1:73ad439a8f][/quote:73ad439a8f] dat 'default', wordt die actie dus altijd gedaan als er niet aan de 'cases' wordt voldaan? Ik was deze optie van 'switch' nog niet eerder tegengekomen. Quote Link naar reactie
anoniem Geplaatst: 26 mei 2004 Auteur Delen Geplaatst: 26 mei 2004 [quote:df66215bcd="Johnny321"]dat 'default', wordt die actie dus altijd gedaan als er niet aan de 'cases' wordt voldaan?[/quote:df66215bcd]Ja. - Bas Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen