2011-12-16 50 views
1

我在PHP很新,我现在正在一所技术学校上课。据说,我们的一项任务要求我们使用会话来修改4个CSS属性。身体背景颜色,a:链接颜色,a:悬停颜色和h1颜色。这个想法基本上有3页-1是一个窗体,有4个下拉菜单,用颜色填充,用$ _POST数据设置实际会话,最后是实际使用CSS的页面。通过PHP会话定制CSS属性?

我把它与cookies工作,但分配明确说要使用会话,你可以看到:

当前的代码我有设置会话是:

session_start(); 
$_SESSION['bgColor']= $_POST['bgColor']; 
$_SESSION['lColor']=$_POST['lColor']; 
$_SESSION['hoverColor']=$_POST['hoverColor']; 
$_SESSION['h1Color']=$_POST['h1Color']; 

在同一页上,那个代码下的回声超出了会话变量的值......我可以看到正在保存的颜色。但是,当我尝试回声出这样的CSS:

echo "a:link {color: ".$_SESSION['lColor'].";}"; 
echo "a:hover {color: ".$_SESSION['hoverColor'].";}"; 
echo "body {background-color: ".$_SESSION['bgColor'].";}"; 
echo "h1 {color: ".$_SESSION['h1Color']."; text-align:center;}"; 

它不工作,当我检查过我的网页浏览器页面的源代码,它显示空白属性:

a:link {color: ;}a:hover {color: ;}body {background-color: ;}h1 {color: ; text-align:center;}  

我真的感谢你们愿意给予的帮助,请记住,这是我在PHP中的第一堂课。

+1

确保您在所有页面上都有session_start – Galen 2011-12-16 20:56:15

+0

您可以[接受有帮助的答案](http://meta.stackexchange.com/a/5235/160062)。不要将已解决的免责声明编辑为文本。 – oers 2011-12-23 11:24:18

回答

1

你是否确保每一个使用会话session_start()的页面;

它必须在尝试调用任何会话变量之前声明。

您的表单使用method =“post”而没有得到?

此外,很多SO人可能会警告您,以确保清理您从$ _POST获得的所有内容。在这种情况下,你可能是安全的,因为它只是一个作业而不是一个现场 - 我假设。

+0

WOW。我不知道我必须有session_start();在所有使用会话的页面上。现在正在工作,谢谢!解决方案只是session_start();. – user1102700 2011-12-16 21:01:28

1

在File3中添加一个session_start()

确保PHPSESSID(或任何您的会话变量被称为)通过GET从File2传输到File3,以防用户禁用了Cookie。