我有一个导航栏页面,我可以用于我网站上的所有页面。但是,我构建了一个新的登录页面,但是当我连接到导航栏页面时出错。 我所有文件的结构:
我想将导航栏应用到uploadTesting2文件下的login.php。我在login.php中输入的导航栏代码是:
<?php include '../navHeader.php'; ?>
navHearder.php中的代码是:
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="index.php">About</a></li>
<li><a href="news.php">News</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Collection <b class="caret"></b></a>
<ul class="dropdown-menu">
<?php
include './data.php';
for ($i = 0; $i < count($collectionArr); $i++) {
echo '<li>';
echo '<a href=\'collectionPage.php?cat=' . $collectionArr[$i]['catCode'] . '\'>';
echo $collectionArr[$i]['catName'];
echo '</a>';
echo '</li>';
}
?>
</ul>
</li>
<li><a href="ordering.php">Ordering</a></li>
<li><a href="contactus.php">Contact</a></li>
<li><a href="uploadTesting2/login.php">Admin</a></li>
</ul>
</div>
但是,代码无效。当我单击index.php时,它将显示错误。网址错误,网址显示为:http://localhost:7777/ca2/CA2script/uploadTesting2/index.php
我应该在uploadTesting2中再应用一个导航php,还是可以在navHeader.php中进行更改?
答案 0 :(得分:0)
为了获得最佳实践,请将主(基础)网址定义为常量,然后在任何位置使用它。 假设您的基本网址是“http://localhost:7777/ca2/CA2script/”
你可以这样做:
define('BASE_URL',"http://localhost:7777/ca2/CA2script/");
然后在任何文件中,您都可以将其用于链接
例如:在您的navHearder.php中使用如下:
<li class="active"><a href="<?=BASE_URL?>index.php">About</a></li>
假设您的文件在目录中:
<a href="<?=BASE_URL?>dir_name/file_name.php">link</a>
答案 1 :(得分:0)
include
include
语句根据相对于入口点的位置来关联文件。例如,如果您有这样的文件结构:
当您访问/uploadTesting2/login.php
作为切入点时,navHeader.php
和data.php
的位置应为../navHeader.php
和../data.php
。即使在login.php
包含的脚本中也是如此。因此,navHeader.php
只应在data.php
中找到../data.php
。
解决此问题的常用方法是使用__DIR__
常量作为参考。此常量将始终是脚本文件的父文件夹(而不是条目文件)。如果您在__DIR__
内回显navHeader.php
,那么无论包含什么内容,它都将是您的根的系统路径。
因此,而不是这个包括声明:
include './data.php';
你可以这样做:
include __DIR__ . '/data.php';
相对于您当前的路径,也会解析链接。因此
<a href="collectionPage.php?cat=abc">
/uploadTesting2/index.php
网址中的解析为/uploadTesting2/collectionPage.php?cat=abc
。相反,你应该做
<a href="../collectionPage.php?cat=abc">