Загружать файлы в подкаталогах в PHP - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть базовый c полустати c веб-сайт, написанный на PHP. В папке root у меня есть файл с именем posts.php, а также папка с именем posts, в которой находятся post1.php, post2.php и т. Д. И т. Д.

the * Файл 1007 * находится в папке root. При открытии он создает список из файлов внутри папки posts и ссылки на них.

По сути, я хочу открыть php страниц, которые я создаю статически, и сохранить в папке posts / в браузере.

Проблема заключается в том, что при попытке открыть эти сообщения я не могу. Я могу жестко связать их, и это «работает», но если я это сделаю, мои базовые шаблоны не будут работать.

Когда я нажимаю ссылки I go с одной страницы на другую, и URL показывает ?p=index или ?p=posts. post1.php должно быть примерно как ?p=posts/post1, но это не работает.

Может быть проблема с именованием, поскольку есть папка и файл php с тем же именем (сообщения), но я не уверен, что это так, и как обойти это.

edit : Ниже приведены части кода, которые, по моему мнению, относятся к этой проблеме:

мой индекс. php

<?php
require_once('functions.php');
require_once('header.php');
load_page();
// require_once('init.php');
require_once('footer.php');
?>

My заголовок. php

<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<meta charset="utf8">
<title>Paulo RSS Alves</title>
</head>
<body>
  <div>
       <!-- these are working without any issue -->
      <h1><a href='?p=index'>Paulo RSS Alves</a></h1>
    <div class="bar">
      <p><a href="?p=posts" class="link">Posts</a></p>
    </div>

сообщений. php:

<?php 
$dir = scandir('./post');
foreach ($dir as $file)
{
    $path_parts = pathinfo($file);
    if ($path_parts['extension'] == 'php' and ctype_alpha($file[0])){
        // the purpose of this code is to only consider files with 
        // the .php extension and to remove that extension from the url.
        $file_f = str_replace('.'.$path_parts['extension'],  "", $file);
        echo '<li><a href='.'post/'.$file_f.'>'.$file_f.'</li>';
    }
}
?>

и функций. php:

<?php
function load_page() {
    (isset($_GET['p'])) ? $page = $_GET['p'] : $page = 'index';
    if (file_exists($page) && $page != 'index'){
        require_once($page);
    } else{
        require_once('init.php');
    }
}
?>

init. php это просто экран приветствия.

и схема моего файлового дерева:

 index.php

 init.php

 header.php

 footer.php

 functions.php

 posts.php

 posts/
   post1.php

   post2.php

1 Ответ

1 голос
/ 27 апреля 2020

Вам не нужно из папки сообщений

<?php
function load_page() {
    $dir = './posts/';

    (isset($_GET['p'])) ? $page = $_GET['p'] : $page = 'index';
    if (file_exists($page) && $page != 'index'){
        require_once($dir . $page);
    // add directory ^^^^
    } else{
        require_once('init.php');
    }
}
?>
...