【问题标题】:How to hide header and footer.php如何隐藏页眉和页脚.php
【发布时间】:2018-10-22 09:35:41
【问题描述】:

大家好,我正在用 php 建立一个网站,我创建了我的第一个 3 页

-标题

-索引

-页脚

在 index.php 中我使用:

<?php include("header.php"); ?>


<?php include("footer.php"); ?>

我的问题是:

如果我转到我的网址http://localhost:8888/project/index.php

一切正常

但如果我写http://localhost:8888/project/header.php 或页脚

我怎么不能在这两个页面中显示它的内容?

因为如果我使用重定向我在 index.php 中有一个空白页面,因为 index.php 包含页眉和页脚

非常感谢

【问题讨论】:

  • 以下建议的答案很好,但更好的解决方案是将包含文件夹移动到网络无法访问的地方。
  • 这个怎么做?请
  • 如果您的网络文件夹是/var/www/project/html,请确保您的包含文件夹在/var/www/project/include 中。只有html 可以通过网络访问。所以你的 index.php 会像这样引用它 include '../include/header.php'; 我希望这很有意义。
  • 你确实意识到链接到本地​​主机是愚蠢的,因为我们无法访问你的本地主机,因此名称......
  • 您说例如:文件夹名称:BLUE,我在蓝色文件夹中有索引、页脚、页眉,现在在蓝色文件夹中创建了一个新文件夹,例如:红色并将页眉和页脚放在红色文件夹中?

标签: php


【解决方案1】:

转到您的页脚和页眉脚本,然后创建一个变量,例如:

$header = "<!doctype html><html><head>#head Content</head>";

并用 \" 替换每个 qoutes(查看 $footer 中的 div 类)

$footer = "<footer><div class=\"class\">#footer Content</div></footer></html>";

然后在 index.php 中让它回显变量

<?php
require_once("header.php");
require_once("footer.php");

echo $header;
echo $body;
echo $footer;
?>

然后您可以添加此代码以使其看起来文件不存在

<?php
  header('HTTP/1.0 404 Not Found');
  readfile('www.link.to/error-page/404');
  exit();
?>

注意:如何制作网站完全取决于您,但这是我使用的方法,并且效果很好。

额外: 你可以让你的 $body 像这样 假设您有一个文件夹调用脚本,您创建一个名为 pager.php 的文件 然后添加代码

<?php
    $dir = $_SERVER['PATH_INFO'];
    if(empty($dir)) {
        require_once("templates/mainpage.php");
    } elseif ($dir == "page2") {
        require_once("templates/page2.php");
    } else {
        require_once("templates/pages-doesnt-exist.php");
    }

?>

记得创建一个名为“模板”的文件夹并将所有页面添加到其中, 然后你就可以从http://example.com/index.php/{pagename} 访问所有页面 您也可以将此代码添加到您的 .htaccess

RewriteEngine On
RewriteRule ^page2$ /index.php/page2 [L] --page wise condition

所以http://example.com/page2 将访问http://example.com/index.php/page2

【讨论】:

    【解决方案2】:

    比较 $_SERVER['REQUEST_URI'] 以确保请求的页面/文件既不是 header.php 也不是 footer.php

    【讨论】:

    • 如果他有多个包含,他将不得不不断添加越来越多的条件。
    • 他不会。他只需将 REQUEST_URI 与当前文件名进行比较即可。
    【解决方案3】:

    在包含页眉或页脚之前在脚本中定义一个常量:

    index.php:

    define('MY_CONSTANT', 1);
    include 'header.php';
    //
    include 'footer.php';
    

    然后,在 header.php 和 footer.php 中检查常量是否未定义:

    if(!defined('MY_CONSTANT')) {
        // You can show a message
        die('Access not allowed!');
        // Or send user to index.php, first delete above line (die)
        header('Location:index.php');
        exit;  // This line is needed to stop script execution
    }
    // rest of header and footer code
    

    【讨论】:

    • 或者更好 - 重定向到比带有文本且没有导航链接或任何好的解释的白页更好的地方;)
    • 出于安全考虑,始终将 index.html 保存在每个文件夹中。您也可以在那里重定向到索引页面。
    • 或者更好的是,有一个前端控制器(甚至是一个非常基本的控制器)并抛出一个“accessNotAllowed”异常,最终出现在 404 页面上(但我现在正在推动它:D)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2011-02-23
    • 2014-01-29
    • 2011-08-17
    相关资源
    最近更新 更多