我正在开发一个连接到MySQL数据库的项目,需要以下内容:
登录者可以使用两项:
我目前的网站结构如下:
*Shortened* URL (project root folder): sois.com/440/finalproject/
这是您在登录前应该看到的图像:
/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');
?>
我的问题很简单,我收到错误:
问题: 如何正确链接header.php和footer.php(位于include文件夹中)的文件位置,以便我的index.php(位于Home文件夹中)正确显示,如上图所示?
虽然我知道StackOverflow周围还有其他帖子,但我找不到一个我完全理解并可以应用于我的情况的帖子。如果我的问题看起来很简单,我会道歉但我非常感谢任何帮助!
感谢大家,如果您有任何其他问题或需要更多详情,请与我们联系。
答案 0 :(得分: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';
这基本上告诉PHP从/home
升级到一级(进入/
),进入includes
目录,并包含footer.php
或{{1文件。
答案 1 :(得分:0)
您可以使用dirname(__FILE__);
php函数 - 给定包含文件或目录路径的字符串,此函数将返回父目录的路径。
$file_path = dirname(__FILE__);
include $file_path . DIRECTORY_SEPARATOR . 'header.php';
答案 2 :(得分:0)
您可以使用__DIR__
获取当前脚本的路径(如果 DIR 不可用,则可以dirname(__FILE__)
。
现在,要包含您可以执行的文件:
<?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);