nando's idea seems to be cool in that cookie u can write a code which represents different CSS... changing the code... changes the CSS...
for the layout u can do different PHP pages like that and call one of them depending the layout set...
<?
function layOut1($aData,$nLength)
{
//aData is an array of what u have to write
//could be bigger u ought to think another solution....
//nLength is the length of the array...
?>
<!--thats the embedded html in the php function...-->
<body>
<table>
<?
//thats only an example how to organize yr layout...
for($i=0;$i<$nLength;$i++)
{
?>
<tr>
<td><? echo $aData[$i]; ?></td>
</tr>
<?
}
?>
</table>
</body>
<?
}
?>
the function layOut2 will be different but will have the same interface so u can choose which call...
these functions will be in a file to be included
<?
include("layouts.php");
if(condition)
layOut1($ciccio,5);
else
layOut2($ciccio,5);//same interfaces
?>
hope that could be useful and have a nice day...