如何在 HTML / PHP 中使用“?main=”

How to use "?main=" in HTML / PHP

我正在尝试以仅“主要”更改的方式从我的根文件夹的子目录中引用文件。

我的 home.php 文件中有这段代码:

<div id="main" class="main">
        <?php require $_GET['main'] . ".php"; ?>
    </div>

所有导航按钮应将“主要”更改为包含 home.php.

的文件夹下各个文件夹中的某些文件

如果我引用的文件与我的工作文件位于同一文件夹中,则以下代码片段可以完美运行:

<a href="?main=dashboard.php">Dashboard 1</a>

我想做的(我想象的)是这样的:

<a href="?main=folder/dashboard.php"> Dashboard 1</a>

我引用的文件在不同的文件夹中。

另外,如果我用

引用有问题的文件
<a href="folder/dashboard.php"> Dashboard 1</a>

文件加载,但它没有像 ?main=

那样以“主要”为目标

我尝试了我读到的无数方法/虽然可行,但到目前为止没有任何效果。任何帮助将不胜感激。

不要求用户输入未经验证的文件!

<?php
// For Security a list of granted paths.
$allowedPaths = [
    'folder/dashboard.php',
];

$main = isset($_GET['main']) ? $_GET['main'] : '';
if(!in_array($main, $allowedPaths) {
   // Error handling
   die('Path not allowed');
}

require $main;
?>

link 可能看起来像

<a href="?main=folder%2Fdashboard.php">
  • 请注意,必须对 URL 进行编码 -> echo urlencode('folder/dashboard.php'); 以使斜杠有效。
  • 注意不要两次添加 .php 扩展(一次在 URL 中,另一次在代码中)。