在php中包含功能

时间:2017-02-11 04:43:24

标签: php html

我有一个导航栏页面,我可以用于我网站上的所有页面。但是,我构建了一个新的登录页面,但是当我连接到导航栏页面时出错。 我所有文件的结构: enter image description here

我想将导航栏应用到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中进行更改?

2 个答案:

答案 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

当您访问/uploadTesting2/login.php作为切入点时,navHeader.phpdata.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">