у меня есть 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';
?>
Этот вопрос может быть немного не по теме, но я не смог найти правильный способ его задать, поэтому, если вы понимаете мою проблему и у вас есть что-то, что поможет мне научиться работать с каталогами, я буду более чем счастлив услышать это.
Мир!
Давайте упростим это:
Проверьте, существует ли сеанс, удалите его, если он есть, а затем перенаправьте на другую страницу.
<?php
session_start();
session_destroy();
exit(header("Location: ../index.php"));
?>
Сохраните его как отдельный скрипт, «logout.php», и вместо использования кнопки просто укажите ссылку на него <a href="logout.php">logout</a>
с любой / всех соответствующих страниц. Если вы действительно не хотите иметь кнопку …
Добавив:
logout.php
файл включает в себя <form method="POST">
: естьaction="logout.php"
чтобы отправить вас в этот (отдельный) файл.<head></head>
площадь (из обоихlogoff.php
logoff.php
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
,Других решений пока нет …