• Как правильно проверить истечение платной подписки пользователя?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Всё зависит от того, как построена логика Вашего приложения или сайта. +1 запрос (а скорее даже не запрос, а доп. условие на что-то), вида:
    SELECT IF ((NOW() + INTERVAL 15 DAY) > row_date_value, 'that', 'then') AS result

    -- особых проблем не добавит, такие расчёты на уровне БД ведутся довольно быстро, к тому же, как можно заметить, в этом примере нет обращения к таблицам непосредственно, мы берём уже заранее готовое (полученное) значение.

    Но, с другой стороны, контролировать логику работы на уровне БД, пожалуй не самое практичное решение. В 99% случаев, есть более правильные механизмы реализованные на уровне фреймворка, так же как например, авторизация. Вы же не проверяете можно ли пользователю создавать запись новостей на сайте, на уровне БД?

    В частности, в зависимости от системы/фреймворка, подобная логика проверок и валидаций обычно встроена и оптимальным решением будет использовать именно её (как именно она устроена, можно посмотреть на примере модуля авторизации Вашей системы).

    Если же вопрос стоит исключительно в критичность доступности данных, в частности, эти данные нужно получать "молниеносно", а дата до которой продлена подписка - лежит где-то глубоко в БД и постоянные проверки сильно нагружают файловую систему сервера - можно воспользоваться временными таблицами которые хранятся в памяти, или закэшировать эти данные Redis или Memcached и получать их оттуда максимально быстро с минимальной нагрузкой на сервер.

    Если вопрос состоит в том, как лучше сверять даты на уровне "контроллера" (или чего-то ему аналогичного) - Вы можете перевести дату в число Unix-timestamp и сравнивать два числа, быстро и удобно.
    Ответ написан
    Комментировать
  • Как сделать якорь в меню Wayfinder?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Если мне не изменяет память, изначально в Wayfinder подобный функционал не предусмотрен, по этому вариантов не очень много: либо переписать Wayfinder таким образом, что бы он определял якорь по какому-то признаку, либо, корректировать шаблоны вывода меню соответствующим образом.
    Ответ написан
    Комментировать
  • Поиск в MySQL игнорируя HTML-теги?

    Wolfnsex
    @Wolfnsex Куратор тега HTML
    Если не хочешь быть первым - не вставай в очередь!
    Вы можете попробовать делать поиск с помощью регулярных выражений, отфильтровывая теги, но сам по себе поиск типа LIKE/ILIKE - не самая быстрая операция для БД, а поиск по регулярке, может значительно усугубить показатели производительности. Вариант, который Вам предложили выше, более оптимальный и в целом похожие решения не редко применяются на практике (когда модифицированный текст, специально подготовленный для поиска по нему, хранится отдельно, в т.ч. в специально отведенной колонке).
    Ответ написан
    Комментировать
  • Можно ли портировать адаптивный сайт в приложение?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Зависит от того, чего Вы хотите добиться. Есть ряд решений, когда сайт упаковывается вместе с сервером и базой и собирается в "единый EXE'шник" (неоднократно встречал подобные реализации для разнообразных оффлайн-справочников), есть вариации с Node.JS/Apache Cordova, можно в ваше приложение встроить компонент "Веб-браузер" (который обычно поставляется с большинством библиотек для построения интерфейсов) и загрузить Ваш сайт в него...
    Ответ написан
    Комментировать
  • Как вывести номер строки но не id?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    $count++; // нужно ставить перед $res_array
    $res_array[$count] = $row;

    Вот эту строку можно сократить до
    $res_array[] = $row;

    PHP сам пронумерует индексы массива, начиная с нуля и выше, соответственно. Единственное, что меня смущает, переменные $res_array и $count не объявлены до их использования.

    Далее, Вы можете выводить слайды с их номерами, основываясь на индексе массива, или без него (если индексы не числовые или их нумерация сбита), одним из вариантов:

    1. По индексу (ключу) массива:
    foreach($res_array as $k => $v) {
        print $k.'<br/>'; //Ключ (индекс) массива
    }


    2. Игнорируя индекс (ключ) массива:
    for($i = 0; $i < count($res_array); $i++) {
        print $i; //индекс
    }


    Вы так же можете модифицировать примеры для своего удобства, если нужна нумерация, например с единицы.
    Ответ написан
    Комментировать
  • Как настроить OpenServer 5.2.5, чтобы использовать secure_url() в Laravel 5.3 на localhost?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Когда Вы запускаете php artisan serve - запускается сервер встроенный в PHP, который (как упоминалось выше) HTTPS - не поддерживает. Я думаю, Вам стоит либо запускать проект в рамках непосредственно OpenServer'а, который поддерживает оба протокола сразу (и HTTP и HTTPS), либо, Вы можете попробовать воспользоваться Homestand (готовая и настроенная для разработки ОС Linux, поставляемая самими разработчиками Laravel, вместе с Nginx, MariaDB, PostgreSQL и прочими плюшками). Разработка в "родной" среде, позволит Вам не только избавиться от описанных выше проблем, но и от массы других, например ошибки с регистром букв в именах файлах (к которым чувствительны большинство файловых систем *nix, в отличии от FAT/NTFS в Windows).

    P.S. Для установки/запуска Homestand, Вам не нужно переустанавливать текущую ОС, он прекрасно работает как в Linux, так и в Windows, достаточно установить VMWare или VirtualBox.
    Ответ написан
    Комментировать