2012-01-23 7 views
0

URLのクエリ文字列に基づいてWebページ上のCSSを変更する必要がありますが、PHPを初めて使用していて、十分な例を見つけることができませんでしたそれをやる。PHPの文字列クエリに基づいてCSSを変更します

基本的に、ユーザーがメニューリンクをクリックして「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に変更することができます。style.phpは、ページにスタイルシートとして読み込むことができます。

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

して、動的にコンテンツを生成:

はあなたのPHPファイルのヘッダータイプを含める必要があります。

私は質問を紛らわしく思っていませんでした。これは、CSSファイルの内容を変更するのに役立ちます。

複数のcssファイルがあり、そのパラメータの1つをaboutus.phpにインポートする場合は、別の話です。あなたのプログラムの先頭で

1

他の場合(あなたはCSSスタイルシートが含まれる場合)簡単な操作を行います。

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

+1でCSSを呼び出します。 :)私は彼が議論に応じて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

あなたはcookieに選択されたCSSを保存することができます:

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にします。

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

+1

非正規化された入力をエコーすると、誤って作成されたURLを介して注入攻撃が行われます。 – Martin

+0

十分に良い。彼はアルファ文字だけが必要なので、それはかなり簡単です。彼はまた、有効なオプションのリストから最初にテストすることもできます。 –

1
  1. あなたは、ヘッダーテキストとPHPファイルを作成する必要があります。この場合
    <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に設定したパラメータ、などであります/ 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. 、私は質問を誤解GETパラメータ

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

関連する問題