我正在构建一个php cms风格的应用程序,用于跟踪成员角色,项目很顺利,但我想知道是否有更有效的编码导航栏的方法。
条形图包含在许多不同的页面中,因此标准的相对链接因显而易见的原因无法正常工作,我通过此方式解决这个问题的方法是
if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/char/")) {
$home = "../../index.php";
$logout = "../user/logout.php";
} else if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/user/")) {
等
所以我有每个可以输入的路径组合,这个解决方案很有效,但很好,但是因为我复制粘贴代码并进行更改,我错过了一些东西的机会增加了,并且有更多的链接这个机会是增加。
我想知道是否有更好的方法可以用更少的代码实现相同的结果?
非常感谢任何建议。
答案 0 :(得分:1)
您可能希望在定义常量的位置创建一个公共配置文件(包括在所有脚本中)(例如BASE_URL ='http:// localhost / your_site /')。
然后,使用配置文件中定义的BASE_URL常量,改为使用ABSOLUTE值更改所有链接。
最后你会得到类似的东西:
$home = BASE_URL . 'index.php';
始终是有效的链接。
部署时,您需要更改配置文件并将BASE_URL
设置为新域名(例如www.mysite.com
)。
答案 1 :(得分:0)
之前的建议,虽然没有完全回答我的问题但确实给了我一个使用名为$ BASE_URL的变量的想法。从这里我使用sytax如。
if (strstr($_SERVER['SCRIPT_FILENAME'], "admin/index.php")) {
$BASE_URL = substr($_SERVER['SCRIPT_FILENAME'], 0, -15)
} else if (strstr($_SERVER['SCRIPT_FILENAME'], "index.php")) {
$BASE_URL = substr($_SERVER['SCRIPT_FILENAME'], 0, -9)
}
我已经为多个路径重复了这一点,虽然它占用了相当多的空间,但是当从一个页面断开链接时我需要做的就是添加页面地址和相应的长度,这更容易。
我已将此代码包含在我的header.php文件中,从而使整个站点的变量也可以访问。