在PHP变量中存储CSS?

在PHP变量中存储CSS?,php,css,dynamic,Php,Css,Dynamic,我是一名php初学者,我正在尝试如何动态链接不同的php文件。在实验过程中,我意识到我可以在我的php文件中创建变量,并使我的模板文件在不编辑我的模板文件的情况下呼应出我需要的html 例如: 在about-me.php页面中,我使用 <?php include ('includes/header.html'); ?> <?php include ('includes/footer.html'); ?> 并在header.php中回显 $page_title =

我是一名php初学者,我正在尝试如何动态链接不同的php文件。在实验过程中,我意识到我可以在我的php文件中创建变量,并使我的模板文件在不编辑我的模板文件的情况下呼应出我需要的html

例如: 在about-me.php页面中,我使用

 <?php include ('includes/header.html'); ?>
 <?php include ('includes/footer.html'); ?>
并在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>


我已经试过了,而且效果很好,但我想知道这是正确的方法吗?

一些更严格的人可能会说,正确的CSS不需要变量,yadda yadda

我个人认为,如果这能奏效,那么这是一种向CSS添加一些易用性的聪明方法。我完全赞成。

你能做到吗?对 你应该这样做吗?嗯。(不,有点苛刻…)

最好将CSS文件名存储在php变量中,然后在标题中添加:

<link rel="stylesheet" href="<?php echo $this_page_style_sheet; ?>" />

在这种情况下没有对错之分

您可以将CSS存储在一个字符串中,并根据需要进行回显。或者您甚至可以将其嵌入到
includes/header.html
文件中。这取决于你

就个人而言,如果它是CSS规则的集合,我会将其保存在自己的CSS文件中,并在需要时回显文件名

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

<link rel="stylesheet" href="<?php echo $css_filename; ?>">
$css_filename=“/path/to/rules.css”;
// ... 等等
没有一个正确的方法来做内联CSS
您的代码将正常工作,它将生成一个有效的页面,并且对用户来说它看起来绝对不错。但你不应该那样做

那么,你为什么不这样做呢?

可维护性是您不应该以这种方式处理CSS的主要原因。管理一个单独的CSS文件要比在PHP代码中寻找要更改的CSS规则容易得多

看起来您存储的数据是静态的,变量的作用是存储可以更改的数据。在脚本执行期间,网站名称(
companyabc
)之类的内容不太可能更改,因此您应该将它们包含在静态HTML模板中

最重要的是缓存(大多数浏览器缓存
.css
文件,节省带宽)和可访问性(屏幕阅读器可能不知道如何处理内联样式和js)

您应该如何处理动态样式?

使用PHP和CSS组合处理动态样式的一种方法是在外部文档中定义类样式,然后使用PHP应用它们

例如,将其放入
styles.css

span.greentext { color: #0f0; }
在您的PHP文件中:

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


希望这有帮助,请不要使用内联CSS或变量,除非必要。当你不得不在接下来的5个月内更改网站时,你会为此感谢自己。

这是系统工作方式的一大优点和陷阱。你可以做到这一点,它是有效的,而且似乎没有任何直接和明显的安全问题。我不知道这是否是PHP的预期用途,但它可以工作,所以如果它适合您的情况,您可以使用它。当使用了足够多的这些小解决方法,最终可能会在某个地方出现安全问题时,就会出现陷阱,但我不记得CSS曾被用作攻击的载体。

您可以这样做来生成动态CSS

文件css.php

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

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

html(不完整,但可跨浏览器使用)


这应该是红色的


为什么不按预期将CSS放在样式表中?
<?php if($someCondition): ?>
    <link rel="stylesheet" href="styles/conditional.css" type="text/css" media="screen">
<?php endif; ?>
<?php
header("Content-Type: text/css");

echo 'p {color:red}';
?>
<link rel="stylesheet" href="css.php" type="text/css" />
<p>This should be red</p>