Задать вопрос
  • Как решить php выдает ошибку при подключении к БД?

    @WitER
    mysqli_connect( 'localhost', 'root', '', 'dargin-language');

    Читайте документацию, пожалуйста.
    Ответ написан
    Комментировать
  • Как передавать один параметр, а не 3?

    Melkij
    @Melkij
    PostgreSQL DBA
    Потому что необходимо в join описывать критерий объединения. (я вообще думал, что это требование стандарта и в [inner] join синтаксически обязателен on, using или natural)

    FROM views v JOIN memes m using(user_id) JOIN comments c using(user_id)
     WHERE user_id = 1
    Ответ написан
    Комментировать
  • Как сделать такой магазин в телеграме?

    Stepashka20
    @Stepashka20
    (☞゚ヮ゚)☞
    Ответ написан
    Комментировать
  • Как сделать такой магазин в телеграме?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    На самом деле все просто - это Telegram Web Apps
    Ответ написан
    Комментировать
  • Какую БД использовать в телеграм боте на хостинг сервисе?

    @rPman
    sqlite проще, нагрузки у telegram ботов очень низкие поэтому этого будет достаточно. Бонусы - простота администрирования, памяти sqlite требует значительно меньше чем mysql сервер
    Ответ написан
    Комментировать
  • Почему Телеграмм бот не показывает Reply - кнопки?

    SoreMix
    @SoreMix
    yellow
    Дело не в кнопках, а в двух одинаковых хендлерах, работающих на команду /start. Если в коде два одинаковых - выполняется первый объявленный -> функция keyboard_button никогда не вызывается. Или объединяйте код под одну функцию, либо по другому как нибудь хендлеры разграничивайте
    Ответ написан
    2 комментария
  • Что такое Trojan:HTML/Phish.YH!MTB?

    Название и тот факт, что он лежит в кэше браузера намекают, что он видимо может подменять сайт собой для кражи твоих данных.
    Ответ написан
    1 комментарий
  • Ошибка expected expect or finally block.Как решить?

    Frostealth
    @Frostealth
    Backend Developer
    Исключения в python
    try:
        # your code
    except ExceptedException as exc:
        # handle the exception
    Ответ написан
    Комментировать
  • Надо ли что-то еще делать для избежания SQL инъекций?

    @rPman
    Конкретно для защиты от одной из многих атак - sql injection, да
    А еще нужно проверять на ошибки, проверять на валидность самих значений соответственно бизнес модели и состояний (например пользователь редактирует запись, указывая идентификатор связанной таблицы, так вот нужно проверить имеет ли он права в принципе указывать полученный id)
    Ответ написан
    4 комментария
  • Досудебная претензия за использование домена?

    Griboks
    @Griboks
    Обычная разводка лохов.
    Ответ написан
    Комментировать
  • Как выключить хеширование инлайн результатов?

    SoreMix
    @SoreMix
    yellow
    Поставить параметр cache_time в нужное число в секундах в вызове метода answerInlineQuery

    https://core.telegram.org/bots/api#answerinlinequery
    Ответ написан
    Комментировать
  • Как запустить python скрипт/exe файл через arduino?

    Варианта два:
    1. Сложный и в теории правильный - по сути написать свой драйвер (а может и не драйвер), который будет постоянно в фоне сидеть и отслеживать, какие устройства подключаются, и при подключении твоей ардуины - запустит нужный код.

    2. Простой, но костыльный и пахнущий зловредами - BadUSB

    Зависит от твоей задачи.
    Ответ написан
    Комментировать
  • Как разделить код на несколько файлов?

    Vindicar
    @Vindicar
    RTFM!
    У тебя будет проблема с циклическим импортом: основной файл будет импортировать модули с функциями, но этим модулям будет требоваться экземпляр бота, описанный в основном файле. Эту проблему можно обойти так:
    # submodule_1.py  - модуль, содержащий часть функций бота
    def setup(bot):  
        # bot - объект бота. Можешь добавить и другие полезные параметры, такие как:
        # - объект logging.Logger для журналирования
        # - объект соединения с БД
        # - ну и что там ещё тебе потребуется
    
        # все обработчики событий объявляем ВНУТРИ setup()
        # тогда они смогут ссылаться на переданные параметры
        @bot.command('/start')  # например, чтобы использовать декораторы
        def on_start(message):
            message.reply('foobar')
    # мы описали функцию setup(), но здесь мы её не вызываем!
    
    
    # main.py - основной файл бота
    bot = ...  # создаём объект бота
    
    import submodule_1  # импортируем модуль с функциями
    # при вызове setup() будут заданы обработчики событий, описанные в ней
    submodule_1.setup(bot)  # функции передаём объект бота (и другие объекты, если она их ожидает)
    # функцию setup() нужно вызывать не более одного раза!
    # так можно добавлять столько модулей, сколько требуется.
    
    bot.run()  # дальше бота запускаем как обычно
    Ответ написан
    2 комментария
  • Как сделать диаграмму полукругом?

    Stalker_RED
    @Stalker_RED
    Простая дуга в SVG
    Длина закрашенной части это радиус * π * проценты / 100.
    Если "живое" поведение не нужно, то можно выбросить весь js код с обработчиком инпута, а заранее рассчитанное число захардкодить в свойство stroke-dasharray в атрибуте фигуры или в css.
    Ответ написан
    Комментировать
  • Как принимать и обрабатвать ключи типа `-key "value"` в строках?

    Vindicar
    @Vindicar
    RTFM!
    argparse, но ей требуется уже подготовленный список токенов, т.е. отдельных частей строки. Такой список можно сделать через shlex.
    Ответ написан
    Комментировать
  • Почему не работает выдача ссылки в боте телеграмма?

    Vindicar
    @Vindicar
    RTFM!
    aiogram.utils.exceptions.BadRequest: Can't invite members to a private chat

    Ты передаёшь в функцию ID приватного чата, а не комнаты. Проблема в этой строке.
    await bot.approve_chat_join_request(chat_id=callback_query.message.chat.id, user_id=user_id)
    Ответ написан
    Комментировать
  • Почему не работает программа нормально?

    Vindicar
    @Vindicar
    RTFM!
    Ты объявляешь функцию replay(), но не вызываешь её.
    А вообще, тебе тут нужен цикл, а не рекурсия.
    Ответ написан
    Комментировать
  • Как работает htmlspecialchars()?

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

    Эта функция заменяет спецсимволы, которые являются управляющими в контексте HTML, на безобидные HTML-сущности. Вот и всё.
    Чисто визуально управляющие символы будут выглядеть так же, как и должны, но в коде не будут представлять ни малейшей опасности.

    Для XSS важно, будут ли экранироваться одинарные кавычки или нет, если одинарные кавычки используются для ограничения атрибута.
    Пример

    <?php $name = "' onclick='alert(\"pwned!\")"; ?>
    <input value="<?=htmlspecialchars($name) ?>"> Не важно. Весь текст так и заключен в двойные кавычки
    <input value='<?=htmlspecialchars($name) ?>'> Важно. Закрыли одинарную, вписываем, что хотим

    Во втором случае этот код отрендерится, как
    <input value='' onclick='alert(&quot;pwned!&quot;)'>
    (но при этом &quot; отрендерятся в двойные кавычки, и в onclick будет уже валидный яваскрипт
    alert("pwned!")

    А с взведенным флагом ENT_QUOTES мы получим
    <input value='&#039; onclick=&#039;alert(&quot;pwned!&quot;)'>

    И хотя значение внутри атрибута отрендерится, как ' onclick='alert("pwned!"), но оно все целиком будет внутри атрибута value.

    Разумеется, лучше всего сделать применение функции универсальным, чтобы не проверять кавычки каждый раз, и не обливаться холодным потом, если кавычки вдруг поменяются. И использовать ENT_QUOTES всегда.

    К счастью, РНР уже позаботился о вас и ваших друзьях. Начиная с версии 8.1, флаг ENT_QUOTES ставится по умолчанию. И приведенный выше пример будет работать только на устаревших версиях. Так что ручное добавление уже уходит в область легаси-практик.

    Чтобы не ломать пальцы, каждый раз набирая всё это htmlspecialchars ENT_QUOTES, толковые джуны всегда пишут пользовательскую функцию-макрос, типа
    function esc($var) {
        return htmlspecialchars($var, ENT_QUOTES);
    }

    Правда, надолго с этой функцией не задерживаются, потому что она годится только при обучении. А любой проект сложнее, чем домашняя страничка про любимого котика, в обязательном порядке уже должен для вывода использовать специальный шаблонизатор, например Twig. Где весь вывод идет с помощью специального оператора, который уже по умолчанию экранирует HTML
    <input value="{{$name}}"> Не важно. Все уже проэкранировано до нас

    Важно помнить, что это экранирование работает только в контексте HTML.
    Если выводим данные внутри кода яваскрипт, то htmlspecialchars поможет как мертвому припарки. И в этом случае надо использовать json_encode.

    Ну и разумеется, надо не забывать комбинировать все варианты экранирования.
    Например, код яваскрипт, который пишется в атрибут HTML тега, надо весь целиком экранировать c с помощью htmlspecialchars. А данные для этого кода - c с помощью json_encode:
    <button onclick="<?= htmlspecialchars("window.open(".json_encode($name).")", ENT_QUOTES) ?>">
    Ответ написан
    3 комментария
  • Не получается спарсить, что делаю не так?

    Maksim_64
    @Maksim_64
    Data Analyst
    у тебя у r status_code 403. Добавь хоть какой нибудь header.
    headers = {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0'
    }
    r = requests.get(url,headers=headers)

    Вот так сервер пришлет html.
    Имей также ввиду что парсить интерактивно (в рамках одного соединения) с bs не получится, придется переподключаться часто ну и схватишь блок или ерунду начнет присылать в ответ. Если ты перейдешь на страницу, зайдешь в инспектор, нажмешь на значек настройка в панели инспектора, затем поставишь галочку Disable JavaScript и обновишь страницу, вся инфа на странице перестанет обновляться. По скольку обновление происходит средствами JavaScript a bs не работает с JavaScript.
    Ответ написан
    3 комментария