Forum Moderators: coopster

Message Too Old, No Replies

Session variable not echoing in linked CSS file

Echos in style element but not in linked CSS file?

         

JAB Creations

3:44 pm on Jun 2, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



These are all self contained out-of-the-box should be working just fine files. The problem is that a session is not working inside of the style.css.php file. Both my local and live servers are running PHP 5.2.5 right now (my local XAMPP server on XP is running default settings). A friend who ranks fairly high in experience is baffled (and here I was on a roll tonight and on a weekend too!) so I tried a few things such as restarting Apache, disabling/enabling cache in Firefox, testing FF2, FF3, and IE6; I even rebooted and nothing!

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.

<?php echo $_SESSION['css'];?>

Since it's not working in a linked CSS file obviously I have to break the code up a little. Here is what I currently have...
index.php

<?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>

header.php

<?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;
?>

style.css.php

<?php
if(isset($_GET['sid'])) {session_id($_GET['sid']);}
include("header.php");
echo $_SESSION['css'];
?>

[edited by: jatar_k at 4:33 pm (utc) on June 2, 2008]
[edit reason] disabled smilies [/edit]

dreamcatcher

7:04 am on Jun 3, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Does $var have a value when its loaded into the session?

Try setting your error reporting level to E_ALL before you call the header file:

error_reporting(E_ALL);

See if that throws an error.

dc

JAB Creations

5:48 pm on Jun 3, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Thanks I actually was able to resolve this. The session has to be chronologically started before you can add variables to it.

- John