drl9940
2015-07-01 10:12
浏览 34
已采纳

在每个php page inc子文件夹中包含css

I am creating my first (basic) php application and would like to start as I mean to go on as regards file paths and globals - this is quite new to me. WHat I have now works however I would like to be advised if there is a more efficient way (for future-proofing/expansion)

I have a simple file structure as follows;

- css
 -- bootstrap.css
- lib
 -- display.php
- template
 -- header.php
 -- footer.php
- admin
 -- login.php
- globals.php
- index.php

I would like to include my css (bootstrap.css) on each page. I have declared a single global in my global.php as follows;

<?php define('URL', 'http://localhost/myLocalSite'); ?>

The in my display.php I have included the css;

<link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
<link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">

I include these in my index.php by using the following;

<?php include('globals.php') ?>
<?php include('template/header.php') ?>
<?php include('lib/display.php') ?>

I include these in my login.php by using the following (not the sub-folder location);

<?php include('../globals.php') ?>
<?php include('../template/header.php') ?>
<?php include('../lib/display.php') ?>

Whenever working in a file within a sub-directory (as above login.php) do I always need to include the ../ in order to include the files or is there a better way?

Like I say it works and I am new to this so ay advice is appreciated.

图片转代码服务由CSDN问答提供 功能建议

我正在创建我的第一个(基本的)php应用程序,并希望开始,因为我的意思是继续关于文件 路径和全局 - 这对我来说很新鲜。 我现在有什么工作但是我想知道是否有更有效的方法(为了面向未来/扩展)

我有一个简单的文件结构如下;

   -  css 
  -  bootstrap.css 
-lib 
  -  display.php 
- template 
  -  header.php 
  -  footer.php \  n- admin 
  -  login.php 
- globals.php 
- index.php 
   
 
 

我想包含我的css( 每页都有bootstrap.css )。 我在 global.php 中声明了一个全局,如下所示;

 &lt;?php define('URL','http:// 本地主机/ myLocalSite');  ?&gt; 
   
 
 

我的 display.php 我已经包含了css;

  &lt; link href =“&lt;?php echo URL?&gt; css / styles.css”rel =“stylesheet”&gt; 
&lt; link href =“&lt;?php echo URL?&gt; css / bootstrap  .min.css“rel =”stylesheet“&gt; 
   
 
 

我在 index.php 中包含这些内容,使用以下内容; < / p>

 &lt;?php include('globals.php')?&gt; 
&lt;?php include('template / header.php')?&gt; 
&lt;?  php include('lib / display.php')?&gt; 
   
 
 

我在 login.php 中包含这些内容,使用以下内容 (不是子文件夹位置);

 &lt;?php include('../ globals.php')?&gt; 
&lt;?php include('。  ./template/header.php')?&gt; 
&lt;?php include('../ lib / display.php')?&gt; 
   
 
 

每当在子目录中的文件中工作时(如上面的 login.php ),我总是需要包含 ../ 以包含文件或者在那里 更好的方式?

和我一样 说它有效,我是新手,所以我很感激。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanru6816 2015-07-01 10:17
    已采纳

    Instead if you want to remove PHP Processing logic, i would suggest using HTML <base> tag in your HTML <head> section, You can see example usage here

    <base href="http://www.yoursite.com/" target="_blank">
    

    Then you have to change these below lines

    <link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
    <link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">
    

    to

    <link href="css/styles.css" rel="stylesheet">
    <link href="css/bootstrap.min.css" rel="stylesheet">
    

    This will eliminate PHP processing part

    打赏 评论
  • duanmao1872 2015-07-01 10:19

    You can make index.php your Router and then rewrite request to it.
    Then you can declare a constant in index file and load other files from it.

    define('ROOT', dirname(__FILE__));
    

    and then you can include files everywhere like this

    require(ROOT.'/globals.php');
    require(ROOT.'/template/header.php');
    require(ROOT.'/lib/display.php');
    

    For ONLY example router: .htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    

    Then you can do anything in index.php, for example:

       <?php
        $uri = $_SERVER["REQUEST_URI"];
        require "templates/header.php";
        switch ($uri) {
            case "/":
                include "views/index.php";
                break;
            case "/login":
                include "admin/login.php";
                break;
            case "/something":
                include "views/something.php";
                break;
            default:
                include "views/404.php";
                header("HTTP/1.0 404 Not Found");
                break;
        }
        require "template/footer.php";
    

    Future improvements:

    • You can automate it in some way, to not create next case for each file

    • Some tutorial on php routing, but watch out for security reasons - dont include SECRET files

    打赏 评论

相关推荐 更多相似问题