2012-01-23 25 views
0

我需要改變基於URL查詢字符串的網頁的CSS ...但我新的PHP和沒有帶能夠找到關於如何充分例子做到這一點。更改CSS基於PHP查詢字符串

基本上,當用戶點擊一個菜單鏈接,然後發送到「aboutUs.php」頁面時,我需要在aboutUs.php頁面上的CSS根據字符串查詢進行更改。

回答

2

如果我知道你想正確的:

if (isset($_GET['query'])){ 
$query = $_GET['query']; 
}else{ 
$query = NULL; 
} 

然後是這樣的:

if ($query == 'x'){ 
echo " 
<style> 
Whatever style you need... 
</style> 
"; 
}elseif ($query == 'y'){ 
echo " 
<style> 
Whatever other style you need... 
</style> 
"; 
}else{ 
echo " 
<style> 
Whatever default style you need... 
</style> 
"; 
} 

當然,你可以重複,而不是樣式錶鏈接樣式標籤的,但邏輯是相同。

+0

這似乎應該工作...但我的PHP有些問題。它現在打破了頁面? – mdance

2

你可以改變你的style.cssstyle.php,你可以在頁面加載的樣式表。

你需要在你的PHP文件的報頭類型:

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

,然後動態生成的內容。

在希望我沒有missunderstand的問題。這可以幫助您更改css文件的內容。

如果有多個CSS文件,要導入其中的一個取決於參數aboutus.php,這是一個不同的故事。

1

在你的程序(你將包括CSS樣式表)的頭做一個簡單的if else:

if (isset($REQUEST['query_string'])) {?> 
stylesheet link 
<?php } else { ?> 
stylesheet link 2 
<?php } ?> 
+0

+1我誤解了這個問題。 :)我認爲他希望CSS內容根據參數改變。 –

+0

因此,要理解的方案中,完整的PHP代碼塊將如下所示:<?PHP \t \t \t \t如果(isset($ REQUEST [ 'ourMission'])){> \t \t <鏈接類型=」文本/ CSS 「的rel = 」樣式表的「 href = 」styleBlah.css「/> \t \t <?PHP}否則{?> \t \t <鏈接類型= 」文本/ CSS「 的rel = 」樣式表的「 href =」 styleBleh的CSS」 /> \t \t <?PHP} \t \t \t \t?> – mdance

+0

不要使用$ _REQUEST,使用$ _GET或$ _POST。不好的做法:) – Leigh

1

您可以在選定的CSS保存到cookie

if (isset($_GET['setstyle'])) { 
    setcookie('style', $_GET['setstyle'], time()+60*60*24*30, '/'); 
} 

的風格可以這樣讀取:$_COOKIE['style']

http://example.com/?setstyle=black - >樣式設置爲「黑色」

1

不是很漂亮的解決方案,但例如像這樣的工作

<? php 
    if($str=="main"){ 
     echo '<link rel="stylesheet" type="text/css" media="all" href="/css/main.css" />' 
    } 
    else if($str=="other"){ 
    echo '<link rel="stylesheet" type="text/css" media="all" href="/css/other.css" />' 
    } 

    ?> 

小心做這樣的事情:

<link rel="stylesheet" type="text/css" media="all" href="/css/$str.css" /> 

是不是很安全的方法,除非你如做可能值的數組,像

$possibleCss = array("main", "other"); 
if(in_array($str, $possibleCss){ 
<link rel="stylesheet" type="text/css" media="all" href="/css/$str.css" /> 
} 
1

here知道您的問題的目的,我會將所有常見的css放在樣式表上,並簡單地調出您關心的元素的特定display屬性。在您的主樣式表中創建所有元素display: none

<link type="text/css" rel="stylesheet" href="mainStyleSheet.css" /> 

<style type="text/css"> 
<?php 
    if (isset($_GET['section'])){ 
     // Sanitize 
     $section = preg_replace('/[^a-zA-Z]/', $_GET['section']); 
     echo '#' . $section . ' { display: block; }'; 
    } 
?> 
</style> 

在這種情況下,section是一個參數,設置爲ourMissonourHistory,等等,像這樣調用:

http://beta.***.com/aboutUs.php?section=ourMission

+1

響應unsanitized輸入通過malcrafted URL打開注射攻擊的大門。 – Martin

+0

夠公平的。由於他只需要字母字符,所以相當簡單。他也可以首先根據有效選項列表對其進行測試。 –

1
  1. 你需要創建一個標題文字的PHP文件/ css,你可以使用get參數調用這個文件。 例如:

$style = $_GET["style"]; header("Content-type: text/css"); if($style=="blue") echo ".class{background-color:blue;}"; else echo ".class{background-color:white;}";

  1. 調用CSS用GET參數

<link rel="stylesheet" type="text/css" href="style_file.php?style=blue" />