Ga naar inhoud

[php] style switcher


Aanbevolen berichten

[url]http://members.lycos.nl/djamn/juliussteiner/index.php[/url] Dat is de uri waar het probleem om gaat. Op de site wordt de mogelijkheid aangeboden te kiezen tussen twee verschillende stijlbladen, eentje met grote letters en eentje met kleine letters. Het is de bedoeling dat als je op een link klikt (groot, klein) dat dan het andere stijlblad erinkomt en dat dit eventueel wordt opgeslagen in een cookie. Misschien is het zelfs ook genoeg om het gewoon te kunnen veranderen voor een eenmalig bezoek. Ik zou graag willen dat op elke pagina waar iemand komt hij de lettergrootte makkelijk kan veranderen, zonder dat hij terug wordt gestuurd naar home. Hieronder plaats ik even de code die ik nu heb. [b:9b9ef2e2d9]index.php[/b:9b9ef2e2d9][code:1:9b9ef2e2d9]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl"> <!-- resultaten van het testen met browsers kunt u vinden op http://members.lycos.nl/djamn/juliussteiner/index.php?id=8 --> <!-- ie5.0 bug gemaakt met uitzondering van het attribuut border bij de hyperlinks --> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php if($id == ""){$title = home;} elseif($id == 2){$title = biografie;} elseif($id == 3){$title = werk;} elseif($id == 4){$title = links;} elseif($id == 5){$title = contact;} else{$title = disclaimer;} ?> <title>julius steiner | <?php echo("$title"); ?></title> <link rel="stylesheet" href="<?php if(isset($_COOKIE['sitestyle'])){print trim($_COOKIE['sitestyle']);}else{print "css/base";}?>.css" /> <link rel="stylesheet" type="text/css" href="css/form.css" /> </head> <body> <div id="center"> <div id="logo"></div><!-- eigenlijk mag het niet als iemand een betere oplossing heeft die werkt, mail plz --> <div id="content"> <div class="nav" id="navinhoud"> <a accesskey="h" href="index.php"<?php if($id == ""){ echo(' id="current"');} ?>>home</a> <a accesskey="b" href="index.php?id=2"<?php if($id == 2){ echo(' id="current"');} ?>>biografie</a> <a accesskey="w" href="index.php?id=3"<?php if($id == 3){ echo(' id="current"');} ?>>werk</a> <a accesskey="l" href="index.php?id=4"<?php if($id == 4){ echo(' id="current"');} ?>>links</a> <a accesskey="c" href="index.php?id=5"<?php if($id == 5){ echo(' id="current"');} ?>>contact</a> </div> <?php switch($id){ case "2": $file="biografie";break; case "3": $file="werk";break; case "4": $file="links";break; case "5": $file="contact";break; case "6": $file="disclaimer";break; case "7": $file="sitemap";break; case "8": $file="browsersupport";break; default : $file="home"; } include("content/{$file}.php"); ?> <div class="nav" id="navalgemeen"> <a accesskey="d" href="index.php?id=6"<?php if($id == 6){ echo(' id="current"');} ?>>disclaimer</a> <a acceskey="k" href="switcher.php?set=css/base&ref=index.php?id=<?php print $_GET['id'] ?>">klein</a> <a acceskey="g" href="switcher.php?set=css/basebigger&ref=index.php?id=<?php print $_GET['id'] ?>">groot</a> <a accesskey="s" href="index.php?id=7"<?php if($id == 7){ echo(' id="current"');} ?>>sitemap</a> </div> </div> </div> </body> </html>[/code:1:9b9ef2e2d9][b:9b9ef2e2d9]switcher.php[/b:9b9ef2e2d9][code:1:9b9ef2e2d9]<?php // This array lists the "acceptable" styles $accept = array('css/base','css/basebigger'); // Get style from a query string (e.g. from a link), // or from a form. if(isset($_REQUEST['set'])){ $style = trim(strip_tags($_REQUEST['set'])); } else if(isset($_POST['set'])){ $style = trim(strip_tags($_POST['set'])); } else { // Unknown request $style = false; } // Check if the requested stylesheet is "acceptable" if(($style !== false) && (in_array($style, $accept))){ setcookie("sitestyle", $style, time()+31536000, '/', 'http://www.lycos.nl/', '0'); } if(isset($_REQUEST['ref']) || (isset($_POST['ref']))){ if(isset($_REQUEST['ref'])){ $ref = $_REQUEST['ref']; } header("Location: $ref"); exit; } else if(isset($_SERVER['HTTP_REFERER'])){ // Send the user back to the refering page header("Location: ". $_SERVER['HTTP_REFERER']); exit; } else { // No HTTP referrer, send them back to the home page header("Location: http://members.lycos.nl/djamn/juliussteiner/index.php"); exit; } ?>[/code:1:9b9ef2e2d9]Ik hoop dat ik het zo duidelijk heb uitgelegd. -termin8or
Link naar reactie
Als ik de opbouw van je site een beetje door heb dan heeft het niet zoveel zin om in de link naar de styleswitcher de PHP_SELF mee te sturen aangezien deze altijd gelijk zal zijn. Zinvoller is het dus om de id mee te sturen zoals je ook doet in de linkjes in je navigatiebalk. De redirectheader is dan gewoon naar index.php?id=XX. Verder zie ik in je code (na een snelle scan) wat slordigheden: [list:5cdd8027a4] [*:5cdd8027a4]Het 5e argument van setcookie is een [i:5cdd8027a4]domain[/i:5cdd8027a4]. En dat is dus geen volledige URI (meer info bijvoorbeeld [url=http://www.cookiecentral.com]hier[/url]) [*:5cdd8027a4]Bij de check of de [i:5cdd8027a4]ref[/i:5cdd8027a4] is meegegeven in de querystring controleer je zowel de $_REQUEST als de $_POST superglobals. De $_REQUEST is voldoende aangezien deze ook de $_POST omvat (tenzij je dit in de configuratie van PHP hebt aangepast). Waarschijnlijk bedoel je $_GET en $_POST. [/list:u:5cdd8027a4] Overigens heb je helemaal geen styleswitcher script nodig. De functionaliteit kan ook ingebouwd worden in de pagina's zelf. Bij aanroep van de pagina controleer je of er een keuze is gemaakt voor een style. Zo ja, dan zet je een koekje weg en voeg je de stylesheet in. Zo niet, controleer of er een cookie bestaat en gebruik de waarde daaruit, bij geen cookie gebruik je de default waarde.
Link naar reactie
Bedankt voor je snelle reactie. Ik heb er naar gekeken wat je allemaal zei, maar veel dingen zijn mij nog niet geheel helder aangezien ik niet zo erg sterk ben in php. De dingetjes met de hyperlinks en de bestandjes includen vond ik niet zo heel moeilijk om zelf te doen, maar dit script heb ik geleend en geleerd van twee site:[list:f582b2ebc4][*:f582b2ebc4][url]http://www.contrastsweb.com/switcher/[/url] [*:f582b2ebc4][url]http://www.alistapart.com/stories/phpswitch/[/url][/list:u:f582b2ebc4] [quote:f582b2ebc4="Annie"]De redirectheader is dan gewoon naar index.php?id=XX.[/quote:f582b2ebc4]Dit heb ik geprobeerd en ook boven in de code aangepast (en upgeload) ik heb alleen nog niet het gevoel dat het werkt.[quote:f582b2ebc4]Het 5e argument van setcookie is een [i:f582b2ebc4]domain[/i:f582b2ebc4]. En dat is dus geen volledige URI[/quote:f582b2ebc4]Klopt dat nu wel?[quote:f582b2ebc4]De $_REQUEST is voldoende aangezien deze ook de $_POST omvat[/quote:f582b2ebc4]die heb ik nu weggehaald.[quote:f582b2ebc4]Overigens heb je helemaal geen styleswitcher script nodig. De functionaliteit kan ook ingebouwd worden in de pagina's zelf. Bij aanroep van de pagina controleer je of er een keuze is gemaakt voor een style. Zo ja, dan zet je een koekje weg en voeg je de stylesheet in. Zo niet, controleer of er een cookie bestaat en gebruik de waarde daaruit, bij geen cookie gebruik je de default waarde.[/quote:f582b2ebc4]Graag zou ik willen weten hoe je zoiets doet of waar ik hier meer informatie over kan vinden. Ik heb namelijk wel een keer zoiets gevonden. Het enige probleem was dat die werkte op een session id en ik daardoor validatie problemen kreeg bij het w3. -termin8or
Link naar reactie
lycos is down, maar na veel moeite heb ik een nieuwe host gevonden voor de laatste week dat ik nog niet ga betalen: [url=http://djamn.coolfreepages.com/index.php][/url]. deze host is trouwens erg traag met ftp. De code heb ik radicaal veranderd aan de hand van een ander ala-artikel wat me handiger leek, er zitten nu alleen nog wel de nodige sucurity bugs in die ik er ga uithalen, maar hij doet het wel. [b:75c0daeb83]index.php[/b:75c0daeb83][code:1:75c0daeb83]<?php if ($stylecookie == "") { $css="base"; } else { $css=$stylecookie; } Header ("Location:http://djamn.coolfreepages.com/site.php?page=home&css=$css"); ?>[/code:1:75c0daeb83][b:75c0daeb83]site.php[/b:75c0daeb83][code:1:75c0daeb83]<?php setcookie ("stylecookie", $css, time()+40000000); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl"> <!-- resultaten van het testen met browsers kunt u vinden op http://djamn.coolfreepages.com/site.php?page=browsersupport&css=base --> <!-- ie5.0 bug gemaakt met uitzondering van het attribuut border bij de hyperlinks --> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>julius steiner | <?php echo("$page"); ?></title> <link rel="stylesheet" type="text/css" href="css/<?php echo("$css") ?>.css" media="screen" /> <link rel="stylesheet" type="text/css" href="css/baseprint.css" media="print" /> <link rel="stylesheet" type="text/css" href="css/form.css" media="screen" /> </head> <body> <div id="center"> <div id="logo"> <img src="images/logo/pasfoto.jpg" alt="Julius Steiner" title="Julius Steiner" height="78" width="58" id="pasfoto" /> </div> <div id="content"> <div class="nav" id="navinhoud"> <a accesskey="h" href="site.php?page=home&css=<?php echo("$css") ?>"<?php if($page == "home"){ echo(' id="current"');} ?>>home</a> <a accesskey="b" href="site.php?page=biografie&css=<?php echo("$css") ?>"<?php if($page == "biografie"){ echo(' id="current"');} ?>>biografie</a> <a accesskey="w" href="site.php?page=werk&css=<?php echo("$css") ?>"<?php if($page == "werk"){ echo(' id="current"');} ?>>werk</a> <a accesskey="l" href="site.php?page=links&css=<?php echo("$css") ?>"<?php if($page == "links"){ echo(' id="current"');} ?>>links</a> <a accesskey="c" href="site.php?page=contact&css=<?php echo("$css") ?>"<?php if($page == "contact"){ echo(' id="current"');} ?>>contact</a> </div> <?php include("content/$page.php"); ?> <div class="nav" id="navalgemeen"> <a accesskey="d" href="site.php?page=disclaimer&css=<?php echo("$css") ?>"<?php if($page == "disclaimer"){ echo(' id="current"');} ?>>disclaimer</a> <a accesskey="k" href="site.php?page=<?php echo("$page") ?>&css=base">klein</a> <a accesskey="g" href="site.php?page=<?php echo("$page") ?>&css=basebigger">groot</a> <a accesskey="s" href="site.php?page=sitemap&css=<?php echo("$css") ?>"<?php if($page == "sitemap"){ echo(' id="current"');} ?>>sitemap</a> </div> </div> </div> </body> </html>[/code:1:75c0daeb83] ik geloof dat het nu werkt, ik ga dit weekend hem nog even aanpassen. sucurity bugs fixen, maar als iemand nog suggesties heeft graag.[quote:75c0daeb83="Bas"]Even los van je probleem: als je echo() of print() gebruikt is het verstandiger om variabelen buiten de quotes te halen, aangezien dit de performance nogal ten goede komt.[/quote:75c0daeb83]dus zonder ( en ) maar met " ? -termin8or
Link naar reactie
[quote:5df06c9948="termin8or"]dus zonder ( en ) maar met " ?[/quote:5df06c9948]Nee, het volgende [code:1:5df06c9948]$naam1 = "BasHamar"; $naam2 = "termin8or"; echo "Mijn naam is $naam1 en ik reageer op $naam2"; // Traag, niet zo doen... echo "Mijn naam is ".$naam1." en ik reageer op ".$naam2; // ... maar zo. /* * Het maakt niet uit of je echo() of print() gebruikt, en de haakjes () mogen, maar hoeven niet. */[/code:1:5df06c9948]- Bas
Link naar reactie
In NS/Moz kan je ook in de browser zelf kiezen voor een stylesheet (View >> Use Style) als je deze opgeeft in de html, bijv: [code:1:42ecf597b6] <link rel="alternate stylesheet" title="naampie" href="style2.css" type="text/css" media="screen" /> [/code:1:42ecf597b6] Weet zo even niet hoe de ondersteuning in andere browsers is.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...