Задать вопрос
  • Почему не работает условие if?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Потому что условие с ошибкой. Должно быть:
    <?if ($geturl != '/' && $geturl != '/page/'):?>
    Ответ написан
    Комментировать
  • Как сделать многостраничный сайт без PHP/python/React?

    @alekcena
    Нелинейный наставник
    Эм.
    Ну да ) Каждая страничка HTML - Это 1 страничка.
    Многостраничный сайт - это (N>1)
    В чём вопрос?
    Ответ написан
    5 комментариев
  • Как сделать многостраничный сайт без PHP/python/React?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    page1.html:
    <!DOCTYPE html>
    <html>
      <body>
        <a href="page2.html">На вторую страницу</a>
      </body>
    </html>

    page2.html:
    <!DOCTYPE html>
    <html>
      <body>
        <a href="page1.html">На первую страницу</a>
      </body>
    </html>

    Всё. Много- (двух-) страничный сайт готов.
    Ответ написан
    Комментировать
  • Как правильнее сделать две версии хедера?

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

    kawabanga
    @kawabanga
    Документацию читали?
    https://laravel.com/docs/8.x/migrations#squashing-...
    Ответ написан
    Комментировать
  • Зависает компьютер, но при этом частично работает?

    profesor08
    @profesor08
    Если что-то работает, а что-то виснет, то это похоже на ожидание IO операций. Жесткий диск так помирает. Наверно особенно часто зависает, когда идет работа с жестким диском? Особенно эксельки, которые при каждом чихе сохраняют документ в кеш на диск.
    Ответ написан
    5 комментариев
  • Как изменить урл без перезагрузки страницы?

    profesor08
    @profesor08 Куратор тега JavaScript
    Комментировать
  • Как правильно разместить документацию на библиотеку?

    просто сделать по крону запрос на гайд

    В github есть actions, при помощи которых ты можешь на каждый коммит обновлять документацию.
    то выкачивать файлы и конвертить их в html страницы.

    Для этого уже есть готовые инструменты, для разных языков: doxygen, gitbook, docfx итд.
    Вероятно, для вашего языка уже есть готовый генератор html на основе комментариев в коде.
    Ответ написан
    4 комментария
  • Как правильно писать код на js?

    JohnnyGat
    @JohnnyGat
    Стараюсь писать код, понятный человеку.
    const transformClass = document.querySelector(".info-speaker__link-wrap");
    const introLink = document.querySelector(".info-speaker__link");
    
    introLink?.addEventListener("mouseenter", (e) => {
        transformClass.classList.add("info-speaker__link-wrap-trans");
    });
    
    introLink?.addEventListener("mouseout", (e) => {
        transformClass.classList.remove("info-speaker__link-wrap-trans");
    });


    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Оператор ?. заменяет проверку того что объект существует.
    Ответ написан
    1 комментарий
  • Как очищать текст в php?

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

    На самом деле этот вопрос встречается довольно часто. Вот например популярный ответ на Stack Overflow, который подробно разбирает этот распространённое заблуждение: https://stackoverflow.com/a/3126175. И основная мысль там:

    Понятие такой генерализованной "очистки данных" изначально бессмысленное и вредное.

    Особенно такой вот индусской функцией, которая сама по себе - пример редкого идиотизма: сначала заменяем символы < и > на HTML сущности... а потом бодро пытаемся вырезать HTML теги. Которых к этому моменту в тексте не останется ни одного!
    Или функция stripcslashes, которая здесь вообще ни к селу, ни к городу. Если я хочу написать сочетание \n, то с какой стати эта функция будет заменять его на перевод строки?
    Всё что можно оставить из этого безумного набора - это trim(). Да и то не всегда. Как правильно заметил Rsa97, могут быть случаи, когда лидирующие пробелы имеют значение, например, при выводе форматированного кода. Кстати, этим как раз грешит Хабр. Если запостить код с отступами, то первый будет "съеден"!


    Очистка

    Любая "очистка" (хотя правильнее говорить про форматирование), имеет смысл только в определённом контексте.
    И поэтому "очищать" надо только адресно, строго перед использованием в том или ином конкретном случае.

    Например, базе данных ни жарко, ни холодно от наличия HTML тегов.
    А проблемы могут начаться только при выводе данных в HTML. Но если мы будем предотвращать эти проблемы заранее, то просто попортим кучу данных. Поэтому форматировать данные для использования в контексте отрисовки HTML следет строго перед этой отрисовкой. То есть при выводе.
    Что и делают все популярные РНР шаблонизаторы автоматически.
    То есть вручную колупаться с "очисткой" вообще не нужно.

    Больше того, "очистка" HTML поможет данным, выводимым в яваскрипт, как мёртвому припарки. То есть опять же - всегда надо понимать, в какой именно контекст мы выводим данные, и форматировать соответствующим образом. В частности любые данные передавать в яваскрипт только через json_encode()

    И таких контекстов неисчислимое множество. Например, если мы используем переменную для передачи параметров в консольный скрипт, то надо обязательно обрабатывать её через escapeshellarg(). Если в регулярку - то preg_quote(). Имя файла для инклюда из переменной (хотя так делать вообще не стоит) надо хотя бы обрабатывать через basename(). И так далее.

    Валидация

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

    Защита БД

    И кстати, по поводу "использую pdo".
    На всякий случай уточню, что само по себе использование PDO не защищает ни от каких проблем
    Важно помнить, что защита - это когда в базу данных отправляется строго константная строка запроса, полностью на 100% составленная из значений, прописанных в коде РНР, и в ней не используется ни одно значение, пришедшее в код извне. Причем PDO помогает здесь только наполовину, позволяя использовать в запросе подстановки вместо самих данных.
    Но при этом для всех остальных частей запроса - например имен полей - у ПДО нет никакой защиты и её надо организовывать самостоятельно. Либо проверяя по белому списку, лабо, по крайней мере, прогоняя через регулярку.
    Ответ написан
    13 комментариев
  • Как отправить SMS без отправки формы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Пыталась ещё с curl разобраться, наверное туда и нужно копать?
    да, туда и нужно. Смотрите примеры работы с курл, их много, легко гуглится. Можно тупо подключить их библиотеку, как советует Сергей delphinpro, что дает сразу готовые функции по всем основным действиям с апи сервиса.

    Вообще запросы к апи на 90% выполняются в формате сервер-сервер, крайне редко клиент-сторонний сервер...
    В вашем случае должно быть что-то вроде: аяксом запрашиваете со своего сервера данные, ваш сервер создает запрос к апи сервиса, получает данные и возвращает в ответе аякса. Все ключи / логины / пароли передаются только от сервера к серверу, на фронте никоим образом не должна светиться подобная инфа.
    Ответ написан
    Комментировать
  • Реально ли работать в одном IT-проекте (продуктовом) больше 5-ти лет и не деградировать профессионально?

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


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

    DevMan
    @DevMan
    работодателю вообще плевать на это. и на ваше портфолио тож.
    Ответ написан
    3 комментария
  • Зачем нужны UI фрейворки, если есть hbs, pug или ejs?

    Я так понял они нужны для того чтобы сделать фронтенд части в бэкенде.
    Вы неправильно поняли. Шаблонизаторы всего лишь упрощают логику генерации html бэкендом, но не имеют прямого отношения к фронтенду и вообще никакого к динамическим интерфейсам.
    Ответ написан
    Комментировать
  • Как защититься от разных URL запросов в Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Во-первых, за удаление методом GET тебя ждёт спец. котёл в аду.

    Во-вторых, читай документацию ларавел, про мидлвари и политики.

    В-третьих, изучай основы HTTP, чтобы знать, как сделать
    Например, чтобы в ссылке не было видно ID группы, а само ID отправлялось другим способом, не через URL, и чтобы запросы вида www.site.ru/group/delete/2 не работали.
    Ответ написан
    1 комментарий
  • Где и как предложить идею нового свойства CSS?

    @Flying
    Спецификаций CSS занимается рабочая группа в составе W3C. Там же есть и информация о том, как принять участие / предложить свою идею.

    К примеру вы можете создать issue в репозитории рабочей группы.

    Однако вам стоит понимать, что работа над спецификацией уровня CSS Grid - это многолетний труд сотен людей для того, чтобы довести её до реального использования. Если вы предполагаете что за всё это время никто из них не додумался до этой идеи - то вам стоит подумать ещё раз.

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

    За примерами далеко ходить не нужно: parent selector - мечта уже нескольких поколений разработчиков и тема постоянных вопросов. Однако его нет в спецификации (хотя он был в первых драфтах CSS 3 насколько я помню) и скорее всего не будет. Причину, если интересно, попробуйте поискать сами.

    Или, к примеру, такое очевидное, казалось бы, опущение как отсутствие аналога :hover для "stuck" состояния элемента с position: sticky. Ведь его явно не хватает почти любому кто использовал этот стиль. Однако его не будет, о причинах (логичных, но далеко неочевидных) можно почитать в соответствующем issue.

    Конечно, если вы внимательно и детально изучите все спецификации и проработаете и напишете своё предложение - оно, вероятно, будет рассмотрено. Но более вероятна ситуация что где-то здесь вы найдёте аналогичную или близкую идею.
    Ответ написан
  • Где можно ознакомиться с полным списком тегов CSS 3?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Теги - это все же про HTML, а не про CSS.

    А со всем, что есть в CSS, можно познакомиться на сайте W3C. Они заботливо делают странички с состоянием CSS на текущий год, где есть перечисление всего со ссылками на стандарты, где можно более подробно обо всем почитать. Но это такой источник информации для теоретиков, если хотите погрузиться действительно глубоко. На сайте MDN есть почти то же самое, но в формате, более ориентированном на практику, чем на теорию.
    Ответ написан
    1 комментарий
  • Откуда берется /*!40001 SQL_NO_CACHE */ в запросе при создании дампа?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Отвечу всё же на заданный вопрос:
    Откуда это берется вообще? /*!40001 SQL_NO_CACHE */ и как это убрать?

    Это - комментарий с фрагментом запроса, специфичным для MySQL.

    Помещается в тело запроса (в т.ч. в дамп) для того, чтобы запрос, использующий какую-либо специфичную для MySQL конструкцию, мог быть выполнен в другом SQL-диалекте без внесения изменений в текст запроса. Т.е. MySQL обрабатывает содержимое такого комментария так, словно этот фрагмент не закомментирован, тогда как другие СУБД проигнорируют этот фрагмент как комментарий.

    Опциональное пятизначное число указывает минимальную версию MySQL, начиная с которой содержимое комментария должно обрабатываться (в показанном фрагменте - это версия 4.00.01), на более младшей версии комментарий останется комментарием. При его отсутствии (используется только /*!) - код из комментария обрабатывается любой версией.

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если это JSON'ы локальные, то держать их в базе данных.
    Если они берутся с удалённого сервера, то кэшировать их в БД, периодически загружая их туда отдельным скриптом.
    Ответ написан
    6 комментариев