目录php

时间:2012-05-17 18:23:54

标签: php mysql html

我有图像目录,mysite / 2012/5/15 / image.jpg,我的页眉和页脚在mysite /。然后我从数据库中获取image.jpg,并在另一页中显示用户提交的标题和注释(如果有的话)。在header.php和footer.php里面,我指向一个也位于mysite /目录下的css文件。我的问题是:从我的图像目录访问页眉和页脚的最佳方法是什么?我这样做的方式如下:

include('../../../header.php');
include('../../../footer.php');

但是在我执行此操作并尝试显示页面之后,css文件无法加载,因为它在image目录中不存在。为了解决这个问题,我在页眉和页脚中添加了一堆if语句:

       if(!strcmp($thisPage,"images")) {
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../file.css\" media=\"screen,projection\" />";
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../file2.css\" media=\"print\" />;";
       }
       else
       {
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"file.css\" media=\"screen,projection\" />";
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"file2.css\" media=\"print\" />";
       }

有更好的方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

我建议您使用绝对路径而不是相对路径。

如果您担心自己可能想要更改目录结构并且不想轻松替换所有绝对路径,那么您可以将绝对路径存储在PHP变量或常量中,甚至是Apache服务器中变量,所以如果您的目录结构发生变化,您只需要更新一个变量:

define("CSS_PATH", "http://mysite.com/css");

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"". CSS_PATH ."/file.css\" media=\"screen,projection\" />";

// OR

// add `SetEnv CSS_PATH "http://mysite.com/css"` to your Apache config file or envvars file

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$_SERVER["CSS_PATH"]}/file.css\" media=\"screen,projection\" />";

答案 1 :(得分:0)

您可以使用常量,也可以使用:

echo $_SERVER["HTTP_HOST"]; //outputs www.example.com

它为您提供了您网站的域名。

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://". $_SERVER["HTTP_HOST"] ."/css/file.css\" media=\"screen,projection\" />";

但是,如果您链​​接到样式表而无法使用文件系统位置,Travesty3所具有的正确性,您需要使用CSS文件的URL。

define("CSS_PATH", "http://mysite.com/css");

通常,当我启动一个站点时,我做的第一件事就是设置常量,如:

define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT']);
define('SITE_URL','http://www.example.com/');
define('JS_DIR',SITE_URL . 'js/');
define('CSS_DIR',SITE_URL . 'css/');