Мне интересно кое-что, но я не могу найти хороший, четкий ответ или даже решение этой проблемы:
Мой сайт PHP имеет следующую структуру:
root
functions
generators
helpers
scripts
style
index.php
Это все папки и один файл php.Функции содержат множество файлов php op, связанных с подключением к базе данных и различными другими операциями с базами данных, такими как вставка, удаление, обновление, ... Генераторы содержат классы для автоматического создания веб-страниц, чтобы они выглядели одинаково.Помощники - это классы, которые обрабатывают вход в систему, выход из системы, регистрацию и т. Д. Сценарии - это JavaScript, а стиль - это CSS.
В папке моих генераторов есть файл mainGenerator.php, который генерирует различные части веб-сайта:
private function generateLogin()
{
if (!isLoggedIn()) {
echo "
<h2>Login</h2>
<form method='post' action='../helpers/login.php' id='loginForm'>
<p>
Username:<br/>
<input class='search' type='text' name='username'/>
Password:<br/>
<input class='search' type='password' name='password'/>
<input name='login' type='image' style='border: 0; margin: 0 0 -9px 5px;' src='style/login.png' alt='Login' title='Login'/><br/>
No account yet? <a href='../register.php'>Register</a>
</p></form>";
} else {
echo "
<h2>Welome, <a href='user.php' style='color: #1293EE;'>" .
$_SESSION['user_name'] .
"</a></h2>
<a href='logout.php'>Log off</a>";
}
}
Этот фрагмент кода генерирует поле для входа на каждой странице или отображает приветственное сообщение, если пользователь уже вошел в систему. Как видите, действие ссылается на "../helpers/login.php"потому что это относительное местоположение логинхелпера с точки зрения этого генератора.
Теперь вот проблема: если я нажимаю кнопку входа в систему на index.php (http://example.com/ProjectName/index.php), он перенаправляет меня наhttp://example.com/helpers/login.php и говорит, что файл не найден.
Я вижу, в чем проблема, действие post видит запрос, поступающий из index.php, поднимается на один каталог и затем ищет / helpers/login.php, который, конечно, не существует.
Исправление может состоять в том, чтобы изменить действие на
action='/helpers/login.php'
, но это дает мне ту же проблему, если мне нужен доступ к generateLogin () из определенного подкаталога ... Как можно решить эту конкретную проблему, а именно: чтобы ссылка на /helpers/login.php оставалась верной, независимо от того, откуда я пытаюсь получить к ней доступ.