我是一个新手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>
我已经尝试了它并且它有效,但我想知道这是正确的方法吗?
答案 0 :(得分:7)
您的代码将起作用,它将生成一个有效的页面,它对用户来说看起来绝对正常。但你不应该这样做。
那么,你为什么不这样做呢?
可维护性是您不应该以这种方式处理CSS的主要原因。管理单独的CSS文件要比通过PHP代码选择要更改的CSS规则容易得多。
看起来您存储的数据是静态的,变量的关键是存储可以更改 的数据。在执行脚本期间,网站名称(Company ABC
)不太可能发生变化,因此您应将它们包含在静态HTML模板中。
除此之外还有缓存(大多数浏览器缓存.css
文件,节省带宽)和可访问性等问题(屏幕阅读器可能不知道如何处理内联样式和放大器)。
您应该如何处理动态样式?
使用PHP和CSS的组合处理动态样式(即基于不同页面加载的信息的样式)的一种方法是在外部文档中定义类样式,然后使用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个月后改变网站时,你会感谢你自己。
答案 1 :(得分:1)
最好将CSS文件名存储在php变量中,然后在标题中添加:
<link rel="stylesheet" href="<?php echo $this_page_style_sheet; ?>" />
答案 2 :(得分:1)
在这种情况下没有对错。
您可以将CSS存储在字符串中并根据需要进行回显。或者您甚至可以将其嵌入includes/header.html
文件中。这取决于你。
就个人而言,如果它是CSS规则的集合,我会将其保存在自己的CSS文件中,并在需要时回显文件名。
$css_filename = "/path/to/rules.css";
// ... etc etc
<link rel="stylesheet" href="<?php echo $css_filename; ?>">
答案 3 :(得分:1)
这是系统运作方式的美丽和陷阱。你可以这样做,它可以工作,似乎没有任何直接和明显的安全问题。我不知道这是否是PHP的预期用途,但它可以正常工作,如果它适合您的情况,您可以使用它。当使用足够的这些小变通方法时会出现陷阱,最终会出现安全问题,但我不记得CSS曾经被用作攻击的载体。
答案 4 :(得分:1)
您可以这样做以生成动态css
file 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>
答案 5 :(得分:0)
一些更严格/更严格的人可能会说正确的CSS不需要变量,yadda yadda。
就我个人而言,如果这样可行,那么这是一种为CSS添加一些易用性的聪明方法。我全力以赴。