Как сделать так, чтобы один и тот же файл входил в два разных файла, расположенных в разных каталогах, для перенаправления по одному и тому же окончательному пути?

у меня есть logout.php файл, который находится в корневом каталоге и выглядит так

<?php
if(isset($_POST['logout'])){
session_destroy();
header('location: ../index.php');
}
?>
<form method="POST">
<button name="logout" class="logout">Logout</button>
</form>

Эта кнопка включена внутри header.php и header.php это то, что на самом деле вызывает проблему, которая выглядит так:

Два заголовочных файла находятся в двух разных каталогах: один в корневой папке, а другой в подпапке. /users/ и если вы видели код, вы уже можете предполагать, что кнопка выхода из системы выполняет свою функцию правильно каждый раз, когда вы находитесь в /users/ каталог например localhost/rootdirectory/users/dashboard.php но каждый раз, когда вы посещаете корневую папку и пытаетесь выйти из нее, она перенаправляет вас на один каталог вверх, ведя вас прямо на индексную страницу WAMP (в моем случае).

Теперь вы должны задаться вопросом, зачем мне использовать два разных заголовка, так что вот объяснение:

Содержание внутри header.php в обоих файлах одно и то же, но у меня есть его дубликат, потому что я нашел его единственным решением проблемы того же типа, что и у меня при создании header.php или точнее сразу после того, как я создал подпапку /users/ и попытался включить /rootfolder/header.php внутри /rootfolder/users/index.php,

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

Когда я попытался включить /rootfolder/header.php внутри /rootfolder/users/index.php я потерял связь с каждым файлом, связанным внутри заголовка, включая style.css

Прямо сейчас мы находимся в /rootfolder/users/index.php

<?php
include '../header.php';
include '../footer.php';
?>

и вот как /rootfolder/header.php похоже

<?php
session_start();
//we link the connection file
include "pagesetup/config.php";
//we populate the database with tables and default data
include "pagesetup/createtables.php";
//we store the page title inside of a variable
$get_title = mysqli_query($mysqli, "SELECT title FROM pageinfo");
while($row = $get_title->fetch_assoc()){
$page_title = $row['title'];
}
//we unset the login and register sessions which are used to display the outcome
//of the login/register attempt
unset($_SESSION['login']);
unset($_SESSION['register']);
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="js/javascript.js"></script>
<title>
<?php echo $page_title;?>
</title>
</head...

В этой ситуации моя страница индекса выглядит следующим образом, и у меня нет доступа к любому другому файлу, связанному с ней (включая самый важный config.php)
введите описание изображения здесь

И единственный способ для style.css файл, который будет применен к /rootfolder/users/index.php должен был скопировать header.php внутри /rootfolder/users/ а затем изменить его пути, как это

<?php
session_start();
//log in protection
if(!isset($_SESSION['loggedin'])){
header('location:../index.php');
}
//we link the connection file
include "../pagesetup/config.php";
//we populate the database with tables and default data
include "../pagesetup/createtables.php";
//we store the page title inside of a variable
$get_title = mysqli_query($mysqli, "SELECT title FROM pageinfo");
while($row = $get_title->fetch_assoc()){
$page_title = $row['title'];
}
//we unset the login and register sessions which are used to display the outcome
//of the login/register attempt
unset($_SESSION['login']);
unset($_SESSION['register']);
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/style.css" />
<script type="text/javascript" src="../js/javascript.js"></script>
<title>
<?php echo $page_title;?>
</title>
</head...

а затем, конечно, изменить путь в /rootfolder/users/index.php тоже

<?php
include 'header.php';
include '../footer.php';
?>

Этот вопрос может быть немного не по теме, но я не смог найти правильный способ его задать, поэтому, если вы понимаете мою проблему и у вас есть что-то, что поможет мне научиться работать с каталогами, я буду более чем счастлив услышать это.

Мир!

0

Решение

Давайте упростим это:
Проверьте, существует ли сеанс, удалите его, если он есть, а затем перенаправьте на другую страницу.

<?php
session_start();
session_destroy();
exit(header("Location: ../index.php"));
?>

Сохраните его как отдельный скрипт, «logout.php», и вместо использования кнопки просто укажите ссылку на него <a href="logout.php">logout</a> с любой / всех соответствующих страниц. Если вы действительно не хотите иметь кнопку …


Добавив:

  1. Есть ли на страницах правильное действие в форме?
    Код, который вы показываете
    для тебя logout.php файл включает в себя <form method="POST">: есть
    нет action="logout.php" чтобы отправить вас в этот (отдельный) файл.
    Остальной код, который вы показываете, является <head></head> площадь (из обоих
    страниц), который не показывает HTML вашей формы кнопки.
  2. Обе страницы должны отправлять пользователя (одинаково, отдельно) logoff.php
    файл.
    Исходя из вашего вопроса, у вас есть выход logoff.php
    собирается в 2 разных местах. Если вы отправите оба в один файл,
    тогда вам нужно только беспокоиться о том, что ваш logoff.php скрипт имеет правильный путь к Location: ../index, Если index.php а также logoff.php находятся в
    каталог того же уровня, тогда правильный перенаправленный путь будет:
    Location: index.php,

Таким образом, если посетитель вашего сайта нажимает на кнопку выхода (кнопка или ссылка), они должны быть отправлены в отдельный logoff.php скрипт. Этот скрипт, в свою очередь, «перенаправляет» (или отправляет) их index.php стр.
Поскольку эти две страницы находятся в разных каталогах, вам придется использовать другой путь для отправки пользователя на logoff.php скрипт. Пример:

  • Ссылка для localhost/rootdirectory/users/dashboard.php это один
    каталог выше корня, ссылка должна быть ../logout.php,
  • Ссылка на корневом уровне должна быть logout.php,
  • Перенаправление внутри ссылки logout.php остается постоянным, как
    index.php,
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]