2014-01-07 57 views
1

閱讀我有兩個文件,一個是其中一個會話建立一個php文件,源包含下面。 .htaccess文件是否到位,以確保將CSS解析像一個PHP文件, 我已驗證這工作,但沒有會話數據可以從style2.css讀取PHP會話沒有在CSS文件

的index.php:

<?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']; ?>"); 
} 
.... 
+0

你是如何判斷「沒有會話數據可以從style2.css讀」? – Quentin

+0

你真的混合PHP和CSS – meda

+2

我想你最好只修改body標籤style屬性。 –

回答

0

我覺得你的會話cookie可能無法與請求的CSS一起發送,這樣會話無法獲取。

+0

感謝downvote,@。 – jgroenen

+0

你也可以鏈接到main.css.php或其他東西。 – jgroenen

0

CSS會被解析就像一個PHP文件,

這是一個可怕的想法!

而是使用mod_rewrite改寫style2.css PHP腳本

RewriteRule ^style2\.css$ generate_style.php 

比其他你的會話代碼看起來不錯,也許PHP只是困惑的.css文件。

+0

可悲的是我的主機供應商不允許mod_rewrite的,否則這也將是我第一選擇。 – kgerbers

+0

這是非常奇怪的。我以前從未見過這種情況。不允許RewriteRule,但允許AddType?太瘋狂了。 – Halcyon

0

一般情況下,通過css文件雖然PHP解釋器是不是最好的主意。 Css旨在成爲具有樣式信息的靜態緩存數據。

,因爲它似乎要動態地設置一個特定元素的背景圖像,我建議使用HTML中的style屬性,像這樣:

<body style="background-image:url(<?= /* php code here */ ?>);"></body> 

如果,另一方面,你要改變例如基於您的登錄狀態的造型,我建議使用HTML class屬性作爲標誌和使用的CSS類選擇:

範例CSS:

p { 
    /* formatting without login */ 
} 
.login p { 
    /* formatting with login */ 
} 

實例PHP的

<!-- snip --> 
<body <? if(/* check login here */) { echo 'class="login"'}?> > 
<!-- snip -->