За последние 24 часа нас посетили 34912 программистов и 1759 роботов. Сейчас ищут 777 программистов ...

Открыть файл в новой вкладке, получив его сервера.

Тема в разделе "PHP для новичков", создана пользователем Nemoj, 19 авг 2020.

  1. Nemoj

    Nemoj Новичок

    С нами с:
    14 авг 2020
    Сообщения:
    30
    Симпатии:
    0
    Фронт у меня запускается так
    Код (Text):
    1. window.addEventListener('DOMContentLoaded', () => {
    2.     loadData();
    3. });
    Что вы называете "перед запуском фронта"?

    Сейчас изучаю статью на Хабре "Отдаем файлы эффективно с помощью PHP" https://habr.com/ru/post/151795/
    Там дельные рекомендации или как в моем первом сообщении "дырявое корыто"?

    Спецкнопка для "Спасибо" это палец вверх?
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Фронт-контроллер.

    Не знаю. Ф-ция basename, возможно, помогает, но не факт.

    Да.
     
    Nemoj нравится это.
  3. Nemoj

    Nemoj Новичок

    С нами с:
    14 авг 2020
    Сообщения:
    30
    Симпатии:
    0
    Я загуглил "Фронт-контроллер". Получил в выдаче статью
    Реализация MVC паттерна на примере создания сайта-визитки на PHP
    https://habr.com/ru/post/150267/
    Именно так у меня и сделано. Все запросы перенаправляются на одну точку входа, в которой анализируется строка запроса и вызывается тот или иной метод того или иного контроллера. Под "фронт-контроллером" понимается этот самый код, который я называю маршрутизатором. Я правильно понял ваше предложение?
    Если да, то теперь пытаюсь понять, что значит "перед запуском фронта".Может быть имеется в в виду "в первых строках фронт-контроллера"? Намекните следующий шаг, пожалуйста.

    вот мой index.php
    PHP:
    1. <?php
    2. ini_set('display_errors', 1);
    3. require_once 'application/bootstrap.php';
    вот bootstrap.php
    PHP:
    1. <?php
    2. require_once 'core/model.php';
    3. require_once 'core/view.php';
    4. require_once 'core/controller.php';
    5. require_once 'core/route.php';
    6. // Starts a new php session if it's not started already.
    7. if (session_status() == PHP_SESSION_NONE) {
    8.     session_start();
    9. }
    10. Route::start(); // запускаем маршрутизатор
    А вот самое начало route.php
    PHP:
    1. <?php
    2. require_once 'application/models/model_database.php';
    3. class Route {
    4.     static function start() {
    5.         $controller_name = 'mysite';
    6.         $action_name = 'index';
    7.  
    8.         $routes = explode('/', $_SERVER['REQUEST_URI']);
    Дальше вызываются методы контроллеров
    "Перед запуском фронта" это где-то здесь?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Нет, в конфиге сервера. Это норма для многих сайтов. Даже если вам какие-то файлы нужно отдавать через скрипт, все равно наверное есть статик, который нужно отдавать всем подряд, а не только авторизованным.
    --- Добавлено ---
    Например, первый фрагмент тут: https://gency.ru/single-entry-point
    --- Добавлено ---
    Кстати, там в комментах было обсуждение: общедоступный статик либо размещается на другом хосте (всякие роботсы в расчет не беру), либо перед запуском фронта ставится условие «если не файл».
     
    Nemoj нравится это.
  5. Nemoj

    Nemoj Новичок

    С нами с:
    14 авг 2020
    Сообщения:
    30
    Симпатии:
    0
    У меня в корне сайта есть такой .htaccess

    Код (Text):
    1. RewriteEngine On
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule .* index.php [L]
    Что надо поменять?
    Я правильно понимаю, что с такой настройкой существующие файлы и папки отдаются напрямую, а несуществующие обрабатываются моим фронтом?
    И как мне сделать доступ конкретным юзерам к указанным файлам?