有选择地/怪异地工作 - 这是正常的吗?

时间:2012-02-25 04:18:08

标签: php html base

我在整个项目中使用以下内容,直到现在都没有发现问题:

   include '../titleBar.php';
   require_once '../navBar.php';
   require_once '../theDatabase.php'; // functions for the UI and DB access
   require_once '../globals.php'; // variables and statics used throughout

上面的FINE工作了3周。文件名之前../的原因是:上述语句出现在用户特定文件中的用户子文件夹中,例如 FOO_x.php ,这些文件特定于用户输入的数据 - 仅包含以上内容和require_once文件涉及公共代码,公共代码是根网站目录中子文件夹上方的一个目录。

所以我添加了这个新代码,它没有引入样式表:

   include '../titleBar.php';
   require_once '../navBar.php';
   require_once '../theDatabase.php';
   require_once '../globals.php';

   <html>
   <head>
    <link rel="stylesheet" type="text/css" href="../globalStyles.css" />   

我将其更改为此,并将样式表拉到用户特定文件FOO_x.php:

    <link rel="stylesheet" type="text/css" href="globalStyles.css" />  

KEEP IN MIND - 上面的链接rel位于根网站子目录中的文件 FOO_x.php 中。 AND - 文件'globalStyles.css'是.....不在FOO_x.php所在的子目录中。

文件'globalStyles.css'是包含FOO_x.php的文件夹的一个级别。

那么为什么/怎么可能href = globalStyles.css工作呢?那就好了。

因为过去3周,FOO_x.php顶部的include / require列表中的第二个文件'navBar.php' 在其中有以下声明:

     <base href='http://localhost/theSiteRootFolder/'></base>

所以当我尝试

    <link rel="stylesheet" type="text/css" href="../globalStyles.css" /> 

并且没有任何样式出现在FOO_x.php页面上,我将其切换为

   <link rel="stylesheet" type="text/css" href="globalStyles.css" />  

突然出现了风格。然后,我记得“很久以前”,我会把“基础”声明 在navBar.php。

接下来我想“好吧,如果link rel语句使用了navBar.php中的'base'语句 - 那么文件 theDatabase.php globals.php 的require_once也不需要../。 毕竟,这两个文件在在require_once navBar.php中的'base'语句后出现,就像 链接rel语句。“逻辑(给我)。

所以我将文件FOO_x.php的顶部更改为:

   include '../titleBar.php';
   require_once '../navBar.php';
   // these next 2 file 'requires'  should work -- the navBar.php declared a 'base' to be the folder above this one
   require_once 'theDatabase.php';
   require_once 'globals.php';

我认为“一旦navBar.php被其基础声明引入,因为显然链接相关坚持认为 globalStyles.css不能有../ - 那么theDatabase.php或者globals.php也不应该。

因为所有这三个语句都出现在'base'语句的 href ='http:// localhost / theSiteRootFolder 之后 相对路径根。

然而,只有link rel'尊重'或支付注册在navBar.php上面声明的'基础'语句。

为什么呢?我不明白为什么,因为navBar.php建立了所有相对路径解决的“基础” - 为什么这不起作用:

    <link rel="stylesheet" type="text/css" href="../globalStyles.css" /> 

但这些工作很精细?

   include '../titleBar.php';
   require_once '../navBar.php';
   // okay the 'base' was just established yet I still have to do this:
   require_once '../theDatabase.php';
   require_once '../globals.php';

1 个答案:

答案 0 :(得分:5)

PHP解析器不解析HTML。它仅在<?php ?>标记之间解析 内容。基本上,您的<base>标记对PHP来说毫无意义。

我建议你不要使用<base>,因为我永远不会看到使用它的理由。