Задать вопрос
  • Как обойти cors?

    @firecorer
    Совсем недавно занимался решением такой проблемы. Всего лишь нужно отдать необходимые HTTP заголовки клиенту.
    Пример на php:
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Accept, X-PINGOTHER, Content-Type');
    Ответ написан
    2 комментария
  • Допустимо ли создавать массивы в php без части элементов?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    В php ключи массива могут быть любыми.
    Можете сразу создавать с нужными ключами
    $myArray = [
        1 => $array2
    ];
    Ответ написан
  • На всех хостингах по умолчанию работает mail?

    DevMan
    @DevMan
    функция mail работает у многих. но проблема в том, что ей мало куда можно отправить почту.

    курите тему PHP + SMTP. например, mailer или phpmailer
    Ответ написан
    Комментировать
  • Как удалить вредоносный код с большого количества файлов?

    Immortal_pony
    @Immortal_pony
    rm -rf /var/www/mysite.com/*
    cd /var/www/mysite.com
    git clone {myrepourl} .
    cp .env.example .env
    nano .env
    composer install
    Ответ написан
    6 комментариев
  • Возможно ли как-то оптимизировать json_decode?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет, "оптимизировать json_decode" нельзя.

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

    Распарсить, положить в базу, при изменении данных менять их в базе, искать по-человечески, через SQL.
    А редис тут вообще никаким боком не упёрся.
    Ответ написан
    8 комментариев
  • Как повесить событие input только на type="text"?

    Alex_mos
    @Alex_mos
    Google всему голова
    Получаете инпуты по input[type="text"]
    Ответ написан
    Комментировать
  • Как писать условие if если очень много значений для проверки, а нужно чтобы они за экран не залезали, не превращались в очень длинную строку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень хороший вопрос!

    Для длинных условий можно и нужно использовать такую замечательную практику, как именованные условия!
    В большинстве случаев, когда условия не зависят друг от друга, можно просто присвоить результат вычисления условия переменной с обязательно говорящим именем, и дальше уже использовать эти переменные:

    $dateIsValid = $obj->getDate() >= getCurrentDate();
    $balanceOk = $obj->getBalance() > 0;
    // Любые другие условия
    if ($dateIsValid && $balanceOK) ...


    Это повышает читабельность не только сокращая само тело условного оператора, но в первую очередь превращая его в связный текст!

    Если же условия зависят друг от друга, то можно оформлять их в виде функций (методов). И тогда они не будут выполнены, если до них не дойдет очередь.
    Ответ написан
  • Как сделать многостраничный сайт без PHP/python/React?

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

    0xD34F
    @0xD34F Куратор тега JavaScript
    Массивы сложить в массив (const arrs = [ arr1, arr2 ];), дальше есть варианты:

    const result = arrs[0].map((_, i) => arrs.flatMap(arr => arr[i]));

    или

    const result = arrs.reduce((acc, arr) => (
      arr.forEach((n, i) => (acc[i] ??= []).push(...n)),
      acc
    ), []);

    или

    const result = [];
    
    for (const arr of arrs) {
      for (const [ i, n ] of arr.entries()) {
        if (!result[i]) {
          result[i] = [];
        }
    
        for (const m of n) {
          result[i][result[i].length] = m;
        }
      }
    }
    Ответ написан
    1 комментарий
  • Можно ли сделать sysprep на Windows server 2016?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Делаете бекап.
    Проверяете, что он действительно сделался и с него сможете восстановиться.
    На железном сервере ставите серверную винду (можно при желании даже версию винды повысить), делаете её дополнительным контроллером домена в существующем домене.
    Поднимаете на железном сервере те же службы что и на виртуальном (dhcp, dns и т.п. при необходимости перенастраиваете днс сервера у клиентских машин) и понижаете виртуальный сервер до обычного члена домена. Выключаете виртуальный сервер (можно даже после отключения перезагрузить физический) и проверяете, чтобы всё работало.
    Ответ написан
    3 комментария
  • Как очищать текст в 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 комментариев
  • Почему не рекомендуют использовать jQuery?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    Потому что jQuery создавался в свое время, чтобы упростить работу с чистым js (в то время это действительно было нужно). А сейчас смысла в jq нету. Потому что он уже ничего не упрощает. Сейчас на чистом js можно писать быстрее и проще.
    Ответ написан
    Комментировать
  • Можно ли настроить DHCP и статику одновременно?

    Zoominger
    @Zoominger Куратор тега Компьютерные сети
    System Integrator
    Сделайте ему привязку по MAC-адресу и не изобретайте велосипед.
    Ответ написан
    Комментировать
  • Segmentation fault c++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Чему равно n, когда вы заводите массив a[n]?
    Ответ написан
    7 комментариев
  • Как сделать, чтобы при удалении записей остальные id записей начинались с 0?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак не делать .
    Этот вопрос очень часто задают новички, от непонимания базовых принципов

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

    Либо тебе это поле вообще не нужно, и его надо убрать, либо просто оставь его в покое и никогда не трогай его руками
    Ответ написан
    1 комментарий
  • Можно ли использовать законно неактивированую виндовс 10?

    ettaluni
    @ettaluni
    ERROR MEME
    Ну есть же лицензионное соглашение ты его читал когда принимал?
    Вы имеете право использовать данное программное обеспечение, только если у вас имеется соответствующая лицензия и программное обеспечение было должным образом активировано с использованием подлинного ключа продукта или другим разрешенным способом
    Ответ написан
    3 комментария
  • Почему не работает выборка WHERE в SQL запросе?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    первая подсказка - использовать подготовленные выражения
    вторая подсказка - вывести на экран ваш запрос, скопировать, вставить в консоль sql / пхпмайадмин и выполнить.

    выводит все записи из таблицы
    Могу предположить что данное поле не является уникальным значением и ничего удивительного что вы получаете ВСЕ записи, где категория = какому-то номеру.
    Ответ написан
    Комментировать
  • Бесплатен ли VirtualBox?

    @kalapanga
    Всё здесь https://www.virtualbox.org/wiki/Licensing_FAQ и дальше по ссылкам.
    Если я правильно понимаю, то собственно VirtualBox, распространяется под GNU GPL v2, которая не накладывает ограничений на использование. Если умудритесь только им обойтись - можно использовать.
    А вот VirtualBox Extension Pack распространяется под лицензией Personal Use and Evaluation License, которая не допускает использования в коммерческих целях. И это на него покупается Enterprise License, которая ещё включает поддержку.
    Ответ написан
    1 комментарий
  • Почему PHP8 требует определять переменные?

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

    gbg
    @gbg
    Любые ответы на любые вопросы
    Вы не научитесь писать и проектировать программы, если самостоятельно не набьете на этом шишек.

    Переписывание программы заново - нормальный процесс, называемый рефакторингом. "На берегу", еще до начала написания кода, вы не будете видеть все тонкости и нюансы. Так что хлопанье себя по лбу и отправка кода в корзину = нормальный творческий процесс разработки.

    После нескольких таких заездов по граблям вы получите опыт - ошибки и трудности, с которыми вы начнете сталкиваться будут такие, что ни в книге сказать, ни на StackOverflow прочитать.
    Ответ написан
    1 комментарий