Session variable not echoing in CSS file!

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
JAB Creations
DevNet Resident
Posts: 2341
Joined: Thu Jan 13, 2005 6:44 pm
Location: Sarasota Florida
Contact:

Session variable not echoing in CSS file!

Post by JAB Creations »

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.

Code: Select all

<?php echo $_SESSION['css'];?>
Ok here are the three files needed with their file names.
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>
header.php

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;
?>
style.css.php

Code: Select all

<?php
if(isset($_GET['sid'])) {session_id($_GET['sid']);}
include("header.php");
echo $_SESSION['css'];
?>
User avatar
tecktalkcm0391
DevNet Resident
Posts: 1030
Joined: Fri May 26, 2006 9:25 am
Location: Florida

Re: Session variable not echoing in CSS file!

Post by tecktalkcm0391 »

just at a quick glance, make sure the session is started, before any call to session id or session variables. try moving the header file include to the CSS file.
User avatar
JAB Creations
DevNet Resident
Posts: 2341
Joined: Thu Jan 13, 2005 6:44 pm
Location: Sarasota Florida
Contact:

Re: Session variable not echoing in CSS file!

Post by JAB Creations »

Yeah I tinkered with it enough and already have it all working now, thanks! :)
Post Reply