未在css文件中读取PHP会话
我有两个文件,一个是一个php文件,其中设置了一个会话,下面包含了源代码。 一个.htaccess文件已就位,以确保css将像php文件一样被解析, 我已经验证了这一点,但是没有会话数据可以从style2.css中读取 index.php:未在css文件中读取PHP会话,php,css,session,Php,Css,Session,我有两个文件,一个是一个php文件,其中设置了一个会话,下面包含了源代码。 一个.htaccess文件已就位,以确保css将像php文件一样被解析, 我已经验证了这一点,但是没有会话数据可以从style2.css中读取 index.php: <?php session_start(); $_SESSION['bgimg'] = 'picture.jpg'; ?> <head> <meta charset="utf-8"> <title&
<?php
session_start();
$_SESSION['bgimg'] = 'picture.jpg';
?>
<head>
<meta charset="utf-8">
<title>Index</title>
<link rel="stylesheet" type="text/css" href="style2.css">
</head>
....
指数
....
另一个是style2.css:
<?php
session_start();
header("Content-type: text/css; charset: UTF-8");
print_r($_SESSION);
?>
body {
background: #fff;
background-image: url("<?php echo $_SESSION['bgimg']; ?>");
}
....
身体{
背景:#fff;
背景图片:url(“”);
}
....
css将像php文件一样被解析
这是个糟糕的主意
而是使用mod_rewrite
将style2.css
重写为PHP脚本
RewriteRule ^style2\.css$ generate_style.php
除此之外,您的会话代码看起来不错,可能PHP只是对
.css
文件感到困惑。我认为您的会话cookie可能不会与.css请求一起发送,因此无法获取会话。一般来说,虽然PHP解释器不是最好的方法,但传递css文件。
Css是指带有样式信息的静态缓存数据
由于您似乎希望动态设置一个特定元素的背景图像,我建议在html中使用style
属性,如下所示:
<body style="background-image:url(<?= /* php code here */ ?>);"></body>
php示例
<!-- snip -->
<body <? if(/* check login here */) { echo 'class="login"'}?> >
<!-- snip -->
你是如何确定“没有会话数据可以从style2.css中读取”的?你真的混合了PHP和CSI吗?我认为你最好只修改带有样式属性的body标记。我认为不可能在样式表中读取会话。那么我将在de header中使用标记,但我认为这会起作用,因为一些网站在其.html文档中使用.php的方式与此相同。遗憾的是,我的主人不允许重写mod_,否则这也是我的第一选择。那就是。。很奇怪。我想我以前从未见过这种情况。不允许重写规则,但允许AddType?这太疯狂了。你也可以直接链接到main.css.php或其他东西。