2

私は初心者のphp学習者です。さまざまなphpファイルを動的にリンクする方法を実験していました。実験しているうちに、php ファイルに変数を作成し、テンプレート ファイルを編集せずに、必要な html をテンプレート ファイルに反映させることができることに気付きました......

例: about-me.php ページ内に、header.php と footer.php を

 <?php include ('includes/header.html'); ?>
 <?php include ('includes/footer.html'); ?>

次に、変数を作成します

  $page_title = 'CompanyABC';

header.php でエコーアウトします

  $page_title = 'South Asia Exact'; 

今私の質問は、これをインライン css に対しても行うことができますか? たとえば、すべてのインライン css を格納する変数を作成しました。

 $page_inlinecss = "#SAEcontentR div#certification_certificate {
    margin:0 auto 0 auto;
    width:580px; 
    height:464px;
     }\n";

次に、header.php で次のようにエコーします。

<style type="text/css">
<?php echo $page_inlinecss; ?>
</style>

私はそれを試してみましたが、それは正しい方法ですか?

4

6 に答える 6

7

インライン CSS を行う正しい方法はありません

あなたのコードは機能し、有効なページを生成し、ユーザーにはまったく問題なく表示されます。しかし、そのようにしてはいけません。

では、なぜそのようにすべきではないのでしょうか。

CSS をこのように扱うべきではない主な理由は、保守性です。変更する CSS ルールを探して PHP コードを選択するよりも、個別の CSS ファイルを管理する方がはるかに簡単です。

保存しているデータは静的なようです。変数のポイントは、変更可能なデータを保存することです。Web サイトの名前 ( Company ABC) などは、スクリプトの実行中に変更される可能性は低いため、静的 HTML テンプレートに含める必要があります。

これに加えて、キャッシング (ほとんどのブラウザは.cssファイルをキャッシュして帯域幅を節約します) やアクセシビリティ (スクリーン リーダーはインライン スタイルや js の処理方法を知らない可能性があります) などの問題があります。

動的スタイルをどのように処理する必要がありますか?

PHP と CSS を組み合わせて動的なスタイル (つまり、ページの読み込みごとに異なる情報に基づくスタイル) を処理する 1 つの方法は、外部ドキュメントでクラス スタイルを定義し、PHP を使用してそれらを適用することです。

たとえば、次のように入力しstyles.cssます。

span.greentext { color: #0f0; }

そしてこれはあなたのPHPファイルで:

<span class='<?php echo ($someCondition) ? "greentext" : null; ?>'>Some text</span>

または、処理するスタイルが他にもある場合:

または、条件に基づいて特定のスタイルシートをロードすることもできます:

<?php if($someCondition): ?>
    <link rel="stylesheet" href="styles/conditional.css" type="text/css" media="screen">
<?php endif; ?>

これがお役に立てば幸いです。必要でない限り、インライン CSS や変数を使用しないでください。5 か月後にサイトを変更する必要が生じたときは、感謝の気持ちでいっぱいです。

于 2013-08-14T15:50:36.787 に答える
1

これは、システムの仕組みの美しさと落とし穴です。あなたはそれを行うことができ、それは機能し、差し迫った明白なセキュリティ問題を提示していないようです. それがPHPの意図された使用法であったかどうかはわかりませんが、動作するので、状況に適合する場合は使用できます. 落とし穴は、これらの小さな回避策が十分に使用され、最終的にどこかでセキュリティの問題が発生する可能性がある場合に発生しますが、CSS が攻撃のベクトルとして使用されたことは覚えていません。

于 2013-08-14T15:51:20.523 に答える
1

この場合、正解も不正解もありません。

CSS を文字列に保存し、必要に応じてエコーすることができます。または、ファイルに埋め込むこともincludes/header.htmlできます。それはあなた次第です。

個人的には、それが CSS ルールのコレクションである場合、それを独自の CSS ファイルに保持し、必要に応じてファイル名をエコーするだけです。

$css_filename = "/path/to/rules.css";
// ... etc etc

<link rel="stylesheet" href="<?php echo $css_filename; ?>">
于 2013-08-14T15:48:43.577 に答える
1

これを行うと、動的 css を生成できます

ファイル css.php

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

echo 'p {color:red}';
?>

html (完全ではありませんが、クロスブラウザーで動作するはずです)

<link rel="stylesheet" href="css.php" type="text/css" />
<p>This should be red</p>
于 2013-08-14T15:53:19.857 に答える