PHP/MySQL を使用して、動的 css (style.php) を使用して Web アプリのスタイルを設定しています。
MySQL の値は URL から決定されます。
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if($url == "this") $style = "blue";
else( $style = "red"; )
私が抱えていると思われる問題は、style.php が以下を使用していることです。
header('Content-type: text/css');
これにより、$url は "http://" と等しくなり、style.php ファイルの外部で割り当てられた他の変数も無視されます。
これらの $_SERVER (およびその他の) 変数を機能させる方法を知っている人はいますか?
ここに完全なコードがあります
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; // current URL
$key = true;
while($key){
mysql_select_db($database, $connection);
$query_rsTheme = "
SELECT s.name, s.url, t.name as theme, t.colour, t.hover
FROM db_site as s
INNER JOIN db_theme.theme as t ON t.name = s.theme
WHERE s.url = '$url'";
$rsTheme = mysql_query($query_rsTheme, $connection) or die(mysql_error());
$row_rsTheme = mysql_fetch_assoc($rsTheme);
$totalRows_rsTheme = mysql_num_rows($rsTheme);
if($totalRows_rsTheme == 1){ // sucessful match
$key = false;
$site = $row_rsTheme['name'];
$theme = $row_rsTheme['theme'];
$default_state = $row_rsTheme['colour'];
$hover_state = $row_rsTheme['hover'];
}
$tokens = explode('/', $url);
$remove = $tokens[sizeof($tokens)-2]."/";
$url = substr($url, 0, strpos($url, $remove));
}
header('Content-type: text/css');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
$stylesheet = 'style.css';
$content = preg_replace('/\$([\w]+)/e','$0',@file_get_contents($stylesheet));
echo $content;