On Sun, 2010-02-07 at 23:45 -0500, Paul M Foster wrote: > On Sun, Feb 07, 2010 at 11:20:18PM -0500, David Mehler wrote: > > > Hello, > > I'm trying to set up a web site. This site has multiple stylesheets, > > one default stylesheet that should be used if the other is not chosen. > > The second is a high contrast stylesheet and can be selected by user's > > who need it. I'm also thinking of adding two more for smaller and > > larger font selections. My issue is I want the high contrast sheet to > > be used on all subsequent pages and on subsequent visits to the site > > by user's who have selected it. I thought of using php with this and > > cookies. I'm using php5 and would appreciate any suggestions, googling > > has shown some examples, but none are working. > > Thanks. > > Dave. > > There are two main PHP-centric solutions to this. First is cookies (as > you described) and the second is using the $_SESSION global array. > > Doing this is relatively straightforward, so if it's not working for > you, I see two possibilities: 1) You're not actually doing it right. 2) > The users isn't pressing the "Reload" button after selecting the > stylesheet. (My experience has been that simply redisplaying a page will > not clear the cached CSS styles for that page. You must hit the "Reload" > button. In fact, in some cases, like offices with caching webservers or > proxies, an admin will have to be called in to clear the cache on the > proxy/server as well.) > > You should be able to do something like this (I'm using SESSION > variables because cookies are more complicated): > > <?php > // Top of page > session_start(); > > if ($_SESSION['stylesheet'] == 'enlarged_print') > $css = 'enlarged_print.css'; > else > ... > > ?> > <html> > ... > <link href="<?php echo $css; ?>" rel="stylesheet" type="text/css"/> > ... > </html> > > Paul > > -- > Paul M. Foster > I'm doing this on my own site, and it works like this: The stylesheets are output in <a> tags, so that a user can click on one to select a style, refreshing the page. In the header include, I check first to see if a new style was sent in the $_GET array, then the $_SESSION array, then finally to see if there is a stylesheet entry in the $_COOKIES array. If none is found, a default is assumed, and I write this value to both the $_SESSION and $_COOKIES array. By checking them in the order above, it lets a user pick a new one from a link, and will remember their choice throughout their current session and any subsequent visits to the site. As all the stylesheets are included in the pages with the correct <link> tags anyway, anyone with a compatible browser (Firefox, Opera, etc) can select the style from a drop menu directly in the browser, although it's better to use the links, as the browser doesn't remember the choice from page to page. Thanks, Ash http://www.ashleysheridan.co.uk