【发布时间】: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