我需要改變基於URL查詢字符串的網頁的CSS ...但我新的PHP和沒有帶能夠找到關於如何充分例子做到這一點。更改CSS基於PHP查詢字符串
基本上,當用戶點擊一個菜單鏈接,然後發送到「aboutUs.php」頁面時,我需要在aboutUs.php頁面上的CSS根據字符串查詢進行更改。
我需要改變基於URL查詢字符串的網頁的CSS ...但我新的PHP和沒有帶能夠找到關於如何充分例子做到這一點。更改CSS基於PHP查詢字符串
基本上,當用戶點擊一個菜單鏈接,然後發送到「aboutUs.php」頁面時,我需要在aboutUs.php頁面上的CSS根據字符串查詢進行更改。
如果我知道你想正確的:
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>
";
}
當然,你可以重複,而不是樣式錶鏈接樣式標籤的,但邏輯是相同。
你可以改變你的style.css
到style.php
,你可以在頁面加載的樣式表。
你需要在你的PHP文件的報頭類型:
<?php
header("Content-type: text/css");
?>
,然後動態生成的內容。
在希望我沒有missunderstand的問題。這可以幫助您更改css文件的內容。
如果有多個CSS文件,要導入其中的一個取決於參數aboutus.php
,這是一個不同的故事。
在你的程序(你將包括CSS樣式表)的頭做一個簡單的if else:
if (isset($REQUEST['query_string'])) {?>
stylesheet link
<?php } else { ?>
stylesheet link 2
<?php } ?>
+1我誤解了這個問題。 :)我認爲他希望CSS內容根據參數改變。 –
因此,要理解的方案中,完整的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
不要使用$ _REQUEST,使用$ _GET或$ _POST。不好的做法:) – Leigh
您可以在選定的CSS保存到cookie:
if (isset($_GET['setstyle'])) {
setcookie('style', $_GET['setstyle'], time()+60*60*24*30, '/');
}
的風格可以這樣讀取:$_COOKIE['style']
。
http://example.com/?setstyle=black - >樣式設置爲「黑色」
不是很漂亮的解決方案,但例如像這樣的工作
<? 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" />
}
從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
是一個參數,設置爲ourMisson
,ourHistory
,等等,像這樣調用:
http://beta.***.com/aboutUs.php?section=ourMission
響應unsanitized輸入通過malcrafted URL打開注射攻擊的大門。 – Martin
夠公平的。由於他只需要字母字符,所以相當簡單。他也可以首先根據有效選項列表對其進行測試。 –
$style = $_GET["style"]; header("Content-type: text/css"); if($style=="blue") echo ".class{background-color:blue;}"; else echo ".class{background-color:white;}";
<link rel="stylesheet" type="text/css" href="style_file.php?style=blue" />
這似乎應該工作...但我的PHP有些問題。它現在打破了頁面? – mdance