Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема подключения файла JS PHP

Елена Евдокимова Ученик (134), открыт 3 недели назад
Структура:
-Папка с сайтом
-private
-конфиг,другие закрытые файлы
-public
Папки js css img и страницы доступные для пользователя
Такая проблема, корневая папка проекта является public, на странице index.php, которая автоматом открывается происходит ajax запрос на файл php, который находится в папке private
 xhr.open("GET",                 `../private/search_user.php?query=${encodeURIComponent(input)}`, true); 
Смотрел в девтулзе, ошибка (404)
И ищет он этот файл по url
localhost:8000/private/search_user.php
3 ответа
_Fire_of_Death_ Гуру (3513) 3 недели назад
Чтобы решить эту проблему, вам нужно создать проксирующий скрипт в папке public, который будет обрабатывать запросы и перенаправлять их в private. Вот пример такого скрипта на PHP:
_Fire_of_Death_Гуру (3513) 3 недели назад
 // Файл proxy.php в папке public 
// Проверяем, есть ли входящий запрос
if (isset($_GET['query'])) {
// Санитизируем входные данные
$query = filter_input(INPUT_GET, 'query', FILTER_SANITIZE_STRING);

// Подключаем файл из private
require_once '../private/search_user.php';

// Вызываем функцию поиска с запросом
echo search_user($query);
} else {
// Возвращаем ошибку, если запрос не предоставлен
echo "No query provided";
}
?>
_Fire_of_Death_Гуру (3513) 3 недели назад
Теперь вам нужно изменить ваш AJAX-запрос, чтобы он обращался к proxy.php вместо search_user.php:
_Fire_of_Death_Гуру (3513) 3 недели назад
 xhr.open("GET", `proxy.php?query=${encodeURIComponent(input)}`, true); 
_Fire_of_Death_Гуру (3513) 3 недели назад
JavaScript
_Fire_of_Death_Гуру (3513) 3 недели назад
Таким образом, запрос будет идти на proxy.php, который находится в публичной папке и может быть доступен через URL. Этот скрипт затем безопасно подключит и выполнит необходимый код из private, не раскрывая конфиденциальных файлов напрямую.
Андрей Высший разум (435025) 3 недели назад
JS-код знать не знает, что и где находится у тебя на сервере. Он работает в браузере и может получить только то, что доступно браузеру. Всё, что может JS-код: отправить запрос на заданный URL. И этот URL обязан быть доступным. Других способов взаимодействия с сайтом браузерный JS-код не имеет.
Елена ЕвдокимоваУченик (134) 3 недели назад
Т.е. js не может получить файл который выше корневой папки (localhost)
Андрей Высший разум (435025) Елена Евдокимова, JS вообще не может "получить файл". JS делает запрос к web-серверу и получает то, что web-сервер возвращает в ответ на этот запрос. Да, это может быть содержимое файла: если web-сервер возвращает именно его - в ответ на переданный web-серверу URL. Но куда чаще это какие-то данные, динамически генерируемые кодом, работающим на сервере.
Лайт Ягами Искусственный Интеллект (287941) 3 недели назад
Никак не сможешь напрямую дёрнуть HTTP-запросом файлы, которые находятся за пределами корня веб-сервера. Читай эту статью: https://phpfaq.ru/newbie/na_tanke
Похожие вопросы