Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将变量发送到Css_Php_Css - Fatal编程技术网

使用PHP将变量发送到Css

使用PHP将变量发送到Css,php,css,Php,Css,目前我正在用PHP创建完全动态的网站。现在我想通过Index.php编辑一些CSS属性 在Index.php中,我通过一个会话将边框的颜色发送到css文件 session_start(); $_SESSION['CssBorder'] = 'red'; 在我的Css文件中,我进行了会话 <?php header('Content-type: text/css'); $CssBorder = $_SESSION['CssBorder']; ?> 为什么它不起作用,我该如

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

在Index.php中,我通过一个会话将边框的颜色发送到css文件

session_start();
$_SESSION['CssBorder'] = 'red';
在我的Css文件中,我进行了会话

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

    $CssBorder = $_SESSION['CssBorder'];

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


非常感谢。

不,如果您想通过这种方式访问外部样式表,那么最好的解决方案是

在标题中,设置样式标记,并在标题前指定值

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

h1{颜色:红色;}
p{颜色:蓝色;}
.Container{左边框:1px实心;
注意:作为最佳实践,我认为您应该将类重命名为有意义的名称。动态边框

所以看起来

.dynamic-border {border-left: 1px solid <?php echo $CssBorder ?>;
。动态边框{左边框:1px实心;

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

我的意思是,我不确定当请求PHP生成的样式表时,
$\u 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
浏览器>>>:获取index.php

服务器正如@Nikil所说,“我猜你的css文件中缺少start_session()”,我的css文件中缺少一个start session

很抱歉,我的问题中出现了这种错误。 我是一个PHP初学者,以前从未使用过Session

我读过,认为您只需要在创建seassion变量的文件中启动一个会话


谢谢大家,我诚挚的道歉。(还有我的英语)

我想您的css文件正在作为PHP处理(例如,您已经在apache中完成了
AddHandler.css php脚本
-键入内容,或者将其命名为
whatever.php
,因此它将作为php代码执行?请尝试此操作,谢谢,但正如我所说,我已使其正常工作。但我在会话中做了一些错误。如果我只是在css中创建了一个值为“red”的字符串,它就会正常工作。当我使用谢谢你的回复@NikhilKudtarkarI我猜你错过了session_start()在你的css文件中???@NikhilKudtarkar你能回答一下吗?这样我就可以把它标记为已解决?对不起,我不喜欢在我的HTML中使用css。谢谢你可能的解决方案,但这对我不起作用。非常感谢你为什么他不能?@Raffaele有可能吗?我不知道这种方法。@Mazraara有各种各样的apche编辑来实现这一点工作,甚至把你的.css文件变成一个里面有css的.php。有各种各样的方法,所有这些都有点“黑客”的味道可以这么说。少一点是一个更好的解决方案。为什么你不使用最佳实践,给某个类加上红色边框,或者告诉你这是一个有红色边框的类。我对你的答案投了赞成票,因为它是有效的,但明智的做法是告诉OP,他这样做是错误的。我正在犹豫这已解决。这是解决方案的一部分。解决方案是通过评论找到的,我不能将其标记为解决方案,也不希望人们在我的帖子中不必要地闲逛。谢谢大家。我深表歉意。
.dynamic-border {border-left: 1px solid <?php echo $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