PHP包含麻烦

时间:2016-04-04 23:39:19

标签: php include

我一直试图将其作为我网站的一部分包含约2周。在多个问题和长期研究中,我已经发现php是最好的方法。我开始尝试使用html注释方式的服务器端包含,然后我去了php并研究了包含工作所需的所有不同扩展等等。我已经为Mac下载了MAMP,因为它知道它可以使用包含。我用PHP的类似代码一次又一次地尝试,无论出于何种原因,它都无法正常工作。无论是youtube上的newboston还是php的手册,我都没有成功。

最后,我遇到了http://www.w3schools.com/php/php_includes.asp。 我已经将他们的代码保存到一个文件夹中并在MAMP上运行它,它神奇地工作了。我想如果我把它实现到我的网站上就行了。再次,没有成功。所以我请你帮忙。

守则:

页脚:(footer.php)

sendKeys()

标题:(header.php文件)

<?php echo'<div class ="footer">
<p>Contact Us! <br> @allwaterpolo</p>
<a href="#"><img src ="img/Facebook_Png_01.png" class="facebook" id="FaceBook Link" /> </a>
<a href="#"><img src ="img/Uiconstock-Socialmedia-Instagram.ico" class="instagram" id="Instagram Link" /> </a>
 <a href="#"><img src ="img/Twitter_Logo_Hd_Png_03.png" class="twitter" id="Twitter Link" /> </a>
<a href="#"><img src ="img/Youtube_icon.png" class="youtube" id="YouTube Link" /> </a>
<div class="aboutus">
<a href ="htmlfiles/aboutUs.php">About <br>Us</a>
</div>
<div class= copyright>
Copyright &copy; 2016<script>new Date().getFullYear()>2016&&document.write("-"+new Date().getFullYear());</script>, <br> All Water Polo. All rights reserved
</div>
</div> ';?>

导航栏:(navbar.php)

<?php echo'<div class ="header">
<h1>The Best Sport</h1>
<h1 class="sitetitle">AllWaterPolo</h1>
<img src ="img/51wmckj8p1l__sx300__1.png" class="wpball" alt="Water Polo Ball" />
<h2 class="homeScreenLink"> <a href ="index.html">Water Polo!</a></h2> </div>';?>

我网站中的网页:( aboutUs.php)

<?php echo'<div class="navBar">
    <ul>
    <li><a href ="htmlfiles/history.php">History
    </a></li>
    <li><a href ="htmlfiles/started.php"> Get Started</a></li>
    <li><a href ="htmlfiles/positions.php">Positions</a></li>
    <li><a href ="htmlfiles/rules.php">Rules</a></li>
    <li><a href ="htmlfiles/nationalleague.php">National League</a></li>
    <li> <a href ="htmlfiles/extras.php">Extras</a>
        <ul>
            <li><a href="#">Videos</a> </li>
            <li><a href="#">Plays</a> </li>
            <li><a href="#">TBA</a> </li>
        </ul>
    </li>
    </ul>
</div>';?>

(我不允许发布直接图片) Directory Structure

这次使用../includes/header.php的版本,我的页面显示了一些希望。唯一的问题是包含没有访问css和图像文件,结果是这样的:抱歉无法发布两张图片,但新页面没有css影响,看起来像纯文本。

3 个答案:

答案 0 :(得分:1)

如果您正在使用MAMP,那么我相信您将网站文件放入名为www的文件夹中,我是对的吗?假设这是正确的。您有一个名为waterpolo-site的网站文件夹,因此您可以通过在Safari's address bar中输入此网站来显示该网站:

localhost/waterpolo-site

Safari的地址栏应显示:http://waterpolo-site/index.html。如果这不正确,请纠正我。

(1)通常,我们将构建网站:

example.com
    - css
        styles.css
        bootstrap.min.css
    - js
        index.js
        jquery.min.js
        bootstrap.min.js
    - img
        logo.jpg
        pic1.jpg
        pic2.jpg
        another_pic.jpg
    - inc
        connect.inc.php
        head.inc.php
        header.inc.php
        footer.inc.php
        nav.inc.php
    index.php
    about.php
    history.php
    positions.php

如果您按上述方式构建网站文件夹结构,那么文件的所有路径都是直截了当的:include "folder/file.ext"<link href="folder/file.ext"

(2)文件 head.inc.php 可能如下所示:

<?php
    session_start();
    include 'inc/connect.inc.php';
    //Any more PHP instructions here
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>My Soccer Website</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="A description of my website goes here" />
    <meta name="keywords" content="soccer, football, hooligans, beer, beckham, stadium, scalpers" />
    <meta name="robots" content="index,follow" />

    <link rel="icon" type="image/png" href="img/favicon.png?v=2" />
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

    <link rel="stylesheet" type="text/css" href="css/index.css" />

    <link href="http://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css">
    <link href="http://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css">
</head>

(3)请注意,PHP代码仅用于执行PHP操作 - 调用函数,数据库查找,session_start等。一旦关闭PHP标记?>,就会输出HTML,就像它是{{1}一样。 1}}文件。

(4)以.html结尾的文件与以.php结尾的文件之间的主要区别在于PHP文件 处理PHP命令。两者都可以完全相同地处理HTML。实际上没有必要使用文件扩展名.html

(5)注意.html上的小技巧。如果您更新文件(css,js等)并且您希望访问者使用新文件而不是存储在其浏览器缓存中的先前获取的版本,那么您可以添加favicon假GET参数和presto!他们将从您的服务器下载更新版本。但是,下次他们访问时,他们可能会使用缓存中的版本,除非您再次更改该GET参数。

答案 1 :(得分:0)

PHP include语句与通过...

访问的文件有关

EG:

如果您使用index.php访问该网站,则包含需要为...

include("includes/footer.php");

如果您直接访问这些页面,例如:http://domain.com/htmlfiles/aboutUs.php那么include必须是......

include("../includes/footer.php");

使用../路径前缀相当于在目录结构中说一个级别。

答案 2 :(得分:0)

使用相对文件路径执行include时,PHP首先使用当前目录查找文件,然后在包含路径中查找(包含路径可以通过phpinfo()找到)。 / p>

在您的情况下,您的footer.phpnavbar.phpheader.php都位于包含目录中,但您的aboutUs.php位于htmlfiles目录中

要解决此问题,您可以执行以下操作:

<强> aboutUs.php

include dirname(__DIR__) . '/includes/header.php';

经验谈话:我们通常不include '../includes/header.php',因为这是邪恶的。虽然从第一眼就看起来很好,如果另一个目录中有另一个文件尝试包含aboutUs.php,相对路径将会改变,并且再次找不到您的标题。做dirname(__DIR__)是为了确保&#34;我希望PHP相对于当前文件的目录搜索此文件,而不是其他文件&#34;

include语句功能非常强大,因为它可以用于其他奇特的东西,例如,包含来自另一个php文件的数组(用于配置),甚至包括来自URL的内容。请仔细阅读:)