Задать вопрос
  • В чём отличие в Laravel web.php и api.php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Попробуем отделить коней от людей, насколько это получится.
    Говоря просто: API - для отдачи непосредственного среза данных, обычно в виде JSON, WEB - для отдачи целых страниц в виде HTML.

    Всегда думал что api.php нужно для запроса от сторонних приложений, сайтов к твоему сайту для получения какой то информации, которую я хочу предоставить, без авторизации.
    Ну, неправильно думали, ничего страшного. Точнее, очень узко. Вот есть у вас сайт, а потом вы решили сделать к нему в пару мобильное приложение. Оно стороннее? Ничего сделать с отданным через WEB HTML оно не сможет*, потребуется API.
    Наличие или отсутствие авторизации тут совершенно ни при чём.

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

    Количество Middleware на web.php значительно больше, т.е. любой запрос проходит больше проверок перед тем как выдать результат.
    Middleware - это любые обработчики, а не только проверки. Т.е. "больше обработчиков не значит больше проверок". Любые обработчики вы можете навесить и на API**. И их даже не надо писать отдельно, в Laravel уже всё есть.

    В итоге вопрос, с точки зрения безопасности, производительности есть преимущества api.php перед web.php
    С точки зрения безопасности разницы нет. API может быть несколько производительнее за счёт того, что обрабатывает и отдаёт меньше "лишнего". Но по этим аспектам их вообще не надо сравнивать, это всё равно, что выбирать между экскаватором и самосвалом по степени лёгкости угона того или другого.

    * без костылей
    ** с поправкой на отсутствие сессии обычно
    Ответ написан
    Комментировать
  • В чём отличие в Laravel web.php и api.php?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Все верно, у этих групп маршрутов разные Middleware.

    Web-маршруты используют cookies, для них поднимается ларавелевская сессий, для не get-запросов проверяется csfr-токен. Для api-маршрутов всего этого нет.

    Исходя из этого ты и принимаешь решения какую группу маршрутов использовать. Нужны куки или старндартная авторизация добавляешь маршрут в веб-группу. Если вообще ничего не надо или используешь авторизацию по токену, то в апи группу.

    Всегда думал что api.php нужно для запроса от сторонних приложений, сайтов к твоему сайту для получения какой то информации, которую я хочу предоставить, без авторизации.


    Нет, ты и для своих запросов можешь использовать апи-группу маршрутов. И так же там можно сделать авторизацию, просто она будет по другому принципу.

    но зачем это делать когда уже всё это есть на web.php?


    Потому что есть не только возможность авторизовывать пользователя при помощи кук, но и через токен, который передается при каждом запросе. Бек и фронт вообще может быть разделен на разные сервера и на разные домены.

    В итоге вопрос, с точки зрения безопасности, производительности есть преимущества api.php перед web.php


    Ни у того ни у другого нет особых преимуществ.
    Ответ написан
    Комментировать
  • Как вставить скрипт, чтоб он не открывался на всю страницу?

    @alexalexes
    Либо обращайтесь к разработчикам виджета - help@unitiki.com
    Либо смотрите, какие ccs-селекторы воздействуют на модальное окно виджета и пытайтесь перебить их свойства своими css-стилями.
    Ответ написан
    Комментировать
  • Как создать пункт меню и страницу в админке Wordpres через плагин?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Создаем плагин, wp-content/plugins/best-plugin/best-plugin.php:
    <?php
    /**
     * Plugin Name: Чумовой плагин
     * Description: Это плагин, твердо и четко!
     */
    
    if(!defined('ABSPATH')) {
      exit;
    }
    
    class Best_Plugin {
      protected $menu_slug = 'best-plugin';
    
      public function __construct() {
        // добавление страницы с пунктом меню
        add_action('admin_menu', [$this, 'add_admin_page']);
    
        // добавление ссылки на настройки плагина в списке плагинов
        add_filter(
          'plugin_action_links_' . plugin_basename(__FILE__),
          [$this, 'add_settings_link']
        );
      }
    
      // страница, любое содержимое страницы, обычно это винегрет из html/js/php
      public function add_page() {}
    
      // добавление страницы с пунктом меню
      public function add_admin_page() {
        add_options_page(
          'Страница чумового плагина',
          'Чумовой плагин',
          'manage_options',
          $this->menu_slug,
          [$this, 'add_page'],
          1
        );
      }
    
      // добавление ссылки на настройки в списке плагинов
      public function add_settings_link($links) {
        $settings_link = "<a href=\"options-general.php?page={$this->menu_slug}\">Настройки чумового плагина</a>";
        array_unshift($links, $settings_link);
        return $links;
      }
    }
    
    new Best_Plugin();
    Ответ написан
    Комментировать
  • Можно ли в wordpress сайте сделать перенаправление?

    qant
    @qant
    programer
    Конечно, на этой странице приветствия можно добавить проверку в шаблоне:

    get_header();
    
    if ( ! is_user_logged_in() ) {
    
    //kажем эту страницу или например подключаем определенный контент
    get_template_part("non-logged-in-page-content");
    
    //или redirect на логин
    wp_redirect( wp_login_url() );
    exit;
    
    }else{
    
    //кажем другую страинцу
    get_template_part("logged-in-page-content");
    
    }
    
    get_footer();
    ....
    Ответ написан
    2 комментария
  • Как сделать, чтобы сайт быстрее загружался?

    dima9595
    @dima9595
    Junior PHP
    Sass, less, gulp и прочие сборщики ни как, практически, не улучшат скорость загрузки. Да, через сборщики можно уменьшить тот же самый css файл посредствам минификации, но это дело другое..
    В вашем случае у вас крайне мало файлов для каких-либо серьёзных проблем.

    Из советов из своего опыта могу выделить следующее:
    1. Разбейте css файл на важные и не особо важные части. В важном - основа страницы, сбросы стилей и т.п. В неважном - всякие красоты и т.п.
    2. Сожмите все css файлы.
    3. Сожмите все используемые картинки. В качестве бонуса можно сделать их в формате webp, но используйте их как запасной вариант, так как не все старые браузера поддерживают этот формат.
    4. Запустите сайт и проверьте загрузку через специальные средства (Google Pagespeed, например) и встроенными средствами браузера. Так вы увидите слабые места загрузки.
    5. Оптимизируйте JS скрипты, проверьте что бы они правильно подключались и загружались после прогрузки страницы.
    Ответ написан
    Комментировать
  • Как массово изменить значение ID в таблице wp_posts из базы данных сайта Wordpress?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Идентификаторы должны оставаться неизменны, в этом их суть.
    Ответ написан
    Комментировать
  • Как скрыть сртаницу(single) записи от не зарегистрированных?

    @alexiusgrey
    что-то типа
    <?php if ( !is_user_logged_in() : ?> 
      /*ссылка на страницу регистрации*/
     <a href="<?php echo get_permalink( wc_get_page_id( 'myaccount' ) ); ?>">
     <?php else : ?> 
       /*ссылка на сингл*/
    <a href="the_permalink">Link</a>
    <?php endif; ?>
    Ответ написан
    Комментировать
  • Не выводятся картинки на сайт?

    mahmudchon
    @mahmudchon
    1. Щелкаешь правой кнопкой мыши по "неактивному прямоугольнику".
    2. Копиуешь URL.
    3. Узнаешь чем является действительное, выдаваемое за желаемое.
    4. Правишь путь.
    Ответ написан
    Комментировать
  • Есть какой-то сервис для деобсуфицирования кода js?

    Stalker_RED
    @Stalker_RED
    Ты прикалываешься, да?
    https://www.google.com/search?q=js+deobfuscator+online

    Сразу предвижу "они плохо справляются". Тут ничего не поделаешь, у обфускаторов фора.
    Ответ написан
    Комментировать
  • Какая должна быть нумерация релизов для сервисов?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Если сервис не обновляется, ему не нужно поднимать версию

    В целом версии ведутся по semver, через теги
    Ответ написан
    Комментировать
  • Как найти адрес админки?

    vpetrov
    @vpetrov
    частный SEO-специалист
    Тут два варианта: либо редиректит на уровне htaccess или functions, либо речь о плагине. Плагин можно отключить, а серверные редиректы найти в системных файлах.
    Иначе, наверное, никак. В БД это едва ли есть.
    Ответ написан
    Комментировать
  • Разница между JavaScript и HTML5 игрой?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    На html игры не пишут. Их всегда пишут на javascript
    Просто так называют игры, которые для отображения используют холст (canvas)
    Такое название сложилось исторически, с тех времен, когда игры в основном писались на флеше. Вот чтобы их как-то обособить игры на js стали называть играми на html5 в противовес флешу.
    Ответ написан
    Комментировать
  • Возможно ли взаимодействие самописного сайта с CMS?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вижу тег wp, а значит:
    https://developer.wordpress.org/rest-api/
    https://github.com/wp-graphql/wp-graphql
    WP как админка, а front как сайт. Дешево, с душком, но простые задачи решает.

    Здравствуйте, изучаю веб-разработку не так давно, но уже слышал про CMS

    Предположу, что с такими знаниями будет тяжело тянуть отдельно wp и отдельно front.

    И насколько вообще важная штука CMS, и как частно нужно будет с ней работать?

    Зависит от требований заказчика, от 0 до 146%.
    Ответ написан
    Комментировать
  • Как из запускаемого в браузере локального HTML с JS создать файл в локальной же файловой системе?

    @rPman
    Есть косвенное решение - разрешить в браузере сохранять загрузки автоматически без запроса места сохранения (на сколько я знаю это поведение по умолчанию) и из скрипта сформировать файл через File, Blob или MediaSource, создать для него ссылку с помощью createObjectURL (на сколько я помню это будет data uri строчка) и кликнуть по ней.

    var file=new Blob([JSON.stringify(obj, null, 2)], {  type: "application/json"});
    var url=URL.createObjectURL(file);
    var a = document.getElementById("a"); // где то на странице невидимая ссылка
    a.href = URL.createObjectURL(file);
    a.download = 'myfilename.json';


    Как вариант строчку сделать самому и отправить его прямо в location, что то типа location.href='data:text/plain;charset=utf-8,test').

    Твое python приложение пусть ожидает файл в каталоге для загрузок, указанном в настройках браузера. Будь готов, что браузер добавить ' (xxx)' к имени файла, если такой же там уже есть.

    Я примерно таким образом добавленным через консоль (или расширением типа greasemonkey) скриптом кликал и собирал данные в веб приложении, после отправлял их на сохранение в виде csv-шника, а затем собрал кучу сохраненных файлов уже десктопным приложением.
    Ответ написан
    Комментировать
  • Как из запускаемого в браузере локального HTML с JS создать файл в локальной же файловой системе?

    Если ты говоришь про браузер, то никак. Посмотри в сторону електрон приложения, возможно он дает права работать с локальной системой.
    Ответ написан
    Комментировать
  • Нормально ли создавать функции внутри функций?

    Почему-бы и нет? Все что позволяет сделать язык можно использовать. Почти всегда это может найти какое-нибудь оправдание.

    Но если вам надо
    создавать функции с такими же именами но уже в другой функции.

    то здесь уже похоже что-то не так. Почему у разных функций одинаковые имена? Зачем вообще могут понадобиться функции с одинаковыми именами? Нельзя ли их обобщить?

    Кроме того зачем имена функций внутри функции? Может быть есть смысл создать там анонимные функции? Или лучше создать класс/объект?

    Неплохо бы увидеть реальный код, а не вот такой вот общий пример.
    Ответ написан
    2 комментария
  • Почему часы показывают на два часа раньше моего часового пояса в жс?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Писать самому дату создания записи в БД, если на то нет веских причин, не следует. Тем более хранить время и дату текстом не стоит. Для этого во всех БД есть специальные типы данных.
    Рекомендую ознакомиться с документацией к используемой БД, в частности с типами для хранения данных.
    Ответ написан
    Комментировать
  • Как вытаскивать данные из бд и выводить их в таблицу по ID?

    @fbi_agent26
    SELECT * FROM table_name ORDER BY id ASC запрос sql для получения всех полей с сортировкой начиная с самого мелкого Id.
    Как засунуть результат запроса в теги - ЗНАЕТ РАЗРАБОТЧИК ТВОЕГО САЙТА.
    Все сайты сделаны на разных CMS , а некоторые вообще самодельные, логика работы везде разная, тут не кто не скажет ответа на то не знаю что
    Ответ написан
    Комментировать
  • Из-за чего тема может отдавать часть на русском, часть на английском?

    Kleindberg
    @Kleindberg
    Full stack
    Добрый день!

    Хороший вопрос, вот мои подозрения, в чём может быть дело:
    1. Текст может быть жёстко прописан в самой теме или плагине (в файле PHP), поэтому его не видит Loco;
    2. Могут не совпадать текстовые домены (_e( 'Post', 'text-domain' );) из-за чего вы переводите не те плагины/темы или текст вообще отсутсвует/находится в другом шаблоне для перевода (pot файле). Бывает, что тема содержит встроенные плагины у которых отдельные файлы для перевода;
    3. Текст может генерироваться динамически, например JavaScript'ом или по API.
    4. В последних версиях WordPress переводы сначала берутся из папки /wp-content/languages, потом из папки с темой или плагином. А если установлен плагин Loco, то вообще в первую очередь переводы берутся из папки /wp-content/languages/loco, поэтому наверное есть смысл удалять/отключать плагин Loco после того, как вы завершите перевод, а все свои наработки хранить в папке /wp-content/languages/plugins или /wp-content/languages/themes в зависимости от того, что вы переводите


    Что можно попробовать:
    1. В меню Loco выберите нужную тему, далее кнопка Редактировать шаблон и кнопка Синхронизировать (чтобы обновить шаблон и строки для перевода). Если эта функция сделает только хуже и наоборот удалит все строки - просто не сохраняйте изменения.
    2. Проверить ещё раз файлы и понять как именно выводится та или инная фраза: через перевод или жёстко прописана в коде. Возможно, вы переводите тему, а текст выводит какой-то плагин.
    3. Очистить кэш если установлены плагины типа WP-Rocket, Redis и так далее.
    4. Перевести плагин или тему через PoEdit и импортировать свои переводы на сайт translate.wordpress.org


    Иногда Loco справляется хуже, тогда на помощь придёт приложение PoEdit - оно более умное и умеет сканировать строки для перевода.
    Ответ написан
    Комментировать