1

我正在开发一个将连接到 MySQL 数据库的项目,需要以下内容:

  • 登记
  • 登入/登入/登出
  • 链接

登录的人可以使用两个项目:

  • 我的书签
  • 联系我们

我目前的网站结构如下:

 *Shortened* URL (project root folder): sois.com/440/finalproject/
  • finalproject 文件夹内容:htdocs 文件夹 | mysql_connect.php
  • htdocs 文件夹内容:书签文件夹 | 联系人文件夹 | 主文件夹 | 包括文件夹
  • 书签文件夹内容(所有 PHP 文件):添加 | 删除 | 删除确认 | 索引 | 搜索 | 搜索表 | 更新 | 更新表格
  • 联系人文件夹内容:contact.php
  • 主文件夹内容(所有 PHP 文件):忘记 | 索引 | 链接 | 登录 | 登录 | 登出 | 登记
  • 包括文件夹内容:footer.php | 头文件.php | 标志.jpg

这是您在登录之前应该看到的图像:

在此处输入图像描述

/Home/index.php 的代码如下:

<?php # index.php
session_start();
//check session first
if (!isset($_SESSION['email'])){
include ('header.php');
}else
{
include ('header.php');
}
?>

<h2>Project Description</h2>
<h2>Blah Blah Blah ...</h2>
<h2>put images here if you want ...</h2>
<h2>change background ...</h2>
<h2>modify the site as you want ...</h2>

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

我的问题很简单,我收到错误:

  • “警告:包括(kethcart.uwmsois.com/public_html/440/finalproject/htdocs/includes/header.php):无法打开流:/home/kethcart/public_html/440/finalproject/htdocs/中没有这样的文件或目录第 5 行的 home/index.php"
  • “警告:include(): 未能打开 'kethcart.uwmsois.com/public_html/440/finalproject/htdocs/includes/header.php' 以包含 (include_path='.:/usr/lib/php:/usr/local/ lib/php') 在 /home/kethcart/public_html/440/finalproject/htdocs/home/index.php 第 5 行"
  • “警告:包括(kethcart.uwmsois.com/public_html/440/finalproject/htdocs/includes/footer.php):无法打开流:/home/kethcart/public_html/440/finalproject/htdocs/中没有这样的文件或目录第 19 行的 home/index.php"
  • “警告:include(): 未能打开 'kethcart.uwmsois.com/public_html/440/finalproject/htdocs/includes/footer.php' 以包含 (include_path='.:/usr/lib/php:/usr/local/ lib/php') 在 /home/kethcart/public_html/440/finalproject/htdocs/home/index.php 第 19 行"

问题:如何正确链接 header.php 和 footer.php(位于包含文件夹中)的文件位置,以便我的 index.php(位于主文件夹中)正确显示,如上图?

虽然我知道 StackOverflow 周围还有其他帖子,但我找不到一个我完全理解并且可以适用于我的情况的帖子。如果我的问题看起来很简单,我深表歉意,但我非常感谢任何和所有帮助!

谢谢大家,如果您有任何其他问题或需要更多详细信息,请告诉我。

4

3 回答 3

0

您可以使用dirname(__FILE__);php 函数 - 给定一个包含文件或目录路径的字符串,此函数将返回父目录的路径。

$file_path = dirname(__FILE__);
include $file_path . DIRECTORY_SEPARATOR . 'header.php';

参考:http ://us1.php.net/dirname

于 2013-11-20T09:47:00.787 回答
0

__DIR__您可以通过使用(或者dirname(__FILE__)如果DIR不可用)来获取当前脚本的路径。

现在,要包含一个文件,您可以执行以下操作:

<?php
define('ROOT', __DIR__.'/');
include (ROOT.'includes/header.php');
// or include relative to the root dir (if it's in a parent or sub dir)
include (ROOT.'../../header.php');
include (ROOT.'../includes/header.php');
// and if you want a "cleaner inclusion"
// the following will get the full absolute path without ".."
$path = realpath(ROOT.'../../header.php');
include ($path);
于 2013-11-20T09:47:54.013 回答
0

当您像当前一样在 PHP 中包含文件时(仅提供文件名,例如header.php),PHP 将在与当前正在执行的文件相同的目录中查找。

根据我对您的描述的理解(我很难理解格式),这是您在文档根目录中的目录布局(我只显示了对这个答案很重要的文件):

/home/index.php
/includes/header.php
/includes/footer.php

因此,如果您在 中/home/index.php,并且您include 'header.php',PHP 将假定您正在寻找位于 的文件/home/header.php。您需要做的是告诉 PHP 您正在寻找不同的位置。

在回答您的问题时,这样做的一个好方法是告诉 PHP相对于当前目录查找。这就是你的包含之后的样子:

include '../includes/header.php';
include '../includes/footer.php';

/home这基本上告诉 PHP 从(go into )上一级/,进入includes目录,并包含footer.phporheader.php文件。

于 2013-11-20T09:43:10.900 回答