在我的第一个网站上工作,除了......之外一切顺利,
我在每个页面上使用相同的标题(带下拉菜单)和页脚。由于我稍后将使用样式拨号,我为每个设置了一个html文件,我使用php include将它们插入到页面中,这样我就可以在一个地方编辑标题。
这很有效,直到我需要在子目录中创建一些页面(以保持组织有序)。现在,我正在用标题链接玩弄w鼹鼠。链接到标题中的页面都在public_html文件夹中。我想通过在文件名前加一个/,无论当前页面的位置如何,它都可以工作,但事实并非如此。
我正在寻找一种方法来创建一个链接,可以从/public_html/page2.php和public_html / Subdirectory / page3.php找到public_html / index.php。我考虑使用绝对链接,但是我使用XAMPP在localhost副本上进行大部分编辑,然后上传到服务器。此外,看起来每个人都同意这种不良形式。
我一直在寻找线索,但我不确定我是否正确地构建了这个问题。希望这是有道理的。
感谢。
答案 0 :(得分:0)
“基本”方法
我以前用它做的方法是在根php文件中定义__BASE__
,所以在你的情况下我猜是index.php
文件。它看起来像这样:
<?php
define('__BASE__', __DIR__);
// other stuff and includes in index.php
然后我在index.php
中包含/要求的任何文件都可以使用该costant,所以假设您包含classes/anything.php
。然后在该文件中,您可以尝试echo
__BASE__
常量,看看你得到了什么。
<?php
echo __BASE__; // the absolute path to index.php (not always the root of your project)
如果您的index.php
文件位于项目的root
之外,我建议您重写__BASE__
路径到根目录。
假设您有index.php
内/public_folder/
目录,那么您的__BASE__
将设置为__DIR__.'/../'
,因此它指向您的根目录。
通过这种方式,您可以轻松访问所有文件,因为__BASE__
非常适合项目的根目录,您可以非常轻松地构建所需文件的路径。
为了更好地解释它,让我们说你的结构是:
/ -> root of your project
/www/ -> root of the web server
/web-parts/ -> some of your files
然后在index.php
目录中的/www/
内,您将定义__BASE__
,就像我在第一个示例中所做的那样,添加了/../
(然后指向您的/
[所谓的“root”]目录)。
之后,让我们说你在/web-parts/
文件夹中包含一些文件。
include(__BASE__.'web-parts/header.php'); // including some header.php file from /web-parts/ path
当然,当您在__BASE__
文件中定义index.php
后,其中包含header.php
文件,您仍然可以使用__BASE__
内的header.php
{1}}。因此,例如,假设您需要将metas.html
路径中的/web-parts/someotherdirectory/
文件导入header.php
文件。
<?php
// header.php file
include(__BASE__.'web-parts/someotherdirectory/metas.html'); // you're still able to do this and you're still getting the absolute path
......你走了。通过这种方式,您可以保持组织有序,并且在部署Web应用程序时不会出现任何问题。
<强>作曲强>
我不确定你现在所处的水平,但如果你使用对象编程你是web应用程序,你可以使用composer的自动加载来加载类。如果你不这样做,你一定要看看面向对象的编程,因为它现在非常需要。
如果我对这个问题的理解不当,我很抱歉,但是如果这样做对您没有帮助,您可以考虑共享代码示例。