簡體   English   中英

Codeigniter-PHP到JS和/ CSS

[英]Codeigniter - php to js and/css

我正在使用codeigniter開發Web應用程序,並且想動態生成CSS和JS文件。

我的意思是,根據用戶在網站上使用的模塊,它應該包含不同的CSS和JS文件。 CSS這樣的東西:

foreach($modules as $module){
  include('path/to/module/css');
}

我將其保存在名為“模塊”的類中以及在名為“ get_css()”的函數中。 因此,codeigniter鏈接將為: http : //somesite.com/modules/get_css

但是我希望服務器認為這是一個css文件,並且我也希望它不要在我的應用程序(即應用程序/控制器)中,因為這可能會帶來安全威脅。 而是放在根目錄中。

我想我必須對htaccess做些事情,也許創建另一個文件來獲取該頁面的內容? 我實際上不知道該怎么做,和/或這是否是正確的方法。

感謝您的幫助。

您可以使get_css()方法檢索CSS文件的內容,將它們合並在一起,然后將緩存的 CSS文件輸出到磁盤。 使用散列為文件命名將很有幫助,因此您只為每個模塊的唯一組合生成合並的CSS文件。 因此,您將合並所有文件的內容,並將其命名為:

$output_filename = md5( $module_a_name . $module_b_name ... ) . '.css' ;

if (! file_exists( $output_filename ) {
    //generate merged CSS file
}

// Call back to your template layer to include $output_file in the page header

通過檢查服務器上是否已經存在該文件,可以防止重新生成文件,然后僅在模板中輸出指向所生成文件的包含樣式。 無需.htaccess更改,只需讓文件以與其他靜態內容相同的方式提供即可。

我絕不是安全專家,但是只要將PHP配置為將這些文件寫為不可執行的目錄,並且您不使用用戶輸入來獲取源CSS文件,就可以了。 更新源CSS文件時,您還需要清除緩存的CSS文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM