Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么&x2019;在我的CSS和JavaScript文件中嵌入PHP代码的正确方法是什么?_Php_Javascript_Css_Content Type - Fatal编程技术网

什么&x2019;在我的CSS和JavaScript文件中嵌入PHP代码的正确方法是什么?

什么&x2019;在我的CSS和JavaScript文件中嵌入PHP代码的正确方法是什么?,php,javascript,css,content-type,Php,Javascript,Css,Content Type,和其他人一样,我将我的站点的显示信息存储在样式表文件中。我想创建后端cms,这样用户就可以,例如,更改颜色、大小等 那么,在CSS文件中嵌入PHP代码的正确方法是什么 正在添加此标题: <?php header("Content-type: text/css"); ?> 和更改链接中的文件扩展名: <link rel="stylesheet" type="text/css" media="screen" href="style.php"> 有效吗 那么Java

和其他人一样,我将我的站点的显示信息存储在样式表文件中。我想创建后端cms,这样用户就可以,例如,更改

颜色、大小等

那么,在CSS文件中嵌入PHP代码的正确方法是什么

正在添加此标题:

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

和更改链接中的文件扩展名:

<link rel="stylesheet" type="text/css" media="screen" href="style.php">

有效吗

那么JavaScript呢?现在我正在回显
标记,但也许还有一种方法可以将所有内容嵌入到.js文件中


谢谢

是的,这是完全正确的

通过发送

<?php header("Content-type: application/javascript"); ?>

然而,从性能的角度来看,这并不是最优的,因为必须启动一个PHP进程来服务这些资源

如果您只有很少的动态更改CSS属性或JS变量,我会考虑将它们放入文档的头部,并继续静态地为外部文件服务。p>


请记住,通常不会为PHP文件发送缓存头。您必须注意在PHP脚本中发送正确的标题!感谢您的提醒。

请确保您正在解析这些文件中的php

.htaccess
中:

AddType application/x-httpd-php .php .css .js

这将确保除.php以外的文件类型中的任何
标记都将被服务器解析,并且用户无法读取php代码。

您所做的是绝对有效的

但是,如果您运行的是一个有很多访问者的大型站点,那么您应该考虑在用户更新其设计时,让PHP“构建”一个“真实”的CSS文件,以便将服务器性能保存到更好的需要:

<?php

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

// Your database magic here to fetch the user-specific designs 

// open the cached css
$cachefile = "cachedCSS/mycss.css";

if (file_exists($cachefile)) {
    // the page has been cached from an earlier request
    // output the contents of the cache file
    include($cachefile); 
    // exit the script, so that the rest isnt executed
    exit;
}

$fp = fopen($cachefile, 'w');
// save the contents of output buffer to the file
fwrite($fp, ob_get_contents());
// close the file
fclose($fp);
// Send the output to the browser
ob_end_flush(); 

但是你的浏览器会缓存样式/javascript吗,即使它是php服务的?@oracle取决于.php文件的服务器设置,但通常不会。你必须发送缓存头,好的一点,将其添加到答案中。+1尤其是具有不同
内容的静态文件值得考虑。此外,如果通过PHP提供半静态文件,请确保正确设置缓存头(例如,
Expires
Last Modified
)。。。。在《慢队长》中:)好的,伙计们,那么hov要为我的新的伪css和伪js文件发送缓存头吗?事实上,在将我的样式表扩展名更改为.php之后,一切仍然顺利进行。。。如果这样做,对CSS/JS资源的每个请求都将通过PHP的解释器传递。一般来说,这是不好的。更好地使用native.php扩展在这种情况下+1,这是两个世界中最好的(尽管也是最复杂的实现,通常只值得为高流量站点付出努力)