Home  |  Linux  | Mysql  | PHP  | XML
From:Ashley Sheridan Date:Mon Feb  8 08:10:33 2010
Subject:Re: php selecting multiple stylesheets
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



Navigate in group php.general at sever news.php.net
Previous Next


Your recent visits
Re: RE: [PHP] removing an array from a compound array
Re: [PHP] Re: PHP 5.3.0 Released!
Re: [PHP] exasperated again
Re: [PHP] php selecting multiple stylesheets
Re: [PHP] php selecting multiple stylesheets



  
© No Copyright
You are free to use Anything, but please consult your advocate before doing so as this website
also list content from other sources which may be copyrighted.
Site Maintained by Zareef Ahmed
Powered By PHP Consultants