Задать вопрос
  • Как создать ссылку в базе данных?

    @alexalexes
    Общий ответ с точки зрения любой СУБД по отношению к любому способу вывода (выкатить что-то на веб-страницу) - никак. База данных ничего не знает, что такое ссылка в веб-документе. Она оперирует такими понятиями, которые позволяет хранить данные, как таблица, столбец, строка, значение атрибута. Из таблиц и связующих атрибутов таблиц - внешних и внутренних ключей строится структура данных для вашей предметной области.
    С другой стороны, у вас имеется ссылка в веб документе, которая имеет некоторые атрибуты, пригодные для хранения в базе данных: href - адрес ссылки, title - подсказка на ссылки, и возможно, какой-то текст, который обрамляет эта ссылка.
    Попробуйте значения этих атрибутов поместить в таблицу базы данных links, со столбцами:
    link_id, -- идентификатор записи в таблице ссылок
    link_href, -- ссылка
    link_title, --подсказка ссылки
    link_text -- текст ссылки
    И с помощью запроса к СУБД, а также с помощью PHP сделайте форматированный построчный вывод данных:
    // тут опущены действия связанные с формированием запроса,
    // на этом этапе вы каким-то способом получили выборку данных из таблицы links
    foreach($rows as $row)
    {
      echo '<a href="'.$row['link_href'].'" title="'.$row['link_title'].'">'.$row['link_text'].'</a><br/>';
    }

    Это и будет самый примитивный пример, как хранить сведения о ссылки и как их выводить.
    В реальном проекте будет несколько сложнее выглядеть таблица, где хранятся подобные сведения.
    Ответ написан
    Комментировать
  • Клиент подаёт в Арбитраж Upwork, с меня вывернут 291$?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, American Arbitration Association - не представители закона, это просто организация помогающая улаживать разбирательства в досудебном порядке. Во-вторых, вам стоит поинтересоваться в поддержке UpWork где в их правилах зафиксирована возможность вмешательства в арбитраж дополнительных сторон. Наконец, клиенту вы можете сообщить, что не работаете в юрисдикции US, а потому арбитраж они могут привлечь только для разбирательства с UpWork.
    Ответ написан
  • Как правильно ставить куки для авторизации?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как всегда, здесь подводит логика.
    Если в базе есть что красть, то при "угоне базы" возможность авторизоваться будет самой меньшей из проблем.
    Если в базе кроме логина и взять нечего, то и возможность авторизоваться не поможет. Ну угнал ты скажем аккаунт пользователя интернет-магазина - и какой с этого навар?

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

    Во всех нормальных системах никто такими нелепыми страхами не страдает и нормально хэши хранятся в базе, что дает возможность контроля авторизации, в том числе на выбранных устройствах.

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это нормально.
    Ну то есть про конкретный код нельзя сказать, не видя его, но " выносить каждые пару строк в отдельную функцию" - это нормально. Куда нормальнее, чем писать всю тысячу в одной.

    Рекомендую найти видео "Как писать код, который понравится вашим тестам" с первой PHPRussia. Там очень доходчиво рассказывается про то, почему надо делать простые методы. Не только для тестов. А ещё и для повторного использования и для упрощения поддержки кода. Когда надо прочитать основную логику модуля, то даже сокращение в два раза (по одному методу вместо двух строк кода) уже сильно облегчает задачу.
    А если уж даже тест понял, что делает ваш код, то человек поймёт и подавно :)

    Как вам написали выше - все дело в именах методов. Если они информативные, то есть если конструкция
    if ($this->function_7($a) && $this->function_8($b))
    читается как связный английскй текст, то mission accomplished! Функции выполняют свою роль: легче всего читать код, которого нет. Вместо того, чтобы разбирать, что делает тот или иной код, можно просто прочитать небольшой текст на английском.
    Ответ написан
    4 комментария
  • Хочу написать фильтр мата, есть идеи как это можно реализовать?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это война снаряда и брони, то есть она бесконечна. Её невозможно выиграть. Как только вы улучшаете броню, противник в ответ улучшает калибр снаряда, и так по кругу. Лучшим решением будет попытаться остановить войну, помешать её течению, а не наращивать мощь вооружения.

    Один из способов сделать это - перестать воевать, то есть сдаться. Тогда "игра" закончится. Те, кто пытался "победить систему", будут объявлены победителями и потеряют интерес к дальнейшей борьбе. Хотя останутся и те, для кого мат - это норма, и будут продолжать использовать его.

    Второй способ - показать иллюзию победы. То есть тому, кто пытается обойти фильтр, можно показать, что его мат отображается корректно, а все остальные в чате будут видеть звёздочки или слово-заменитель. Конечно, некоторые догадаются, и начнут проверять свои сообщения со второго аккаунта. Но догадаются не все, так что мата в целом станет меньше. К тому же второй аккаунт связан с некоторым гемором, что также отфильтрует лентяев. Останутся только упрямые воины-одиночки, которых легко можно будет просто забанить, например.

    Ещё приём - в дополнение к предыдущим - отсроченное наказание (модератором). "Игрок" не будет получать немедленное подкрепление в виде "молодец, обошёл фильтр", а будет вынужден ждать жюри. Однако ждать никто не любит, это тоже сильно бьёт по мотивации продолжать игру в сопротивление системе. Поэтому многие "партизаны" перейдут на сторону добра, ибо скучно.
    Ответ написан
    Комментировать
  • Как избавиться от этой конструкции forEach?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Можно написать код чуть иначе, но принципиально отказаться от итерирования нельзя.
    Ответ написан
    2 комментария
  • Как правильнее сделать две версии хедера?

    @andand44
    Нужно сделать два макета. Для авторизованного и неавторизованного. Добавление класса просто скроет некоторые блоки, которых совсем не должно быть в коде. Кнопка Войти для авторизованного пользователя, например.
    Ответ написан
    Комментировать
  • Как правильнее сделать две версии хедера?

    @ForSureN1
    frontend dev
    Да это на бекенде настраивается, через layoutы , по url проверяют адрес, и уже вставляют ту или иную шапку, тебе главное чтобы 2 варианта было готовых
    Ответ написан
    Комментировать
  • Как запретить редактирование html на сайте?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак. Всё, что ушло клиенту может быть изменено им.
    Например у ВК vk.com при попытке изменить стили/удалить элементы и прочие манипуляции ничего не дают
    С чего вы это взяли? Легко меняется как текст, так и стили.
    Ответ написан
    3 комментария
  • Почему перестал работать file_get_contents?

    @vitaly_il1
    DevOps Consulting
    IMHO, скорее всего вам надо обновить систему, так как у вас устаревший Letsencrypt root cert (https://techcrunch.com/2021/09/21/lets-encrypt-roo...).
    Насколько понимаю, это RPM ca-certificates.
    Ответ написан
    Комментировать
  • Как должна выглядеть инфраструктура приложения c разделенным Fronted'ом и Backend'ом?

    vabka
    @vabka Куратор тега Веб-разработка
    Должны ли эти приложения находится на разных серверах либо же на одном.

    Не имеет значения.
    Если на одном то как это должно быть, api.example.com для апи и example.com для фронта ?

    Не имеет значения.
    Должно ли это все хостится одним вебсервером ?

    Если они находятся на одном домене или по одному IP - да, чтобы он мог разруливать, по каким запросам отдавать статику для фронта, а по каким запросам обращаться на бэк.

    Советую почитать, что такое reverse-proxy: https://docs.nginx.com/nginx/admin-guide/web-serve...
    И посмотреть, как можно настроить nginx для таких сценариев.
    Ответ написан
    4 комментария
  • Как равномерное распределить целое число, если при делении на количество людей есть остаток?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    751 / (12 + 18 + 13) = 17.4651
    12 * 17.4651 = 209.58
    18 * 17.4651 = 314.37
    13 * 17.4651 = 227.05
    Ответ написан
    3 комментария
  • Как протестировать производительность функций начинающему php-разработчику?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Никак.
    Никакой разницы в использовании системных ресурсов для разных способов вызова функций нет.

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Лучшие собаководы настоятельно не рекомендуют удалять теги с помощью preg_replace.

    Строить dom дерево и обрезать ветки.
    Ответ написан
    1 комментарий
  • На чужом компе не показывает шрифт "Americane (Black)". В чём может быть проблема?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    https://onffilms.com.smw.area.lv/

    Blocked loading mixed active content “http://fonts.cdnfonts.com/css/american-label

    HTTPS-страницы не могут загружать HTTP-содержимое.
    Ответ написан
    1 комментарий
  • Как подавать портфолио на Toptal?

    DevMan
    @DevMan
    очень странно спрашивать здесь, а не у них.
    Ответ написан
    Комментировать
  • Как объединить два файла на php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Правило номер 1: если у вас есть какая-то завиральная идея, типа "а решите мне вот такую-то примитивную стандартную задачу, но только вот с такими, такими и такими ограничениями", необходимо аргументировать свою задачу. То есть объяснять причины, которые привели вас к такой постановке вопроса.
    Ответ написан
  • Как отправить SMS без отправки формы?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Сами же сказали, что есть библиотека.
    Ее и используйте https://smsc.ru/api/code/libraries/http_smtp/php/#menu

    Есть там же и пример формы отправки sms
    https://smsc.ru/api/code/examples/formsms/#menu
    Ответ написан
    1 комментарий
  • Как правильно выкладывать на сайте exe-файлы?

    Zoominger
    @Zoominger
    System Integrator
    Упаковать в zip.
    Упаковать в msi.
    Ответ написан
    Комментировать
  • Реально ли работать в одном IT-проекте (продуктовом) больше 5-ти лет и не деградировать профессионально?

    В одном проекте можно, в другом нельзя; одному программисту можно, другому нельзя. Если человек хочет развиваться, вы его не остановите. Если не хочет - не заставите. Проект может помогать или мешать, но сам по себе определяющим фактором почти не является. Собственно, вы сами это подтверждаете своим bio:
    Несмотря на долгий срок работы в проекте, нахожу новые интересные задачи, которые не позволяют заскучать.


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