The real world situation is simple as this: all the CSS is saved to a session variable. That session variable is then echoed inside of a stylesheet and naturally it should style the page. You can test the desired functionality by using the following echo on line 8 in the index.php file to emulate what a correctly functioning linked style sheet will look like once it's working.
Code: Select all
<?php echo $_SESSION['css'];?>index.php
Code: Select all
<?php include("header.php");?>
<html>
<head>
<title>Test Page</title>
<link href="style.css.php?sid=<?php echo session_id();?>" media="screen" rel="stylesheet" title="Classic Theme" type="text/css" />
<style type="text/css">
/* just to format below */
form div {background-color: #000; color: #fff; float: left; margin: 0px 4px 0px 0px; width: 140px;}
input {width: 140px;}
</style>
</head>
<body>
<?php
function validate_clientside_array($regex, $position)
{
$item = '/'.$position.'$/';
foreach($_POST as $key => $value)
if (preg_match($item, $key))
{
if (!preg_match($regex, $value)) {return 'invalid';}
}
}
$regex_0_selectors = '/([0-9A-z]([#|.|,|:][0-9A-z]){0,10})?$/';
$regex_1_colors = '/^(?:(?:[0-9a-f]{3}){1,2}|transparent)?$/';
$regex_2_bgimages = '/^(([0-9]{2})\/([0-9]{3})|none)?$/';
if (validate_clientside_array($regex_0_selectors,'0') != 'invalid' && validate_clientside_array($regex_1_colors,'1') != 'invalid' && validate_clientside_array($regex_2_bgimages,'2') != 'invalid' && validate_clientside_array($regex_1_colors,'3') != 'invalid' && validate_clientside_array($regex_1_colors,'4') != 'invalid')
{$data = '<b style="color: #0f0;">valid, I smell n0 haxorz</b>';}
else {$data = '<b style="color: #f00;">haxorz? denied!</b>';}
echo '=== '.$data.' ==== <br />';
?>
<form action="index.php" method="post">
<fieldset>
<div>selector</div>
<div>background-color</div>
<div>background-image</div>
<div>border-color</div>
<div>(text) color</div>
<br />
<input id="ce00" name="ce00" type="text" value="#welcome, #content div.border, #content div.bordernorc, #prompts div.scroll, #prompts #promptstabs div.current" />
<input id="ce01" name="ce01" type="text" value="1155ff" />
<input id="ce02" name="ce02" type="text" value="11/002" />
<input id="ce03" name="ce03" type="text" value="ff00ff" />
<input id="ce04" name="ce04" type="text" value="0000ff" />
<br />
<input id="ce10" name="ce10" type="text" value="#body, #prompts" />
<input id="ce11" name="ce11" type="text" value="1155ff" />
<input id="ce12" name="ce12" type="text" value="11/002" />
<input id="ce13" name="ce13" type="text" value="ff00ff" />
<input id="ce14" name="ce14" type="text" value="0000ff" />
<br />
<input id="ce20" name="ce20" type="text" value="body, html" />
<input id="ce21" name="ce21" type="text" value="1155ff" />
<input id="ce22" name="ce22" type="text" value="11/002" />
<input id="ce23" name="ce23" type="text" value="ff00ff" />
<input id="ce24" name="ce24" type="text" value="0000ff" />
<br />
<input id="ce30" name="ce30" type="text" value="#content div.border div.border div.border, #head, #prompts #promptsbuttons, #prompts #promptstabs, #prompts #promptstabs div, #side div.inset, #side h2, #side form, div.footer, div.header, table tfoot, table thead, table tbody tr" />
<input id="ce31" name="ce31" type="text" value="1155ff" />
<input id="ce32" name="ce32" type="text" value="11/002" />
<input id="ce33" name="ce33" type="text" value="ff00ff" />
<input id="ce34" name="ce34" type="text" value="0000ff" />
<br />
<input id="ce40" name="ce40" type="text" value="#bottom, #top" />
<input id="ce41" name="ce41" type="text" value="1155ff" />
<input id="ce42" name="ce42" type="text" value="11/002" />
<input id="ce43" name="ce43" type="text" value="ff00ff" />
<input id="ce44" name="ce44" type="text" value="0000ff" />
<br />
<input id="ce50" name="ce50" type="text" value="h1" />
<input id="ce51" name="ce51" type="text" value="1155ff" />
<input id="ce52" name="ce52" type="text" value="11/002" />
<input id="ce53" name="ce53" type="text" value="ff00ff" />
<input id="ce54" name="ce54" type="text" value="0000ff" />
<br />
<input id="ce60" name="ce60" type="text" value="#prompts h2, h2, h3, h4, h5, h6" />
<input id="ce61" name="ce61" type="text" value="1155ff" />
<input id="ce62" name="ce62" type="text" value="11/002" />
<input id="ce63" name="ce63" type="text" value="ff00ff" />
<input id="ce64" name="ce64" type="text" value="0000ff" />
<br />
<input id="ce70" name="ce70" type="text" value="#content a:link, #side a:link, #promptsajax div.scroll a:link, #promptsajax div.noscroll a:link" />
<input id="ce71" name="ce71" type="text" value="1155ff" />
<input id="ce72" name="ce72" type="text" value="11/002" />
<input id="ce73" name="ce73" type="text" value="ff00ff" />
<input id="ce74" name="ce74" type="text" value="0000ff" />
<br />
<input id="ce80" name="ce80" type="text" value="#content a:link:hover, #side a:link:hover, #promptsajax div.scroll a:link:hover, #promptsajax div.noscroll a:hover, #side div.inset div.scroll a:hover, #content a:link:focus, #side a:link:focus, #promptsajax div.scroll a:link:focus, #promptsajax div.noscroll a:focus, #side div.inset div.scroll a:focus" />
<input id="ce81" name="ce81" type="text" value="1155ff" />
<input id="ce82" name="ce82" type="text" value="11/002" />
<input id="ce83" name="ce83" type="text" value="ff00ff" />
<input id="ce84" name="ce84" type="text" value="0000ff" />
<br />
<input id="ce90" name="ce90" type="text" value="#content a:link:visited, #side a:link:visited, #promptsajax div.scroll a:link:visited, #promptsajax div.noscroll a:visited, #side div.inset div.scroll a:visited" />
<input id="ce91" name="ce91" type="text" value="1155ff" />
<input id="ce92" name="ce92" type="text" value="11/002" />
<input id="ce93" name="ce93" type="text" value="ff00ff" />
<input id="ce94" name="ce94" type="text" value="0000ff" />
<br />
<input id="ce100" name="ce100" type="text" value="#menua1, #menua2, #menua3, #menua4, #menua5, #menua6, #menua7, #menua8, #menua9, a.menuaa, a.tools, #toola1, #toola2, div.list div, #sidetoggle a, #sidetoggle div, #prompts #promptsbuttons div a, #prompts #promptstabs div a" />
<input id="ce101" name="ce101" type="text" value="1155ff" />
<input id="ce102" name="ce102" type="text" value="11/002" />
<input id="ce103" name="ce103" type="text" value="ff00ff" />
<input id="ce104" name="ce104" type="text" value="0000ff" />
<br />
<input id="ce110" name="ce110" type="text" value="#menua1 a:hover, #menua2 a:hover, #menua3 a:hover, #menua4 a:hover, #menua5 a:hover, #menua6 a:hover, #menua7 a:hover, #menua8 a:hover, #menua9 a:hover, #menua1 a:focus, #menua2 a:focus, #menua3 a:focus, #menua4 a:focus, #menua5 a:focus, #menua6 a:focus, #menua7 a:focus, #menua8 a:focus, #menua9 a:focus, a.menuaa:hover, a.tools:hover, #toola1:hover, #toola2:hover, div.list div:hover, #sidetoggle a:hover, #sidetoggle div:hover, a.menuaa:focus, a.tools:focus, #toola1:focus, #toola2:focus, div.list div:focus, #sidetoggle a:focus, #sidetoggle div:focus, #prompts #promptsbuttons a:focus, #prompts #promptsbuttons a:hover" />
<input id="ce111" name="ce111" type="text" value="1155ff" />
<input id="ce112" name="ce112" type="text" value="11/002" />
<input id="ce113" name="ce113" type="text" value="ff00ff" />
<input id="ce114" name="ce114" type="text" value="0000ff" />
<br />
<input id="ce120" name="ce120" type="text" value="#menua1:visited, #menua2:visited, #menua3:visited, #menua4:visited, #menua5:visited, #menua6:visited, #menua7:visited, #menua8:visited, #menua9:visited, a.menuaa:visited, a.tools:visited, #toola1:visited, #toola2:visited, div.list div:visited, #sidetoggle a:visited, #sidetoggle div:visited, #prompts #promptsbuttons div a:visited, #prompts #promptstabs div a:visited" />
<input id="ce121" name="ce121" type="text" value="1155ff" />
<input id="ce122" name="ce122" type="text" value="11/002" />
<input id="ce123" name="ce123" type="text" value="ff00ff" />
<input id="ce124" name="ce124" type="text" value="0000ff" />
<br />
<input id="ce130" name="ce130" type="text" value="#bottom div a" />
<input id="ce131" name="ce131" type="text" value="1155ff" />
<input id="ce132" name="ce132" type="text" value="11/002" />
<input id="ce133" name="ce133" type="text" value="ff00ff" />
<input id="ce134" name="ce134" type="text" value="0000ff" />
<br />
<input id="ce140" name="ce140" type="text" value="#bottom div a:hover, #bottom div a:focus" />
<input id="ce141" name="ce141" type="text" value="1155ff" />
<input id="ce142" name="ce142" type="text" value="11/002" />
<input id="ce143" name="ce143" type="text" value="ff00ff" />
<input id="ce144" name="ce144" type="text" value="0000ff" />
<br />
<input id="ce150" name="ce150" type="text" value="form" />
<input id="ce151" name="ce151" type="text" value="1155ff" />
<input id="ce152" name="ce152" type="text" value="11/002" />
<input id="ce153" name="ce153" type="text" value="ff00ff" />
<input id="ce154" name="ce154" type="text" value="0000ff" />
<br />
<input id="ce160" name="ce160" type="text" value="form fieldset input.button, form fieldset input.text, form fieldset input.url, select, form fieldset textarea" />
<input id="ce161" name="ce161" type="text" value="1155ff" />
<input id="ce162" name="ce162" type="text" value="11/002" />
<input id="ce163" name="ce163" type="text" value="ff00ff" />
<input id="ce164" name="ce164" type="text" value="0000ff" />
<br />
<input id="ce170" name="ce170" type="text" value="form fieldset input.button:hover, form fieldset input.text:hover, form fieldset input.url:hover, select:hover, form fieldset textarea:hover, form fieldset input.button:focus, form fieldset input.text:focus, form fieldset input.url:focus, select:focus, form fieldset textarea" />
<input id="ce171" name="ce171" type="text" value="1155ff" />
<input id="ce172" name="ce172" type="text" value="11/002" />
<input id="ce173" name="ce173" type="text" value="ff00ff" />
<input id="ce174" name="ce174" type="text" value="0000ff" />
<br />
<input id="ce180" name="ce180" type="text" value="form fieldset label" />
<input id="ce181" name="ce181" type="text" value="1155ff" />
<input id="ce182" name="ce182" type="text" value="11/002" />
<input id="ce183" name="ce183" type="text" value="ff00ff" />
<input id="ce184" name="ce184" type="text" value="0000ff" />
<br />
<input id="ce190" name="ce190" type="text" value="ol, ul" />
<input id="ce191" name="ce191" type="text" value="1155ff" />
<input id="ce192" name="ce192" type="text" value="11/002" />
<input id="ce193" name="ce193" type="text" value="ff00ff" />
<input id="ce194" name="ce194" type="text" value="0000ff" />
<br />
<input id="ce200" name="ce200" type="text" value="code" />
<input id="ce201" name="ce201" type="text" value="1155ff" />
<input id="ce202" name="ce202" type="text" value="11/002" />
<input id="ce203" name="ce203" type="text" value="ff00ff" />
<input id="ce204" name="ce204" type="text" value="0000ff" />
<br />
<input id="ce210" name="ce210" type="text" value="#head #location a:link, #head #location a:visited, .color1" />
<input id="ce211" name="ce211" type="text" value="1155ff" />
<input id="ce212" name="ce212" type="text" value="11/002" />
<input id="ce213" name="ce213" type="text" value="ff00ff" />
<input id="ce214" name="ce214" type="text" value="0000ff" />
<br />
<input id="ce220" name="ce220" type="text" value="#content span.subtitle, .color2" />
<input id="ce221" name="ce221" type="text" value="1155ff" />
<input id="ce222" name="ce222" type="text" value="11/002" />
<input id="ce223" name="ce223" type="text" value="ff00ff" />
<input id="ce224" name="ce224" type="text" value="0000ff" />
<br />
<input id="ce230" name="ce230" type="text" value="p, p.noindent, ol li span, ul li span, .color3" />
<input id="ce231" name="ce231" type="text" value="1155ff" />
<input id="ce232" name="ce232" type="text" value="11/002" />
<input id="ce233" name="ce233" type="text" value="ff00ff" />
<input id="ce234" name="ce234" type="text" value="0000ff" />
<br />
<input id="ce240" name="ce240" type="text" value=".color4" />
<input id="ce241" name="ce241" type="text" value="1155ff" />
<input id="ce242" name="ce242" type="text" value="11/002" />
<input id="ce243" name="ce243" type="text" value="ff00ff" />
<input id="ce244" name="ce244" type="text" value="0000ff" />
<br />
<input id="ce250" name="ce250" type="text" value=".color5" />
<input id="ce251" name="ce251" type="text" value="1155ff" />
<input id="ce252" name="ce252" type="text" value="11/002" />
<input id="ce253" name="ce253" type="text" value="ff00ff" />
<input id="ce254" name="ce254" type="text" value="0000ff" />
<br />
<input style="background-color: #f00;" type="submit" value="sign up for free smilies! You know you want to." />
</fieldset>
</form>
<?php
/*
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$output = '';
for($i=0;$i<26;$i++)
{
echo $_POST['ce'.$i.'0'].' {background-color: ';
if ($_POST['ce'.$i.'1'] != '') {echo '#'.$_POST['ce'.$i.'1'];}
else {echo 'transparent';}
echo '; ';
echo 'background-image: ';
if ($_POST['ce'.$i.'2'] != '') {echo 'url('.$_POST['ce'.$i.'2'].'.gif)';}
else {echo 'none';}
echo '; ';
echo 'color: ';
if ($_POST['ce'.$i.'3'] != '') {echo '#'.$_POST['ce'.$i.'3'];}
else {echo 'transparent';}
echo '; ';
echo 'border-color: ';
if ($_POST['ce'.$i.'4'] != '') {echo '#'.$_POST['ce'.$i.'4'];}
else {echo 'transparent';}
echo ';';
echo "}<br /><br />\n";
}
//echo $var.'<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />'.$var;
}*/
echo $_SESSION['css'];
?>
</body>
</html>Code: Select all
<?php
$output = '';
for($i=0;$i<26;$i++)
{
$var .= $_POST['ce'.$i.'0'].' {background-color: ';
if ($_POST['ce'.$i.'1'] != '') {$var .= '#'.$_POST['ce'.$i.'1'];}
else {$var .= 'transparent';}
$var .= '; ';
$var .= 'background-image: ';
if ($_POST['ce'.$i.'2'] != '') {$var .= 'url('.$_POST['ce'.$i.'2'].'.gif)';}
else {$var .= 'none';}
$var .= '; ';
$var .= 'color: ';
if ($_POST['ce'.$i.'3'] != '') {$var .= '#'.$_POST['ce'.$i.'3'];}
else {$var .= 'transparent';}
$var .= '; ';
$var .= 'border-color: ';
if ($_POST['ce'.$i.'4'] != '') {$var .= '#'.$_POST['ce'.$i.'4'];}
else {$var .= 'transparent';}
$var .= ';';
$var .= "}\n";
}
session_name("member");
session_start();
$_SESSION['css'] = $var;
?>Code: Select all
<?php
if(isset($_GET['sid'])) {session_id($_GET['sid']);}
include("header.php");
echo $_SESSION['css'];
?>