混淆URL包括_once在php中



我知道这不是使用stackoverflow的正确方法,但是我只需要快速回答我的问题

这是文件夹层次结构

login (folder)
  -- login.php
php (folder)
  -- connection.php
index.php

在login.php中我使用 include_once("../php/connection.php")

在index.php中我使用 include_once("login/login.php")

当我运行index.php时,我会收到以下问题

警告:include_once(../php/connection.php(:未能打开流:/.../.../public_html/plog/login/login/login/login.php在第3行3

中没有此类文件或目录

预先感谢您的帮助:(

您更接近最佳答案,但是更好的模式是:

您创建一个引导脚本并将其放置在已知位置。为此,重要的是,每个脚本都需要相对于该脚本require_once((bootstrap文件。

大多数框架都使用前控制器模式,该图案是MVC框架的典型入口点,但是即使此时对您来说太复杂了,只要您始终surectir_once('../somedir/bootstrap(,此技术仍然有效.php'(;

Bootstrap.php脚本是任何配置设置,阅读环境变量,设置常数等的好地方。

一开始,您想拥有这样的东西:

if (!defined('ABSPATH')) {
    define('ABSPATH', dirname(__FILE__) . '/');
}

现在,重要的是,您了解其他文件可能与Bootstrap.php所在目录所具有的关系。例如,您将其放在login.php目录中。

那么您的require_once((将是:

require_once(ABSPATH . login.php);

连接将是:

require_once(ABSPATH . '../php/connection.php');

我强烈建议您的inceed_once include_once,如果您的系统在没有随附的文件的情况下实际上是非功能性的,那么可能是如果您无法在登录时连接到数据库。require_once会导致运行时错误,而Include_once只是在Merry的方式上继续进行,无论它是否可以真正找到并包括文件。

老实说,这不是您目录命名的忠实拥护者。称为/php的目录?那告诉你什么?这不是所有PHP代码吗?

人们对良好的结构进行了很多思考,然后是PSR的努力,作曲家等。看看这一点。

我更新代码,因此使用常量的base_url,您将定义根,以便您可以从其他网站

使用它
<?php
 define('BASE_URL', 'http://example.com');
 include(BASE_URL."/php/connection.php");
?>

我做了一些研究,发现这样做的最佳方法而无需声明任何常数是:

在login.php中i connection.php shis include_once( substr(__DIR__, 0, strrpos(__DIR__, "/") + 1 ) . "php/connection.php");

这样可以解决整个问题。我不必定义任何东西。现在,我几乎可以在无需更改任何内容的情况下复制这个子文件夹。

最新更新