这在HTML和PHP中是可行的还是有效的?

时间:2011-03-29 11:13:39

标签: php html css

我可以将其放入我的HTML <head>吗?

<link rel="stylesheet" href="http://site.com/some/php/script/userid/style.php" />

基本上,我是否可以通过URI段(或GET变量)将用户ID传递给PHP脚本 - 这仍然会被有效地视为样式表?

因此,例如,如果在我的webapp中用户的页面有一个自定义CSS样式表,我可以通过输出这个样式表URL在我的控制器中动态加载它 - 这可能吗?我知道PHP部分肯定是可能的,但这仍然有效或完全兼容浏览器/服务器吗?

谢谢!

4 个答案:

答案 0 :(得分:6)

我假设你问“这会起作用吗?”而不是“这是有效的HTML?”为此,请参阅@ Gordon的回答。

如果您的PHP脚本输出text/css内容类型和有效的CSS,这将正常工作。

header("Content-type: text/css");

此标头是FF解释CSS所必需的。请参阅here why。

还需要添加一些缓存标头,否则可能会在每次加载页面时请求资源。

<强>然而...

如果您需要输出动态CSS,请考虑使用静态样式表(即使用PHP解释的样式表)和所有常规内容,并在文档头部添加动态数据:

<link rel="stylesheet" href="http://site.com/resources/style.css" />

<style type="text/css">
  .userText { color: <?php echo $userTextColor; `> }
  etc. etc. 
</style>
这样,CSS资源可以保持静态文件。它不需要启动PHP进程来获得服务。如果您的CSS参数在页面之间发生变化,这将为您节省HTTP请求。

答案 1 :(得分:3)

是的,这是有效的HTML。对于HTML文档的有效性,唯一重要的是href attribute points to a URI.

<!ELEMENT link EMPTY>
<!ATTLIST link
  %attrs;
  charset     %Charset;      #IMPLIED
  href        %URI;          #IMPLIED
  hreflang    %LanguageCode; #IMPLIED
  type        %ContentType;  #IMPLIED
  rel         %LinkTypes;    #IMPLIED
  rev         %LinkTypes;    #IMPLIED
  media       %MediaDesc;    #IMPLIED
  >

您可以使用http://validator.w3.org/check

检查文档的有效性

但是......

位于该URI的脚本必须使用正确的标头提供任何内容,以便浏览器实际上可以将其解释为CSS。这与HTML有效性完全不同。因此,要提供CSS文件,您必须设置text / css标题。

请注意,尽管unless you implement some sort of caching mechanism通常不鼓励使用此方法。当您指向PHP文件时,Web服务器将执行PHP文件,因此您将丢失通常用于静态资源的任何缓存机制。

答案 2 :(得分:1)

只要您输出正确的CSS就可以了。您的浏览器不关心样式表的生成方式或URI的外观。它只需要是一个样式表。

答案 3 :(得分:0)

只要你设置了正确的标题,就不应该有任何问题。