使用PHP将变量发送到Css

时间:2013-12-16 19:46:34

标签: php css

目前我正在使用PHP创建完全动态的网站。现在我想通过我的Index.php编辑一些CSS属性

在Index.php里面我将边框的颜色发送到带有会话的css文件。

session_start();
$_SESSION['CssBorder'] = 'red';

在我的Css文件中,我参加会议

<?php
header('Content-type: text/css');

    $CssBorder = $_SESSION['CssBorder'];

?>

然后在css中使用它如下

.Container{
        border-left:    1px solid <?php echo $CssBorder ?>;

这不起作用,它没有显示颜色。而且我必须做其他错误的事情,因为跟随的第一个CSS属性没有被使用,之后的所有内容看起来都应该是。

另外,我知道它有效,当我用一个普通的字符串替换会话如下。它很完美。

$string = 'red';

为什么它不起作用,我该如何解决这个问题?

非常感谢。

3 个答案:

答案 0 :(得分:2)

不,您希望能够以这种方式访问​​外部样式表,最适合您的解决方案是,

在标题中设置样式标记,在标题之前,您应该为$CssBorder分配值。

<head>
<style type="text/css">
h1 {color:red;}
p {color:blue;}
.Container {border-left: 1px solid <?php echo $CssBorder ?>;
</style>
</head>

注意:作为最佳实践,我相信您应该将课程重命名为有意义的内容。的动态边界

所以它看起来像,

.dynamic-border {border-left: 1px solid <?php echo $CssBorder ?>;

答案 1 :(得分:0)

使用PHP生成CSS是一种不常见但可行的方法。我认为在某些情况下可能存在竞争条件,特别是因为您明确指出使用$_SESSION是问题。

我的意思是,我不确定当请求PHP生成的样式表时{04}已被刷新并且可以从其他进程读取。例如

$_SESSION['CssBorder']

此时browser >>>: GET index.php server <<<: 200 OK server <<<: Set-Cookie: PHPSESSIONID=blah server <<<: HTML response body here... until some style.php browser <<<: GET style.php browser <<<: Cookie: PHPSESSIONID=blah 可能尚未对处理第二个请求的进程可见。但这只是猜测。

答案 2 :(得分:0)

正如@Nikil所说,'我猜你在你的css文件中缺少start_session()? “我在CSS文件中错过了一个开始会话。

对不起,我在我的问题中创建了一个有这种错误的问题。 我是初学者PHP编码器,之前从未使用Session。

我读到并且你只需要在创建你的激情变量的文件中使用session_start。

谢谢大家,真诚的道歉。 (和我的英文)