在href =“”定义中使用PHP标记

时间:2012-02-14 04:32:44

标签: php html-table directory include root

我正在使用一个简单的解决方案来获取服务器root,并且它与我的包含有很好的效果:

<?php $root = $_SERVER['DOCUMENT_ROOT'].'/frizkie'; ?>

我正在做一些表,包含该表的.php文件嵌套在以下几个目录中:

/main/tools/planners.php

我的图片位于:

/images/staticons/

我的代码如下:

<td onClick="document.location.href='planners/agility.php';">Contents</a></td>

我希望能够将$ root目录用于'planners / agility.php'部分,但是这样做:

onClick="document.location.href='<?php echo $root; ?>/planners/agility.php';"

导致onClick部分根本不起作用。除此之外,我还想使用$root变量使用相同的方法定义表格单元格背景。我尝试在background =“”定义中使用PHP标记,但图像不会在Chrome或Firefox中显示 - 只有IE9。

2 个答案:

答案 0 :(得分:1)

正如您已经指出的那样,

$_SERVER['DOCUMENT_ROOT']可用于服务器端路径。您不需要将它放在标记,CSS和JS中。我坚持使用绝对相对路径,如/images/background.jpg(注意前导斜杠)。这样,即使您的网页是通过

这样的网址访问的

http://example.com/blog/123-my-beautiful-post/

下载图像

http://example.com/images/background.jpg

而不是

http://example.com/images/blog/123-my-beautiful-post/images/background.jpg

在包含分散在文档根目录周围的多个文件时,使用DOCUMENT_ROOT会有很大帮助 - 在这里使用相对路径让我很头疼。但是,如果你真的想在页面中填写完整的网址,那么你可以尝试使用$_SERVER['SERVER_NAME'],但我真的不明白这样做的必要。

答案 1 :(得分:0)

编写HTML标记时,请勿在href中使用服务器路径。相反,href应该是相对于您网站域的基础。

如果要通过require / require_once / include / include_once加载PHP文件,请使用文档根目录。

此外,您的代码无法正常工作的原因可能是因为在某些Web服务器安装中,文档根目录存在以下三种情况之一(在Apache httpd.conf中设置):

  1. 未设置
  2. 有一个尾随斜杠
  3. 没有尾随斜杠
  4. 所以你必须检查所有三个条件,然后决定总是有一个尾随斜杠。

    如果没有设置,你应该明确地将$ docroot设置为定义的常量,如define(“DOCROOT”,“/ user / home / jayleno /”),然后在整个代码中使用它。

    $docRoot = $_SERVER['DOCUMENT_ROOT'];
    if (strlen($docRoot) <= 0) {
       // you are going to have to hard code it
       $docRoot = "/usr/home/jayleno/";
    }
    $lastChar = substr($docRoot, -1);
    if ($lastChar != '\\' || $lastChar != '/')
       $docRoot .= "/";
    
    $templateRoot = $docRoot . "templates/";
    $moduleRoot = $docRoot . "modules/";
    .
    .
    $rootCanal = $docRoot . "mytootheaches/";