【问题标题】:Universal Navigation Bar PHP (Multiple Directories)通用导航栏 PHP(多个目录)
【发布时间】:2017-01-30 23:18:22
【问题描述】:

所以我已经使用 StackOverflow 编程相关主题超过 5 年了,从来没有考虑注册为 9/10 次我来,我找到了我正在寻找的东西。这一次,我翻遍了互联网,堆栈溢出的建议,我找不到答案,所以我在这里。

我正在寻找@include 一个导航栏,以便无论用户在哪个页面上都可以普遍访问它。问题是,我有多个目录,/login /登记 /个人资料

当然还有诸如 CSS 文件、导航和 JS 文件之类的东西。我不想经常将href定义为文件的'../'或'../../'。对于很快将是一个巨大的 PHP 文件目录的维护,这是一个疯狂的维护量。

我遇到的问题是尝试计算如何通过@include 文件检测用户所在的目录,以及他们是否希望返回主页,例如,确保发生正确数量的更改目录。

我希望我在这里说得通。

我相信我可能需要使用 $_SERVER,但我真的坚持即使提供我尝试过的代码。我不希望得到帮助,但更多的是解释。

谢谢

这是我的第一次尝试,它在一定程度上有效,但它取决于我最初测试代码的页面。回声只是为了看看自己在后台发生了什么。 使用 Laravel 框架非常容易完善它,但由于某种原因我一直在努力解决它。

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'index.php';
$folder = $uri;
$folder = "/Folder1/Folder2/Folder3/Folder4/Folder5";
echo substr_count($folder, "/");
echo '<br>' . $folder . '<br>';

$EndLoop = substr_count($folder, "/");

$String = '';

for($Loop = 1; $Loop < $EndLoop; $Loop ++)
{
echo $Loop;

$String = '../' . $String;
echo '<br>';
echo $String;
}

编辑 2:

我刚刚完成了这个通常有效的工作。我在使用

时意识到
<a href="signup">Sign Up</a>

正在将其路由到 host/directory_currently_in/signup/

所以我做的是这个

<?php $host = $_SERVER['HTTP_HOST'];

//further down

echo '<a href="http://' . $host . '/signup">Sign Up</a>';

因为注册目录位于根目录中,并且个人可能比根目录更远 3 个目录,所以我不得不尝试找到一种方法将它们直接备份到注册目录中的 2 或 3 个文件夹。

使用 http:// 并链接到主机已经为我完成了这项工作。有什么改进建议吗?

【问题讨论】:

  • 让你的所有网址都是绝对的而不是相对的。
  • PHP 中没有@include 这样的东西,只有include
  • 请发布您的工作代码或您尝试过的代码。
  • @Barmar 道歉,我是说包含来自 Laravel 框架的 AT 符号,这是我正在学习的东西。我的意思是包括。
  • @Barmar 这实际上不是真的。 @ 符号用于错误抑制,因此在文件不存在的情况下不会出现错误。

标签: php html navigation directory include


【解决方案1】:

尝试以下方式:

<?php 
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/common/header.php";
include_once($path);
?>

这样你总是引用基础,然后从那里构建文件夹结构。

【讨论】:

  • 感谢您的回复,尤达。我看到这段代码是如何工作的。它包括每个文件夹的 $path,因此您输入的目录数量会填充该字段,但这将如何让我进入一个目录。通常使用 '../' 去上一个目录。我的意思是,当然不是每个页面实际上都必须包含它需要的许多 ../?
  • 试一试。仅供参考:/ - 当前驱动器的根目录; ./ - 当前目录; ../ - 当前目录的父目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
相关资源
最近更新 更多