Задать вопрос
  • Как очищать текст в 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 комментариев
  • Какой вариант применения стилей к HTML-письмам предпочтителен?

    Беру foundation for emails и пишу стили в отдельном файлике, с sass и плюшками
    Ответ написан
    1 комментарий
  • Нужно ли 40-летнему джуну уметь максимально много?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Мне 40 лет, нацелился на профессию Android-разработчика. И думаю примерно так: "Я уже не молодой энергичный студент (но смышлёный). Зачем работодателю брать джуном меня, если есть студенты? Значит, мне нужно очень много знать-уметь, чтобы превзойти этих студентов. Тогда я стану для работодателей более привлекательным в качестве джуна".


    От 40-летнего человека ожидают взрослого поведения, а именно.

    1. Жизненный опыт и кругозор, который позволяет не разжевывать детали и бегать на случай что молодой студент будет бояться неудачи и скрывать что у него нифига не выходит пока не наступит дедлайн, а потом выяснится что из-за него весь релиз сорвался, хотя если бы он об этом сказал вовремя, ему бы помогли.
    2. 40-летний человек умеет искать информацию и имеет достаточно наработанное критическое мышление, чтобы отличать истину от подделки. Не будет вестись на рекламу модно-молодежно, а будет брать реально рабочее решение.
    3. 40-летний человек, имеющий как минимум 15 лет опыта работы, за это время должен был повидать начальников и в принципе варианты организации работы, и должен просто знать что конкретно начальство хочет видеть и как выглядеть лучше, чем молодые джуны.

    А знания и технологии - их нужно не знать все-все, а знать то, что нужно на текущую позицию, чтобы выполнять заданные задачи.

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

    php666
    @php666
    PHP-макака
    Короче, я боюсь, что, выучив слишком много всего, стану отпугивать работодателей своей продвинутостью.
    лол
    40 лет, а мыслит как 18-и летний юноша-максималист
    выучит он "слишком много всего"
    ты выучи сначала
    потом приходи сюда
    когда ты "слишком много всего" выучишь, тебе минимум будет 45 лет

    Но вот думаю: А не слишком ли "крутым" я стану?
    на первом же собеседовании тебя сотрет в порошок 25-30 летний чувак с опытом и покажет твое истинное место.
    это не оскорбления.
    это твое будущее.
    Ответ написан
    8 комментариев
  • Почему Windows 10 не поддерживает настройки прокси с паролем?

    @rPman
    Потому что разработчики windows 10 (те что взялись переделывать еще со времен win8 и попытки захвата мобильного рынка) - ленивые идиоты.

    Вместо того чтобы правильно (и сложно) модернизировать legacy систему под механизм разграничения прав - они создали параллельную подсистему, несовместимую ни с чем (metro приложения), разработали свои меню настроек для нее, которая действует только на эти приложения.... а когда с мобильным направлением не вышло, не забросили а стали эту подсистему поддерживать.

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

    Если что, настройки прокси windows никуда не делись:
    Панель управления -> Свойства браузера -> закладка Подключения -> кнопка Настройка сети -> чекбоксик Использовать прокси... -> кнопка Дополнительно
    Ответ написан
    4 комментария
  • Что за странные письма приходят с цифрами?

    profesor08
    @profesor08
    Сопоставь содержимое прикрепленного файла с байтами, например в hex редакторе. Может оказаться что видимое там не все.

    P.S. Как вариант, судя по содержимому файла, горе-спамер запорол рассылку из-за бага в коде, который не сгенерировал html на основе шаблона.
    Ответ написан
    1 комментарий
  • Что за странные письма приходят с цифрами?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Есть предположение, что это некое сообщение, которое прочитать может только тот, кто знает, что оно означает. А разослали в сто тыщ мильенов адресов, чтобы замаскировать под спам :)
    Ответ написан
    2 комментария
  • Как прописать в договоре на создание сайта, что таким подобным проектом мы заниматься не будем?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Все договоры должны составлять профессиональные юристы. Одно неверное слово, которое можно трактовать двояко - и ваш бизнес под вопросом закрытия, суды и штрафы
    Ответ написан
    Комментировать
  • Стоит ли идти в NoCode разработку?

    BorLaze
    @BorLaze
    Java developer
    Как бы вайти в айти, но так, чтобы не учить ничего по айти?
    Ответ написан
    Комментировать
  • Можно ли автоматически передавать код в определеную "точку" (или позицию) документа?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Была открыта ачивка "наиболее безумное, путанное, и переусложненное описание шаблонизатора". Заберите ее:
    54551260_f363612b8a7047a82a0c629b14519e07_800.jpg
    Ответ написан
    1 комментарий
  • Куда выкладывать ученические программы?

    @dmshar
    Хочется их куда-то выкладывать, дабы другие оценили наш титанический потенциал. -- пожалейте "других". Это раз.
    Ну, и более важное: Выкладывать на всеобщее обозрение то, что по качеству мягко говоря не высший сорт - зачем травмировать детскую психику?

    дабы папа ученика Васи мог её скачать и "нажать Y, чтобы напасть на дракона" з для этого достаточно GitHub'а.
    Ответ написан
    2 комментария
  • Как сделать похожую карту на сайте?

    aagzip
    @aagzip
    Воспользуйтесь данной библиотекой.

    https://github.com/StephanWagner/svgMap
    https://www.npmjs.com/package/svgmap

    Либо сделайте по аналогии.
    Ответ написан
    1 комментарий
  • Бывают ли в природе НОРМАЛЬНЫЕ работы, где нужны именно те программисты, которые знают ВСЕ, но по чуть-чуть?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Единственные компании, которые заинтересованы в найме профанов широкого профиля - это занюханные web-студии и дешёвые галеры с жадным и тупым начальством разлива 90-х годов. Реализоваться в таких компаниях в принципе невозможно, там будут непрерывно нарушать трудовые права сотрудников, выжимая из них все соки, требуя писать как можно быстрее как можно больше говнокода, а в случае проблем этих же сотрудников делают крайними и заменяют другими такими же дурачками.
    Ответ написан
    4 комментария
  • Курс или полный гайдлайн по git?

    msshubna
    @msshubna
    junior
    onlywei.github.io/explain-git-with-d3
    визуализированный консепт , передайте линк джуну
    Ответ написан
    1 комментарий
  • Все говнокодеры?

    DevMan
    @DevMan
    в основном так и есть.
    бизнесу насрать на наши модели и архитектуру, ему надо деньги делать и ещё вчера.

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

    это итеративный процесс: сначала столбим делянку как-нибудь (MVP), затем так и живём или приводим её в порядок.
    Ответ написан
    Комментировать
  • С чего начать разработку фулстек сайта?

    Stalker_RED
    @Stalker_RED
    Ну например:

    С постановки бизнес-задачи, анализа конкурентов, составления списка минимальных требований и фич.
    Затем выбор фреймворка и/или продумывание архитектуры.
    Затем создаете главную страничку с hello world, и постепенно начинаете реализовывать базовую бизнес-логику, затем добавляете фичи.

    Это не единственный путь, можно менять порядок действий.
    На практике встречается всякое, вплоть до абсурда, когда сперва пишется какой-то код, а потом придумывается "что этим всем хотел сказать автор", и придумывается архитектура.
    Ответ написан
    1 комментарий
  • Есть ли сайт по поиску партнера-программиста?

    Adamos
    @Adamos
    "Тот, кто сделает за меня" != "партнер"
    "Несколько нубов" != "команда".

    По теме - не хочешь маяться с фронтендом с нуля, возьми бутстрап. Не хочешь копаться в JS сам - научись находить готовые библиотеки. Ну, и все-таки совсем избегать JS не стоит, если лезешь в веб. Рано или поздно понадобится.
    Ответ написан
    1 комментарий
  • Как перенести сайт html или mhtml на WordPress?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    С такой постановкой вопроса только на фриланс. 100% рабочий вариант.
    Ответ написан
    Комментировать