• Подтверждение почты при регистрации - PHP?

    Почтовые сервера (фильтр антиспама, антивирь), получая письмо, могут для проверки на вирусы пройтись и по ссылкам в письме, вот ссылка и протухает. А может и браузер при отрытии письма ссылку перепроверить. Ставьте защиту, например, в виде банального чекбокса, чтоб ограничить возможность ложного срабатывания.
    Ответ написан
    7 комментариев
  • Форма обратной связи по SMTP работает, вводя только мою почту? Как исправить?

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

    @alexalexes
    1. Нужно знать что такое Update.
    2. Уметь работать с Update, не обнулив все подряд (семь раз select-ть с таким же where - один раз update-ть!)
    3. Некоторые строковые функции, например, replace.
    4. Режим работы транзакций и уровень изоляции таблиц при выполнении транзакций. Чтобы не было сюрпризом, когда работаете с выключенным autocommit-ом (это касается desktop программ - менеджеров СУБД), что данные не сохранились, когда забыли объявить commit после изменения данных, или уметь откатываться rollback-ом, если не объявили commit. Еще доступ к таблице будет заблокирован, пока вы принимаете решение после изменения данных - фиксировать их или нет, если у вас уровень изоляции транзакции на всю таблицу и вы работаете без autocommit.
    update superbase.table1
    set theme = replace(theme, 'комплект', '')
    where theme like '%комплект%'
    Ответ написан
    1 комментарий
  • Как разэкранировать json?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Логично. Если JSON ещё раз сериализовать в JSON, то как-то же ему бедному надо представить кавычки. Отправляйте значение как есть, не загоняя повторно в JSON. Либо десериализуйте после получения из базы.
    Ответ написан
    3 комментария
  • Существует ли инструмент для управления серверами ssh?

    saboteur_kiev
    @saboteur_kiev Куратор тега SSH
    software engineer
    Я бы замутил велосипед на ансибл.
    настроить все sshd, чтобы ключи читались только из /etc/ssh/keys/%user/, чтобы никто себе руками ничего не ковырял. И все. Раз в сутки по всем машинам пробежался, обновился и готово
    Ответ написан
    Комментировать
  • Как исправить долгое выполнение запросов на большой таблице?

    Adamos
    @Adamos
    Только вчера чистил битриксовскую b_form_result_answer, где за пять лет набежало 10 миллионов записей.
    Как это сделано в Битриксе:
    - таблица result, где пишется, кто заполнил форму, и ее идентификатор
    - таблица списка полей формы по ее идентификатору
    - таблица заполненных полей с идентификатором поля и ответа
    Да, тоже неторопливо, когда нужно поискать что-то, потому что постоянно приходится джойнить.
    Но уж не JSON.

    А задача повторов, действительно, решается просто хэшем, о чем вам сразу специалист и сказал.
    Ответ написан
    1 комментарий
  • Как из JSON корректно передать данные в базу данных?

    i229194964
    @i229194964
    Веб разработчик
    // Подключение к БД
    $dsn = 'mysql:host=localhost;dbname=mydatabase';
    $username = 'myusername';
    $password = 'mypassword';
    $options = array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    ); 
    $pdo = new PDO($dsn, $username, $password, $options);
    
    // Подготовленный запрос
    $stmt = $pdo->prepare("INSERT INTO mytable (snippet, amp, date, anchor, link) VALUES (:snippet, :amp, :date, :anchor, :link)");
    
    // Заполнение параметров запроса значениями из массива
    foreach ($data as $values) {
        $stmt->bindParam(':snippet', $values['snippet']);
        $stmt->bindParam(':amp', $values['amp']);
        $stmt->bindParam(':date', $values['date']);
        $stmt->bindParam(':anchor', $values['anchor']);
        $stmt->bindParam(':link', $values['link']);
        
        // Выполнение запроса
        $stmt->execute();
    }
    Ответ написан
    1 комментарий
  • Как сделать insert свыше 1000 строк?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Во первых это не MySQL, а MS SQL Server.
    Во вторых документация говопит:

    Ограничения
    При использовании в виде производной таблицы ограничение на количество строк отсутствует.

    При использовании в виде предложения VALUES инструкции INSERT... VALUES применяется ограничение в размере 1000 строк. Если число строк превышает 1000, возвращается ошибка 10738. Чтобы вставить более 1000 строк, используйте один из следующих методов:

    Создайте несколько инструкций INSERT

    Используйте производную таблицу

    Выполните массовый импорт данных, используя служебную программу bcp, класс SqlBulkCopy .NET, OPENROWSET (BULK ...) или инструкцию BULK INSERT.
    Ответ написан
    Комментировать
  • Не работает локализация setlocale в PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $fmt = new IntlDateFormatter(
        locale: "ru_RU",
        timezone: 'Europe/Moscow',
        pattern: 'EEEE, d MMMM yyyy'
    );
    print $fmt->format(new DateTimeImmutable());
    // суббота, 6 мая 2023
    Ответ написан
    Комментировать
  • Как перевести строку со шрифтом в обычный текст?

    Vindicar
    @Vindicar
    RTFM!
    Встроенной функции нет. И похоже, что речь идёт не столько о разных шрифтах, а сколько о гомоглифах - символах юникода из разных алфавитов, которые выглядят похоже. Например, как русское и латинское "о". Это нетривиальная задача, но пакет confusable_homoglyphs (ставится через pip) может помочь. В частности, функция is_confusable().
    from confusable_homoglyphs.confusables import is_confusable
    
    
    wtf = 'YOᑌ ᑎᗩᗰE 42'
    
    is_good = []
    result = []
    for c in wtf:
        data = is_confusable(c, preferred_aliases=[], greedy=True)
        if data:
            data = data[0]
            alias = data['alias']
            if alias in ('LATIN', 'COMMON'):
                data = False
        if data:
            is_good.append('!')
            print(data)
            result.append(data['homoglyphs'][0]['c'])
        else:
            is_good.append(' ')
            result.append(c)
        print()
    print(''.join(result))
    print(''.join(is_good))

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

    Конечно, можно извратиться, отрендерить строку и прогнать по ней OCR, но это такая себе идея.
    Ответ написан
    1 комментарий
  • Mini pc как сервер MySQL?

    @Drno
    Любой... где на материнки есть 2 sata )

    но так то проще арендовать VPS, т.к. это будет дешевле чем комп собирать
    Ответ написан
    Комментировать
  • Защита ajax от имитации?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Авторизацию добавьте на сайт, чтобы понимать кто шлёт запрос и реагировать соответствующе.
    Ответ написан
    6 комментариев
  • Как tilda хостит сайты?

    @vitaly_il1
    DevOps Consulting
    Посмотрите на highscalability.com/blog/category/example - там есть разбор реальных архитектур. Tilda там нет, но есть например Wix - правда в эпоху до Docker. Но принципы те же.
    Ответ написан
    Комментировать
  • Как правильно подружить Vue и php?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    а vue выступает сугубо в роли небольших компонентов на разных страницах

    Исходя из этого я могу предположить, что подобные виджетики скорее всего не нуждаются в серверном рендере, а значит все довольно просто.
    Настраиваем любой сборщик (webpack, vite). На входе будет какой-нибудь main.js, на выходе готовый файл (по умолчанию), пара файлов (main и vendor, если настроили разделение) или больше, в зависимости от хитрожопости настроек. Вот эти файлы и подключаем (соблюдая порядок, если их несколько, например vendor перед main)

    В main можно писать весь фронт сайта, или модульно импортировать.
    Туда же подключается вью и компоненты ваших виджетов

    import Vue from 'vue';
    import Calculator from './calc/Calculator.vue';


    На странице, где нужно вставить компонент пишем нечто вроде

    <div class="calc"></div>

    Сюда будет рендериться компонент в рантайме. Например так (в том же main.js)

    document.querySelectorAll('.calc').forEach(el => {
        new Vue({
            el    : el,
            render: h => h(Calculator, {
                props: {
                   /// Пропсы, если надо
                },
            }),
        });
    });


    То есть каждый виджет в этом случае будет независимым vue приложением.

    Если нужно передавать в компоненты какие-то данные, то можно научить компонент самому их запрашивать. Но тут придется отдельные роуты создавать. Или прямо на страницу в head выплевывать их в виде json

    <script>window.calcData = <?= json_encode($calcData) ?>;</script>


    а в компоненте по mounted их доставать

    mounted() {
      const d = window.calcData;
    }
    Ответ написан
    1 комментарий
  • Как написать правильно регулярное выражение для получения всей строки с неизвестными символами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    /(\d+:\w+)/us
    Ответ написан
    Комментировать
  • Как работает кошелек https://t.me/CryptoBot?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Я так понял авторы кошелька честно-честно только подержат ваш денежки у себя для вашего же удобства. Вы их переведете сами на их кошелёчек, а они помогут удобненько ими пользоваться. Нет, конечно же они не исчезнут поработав немного на репутацию пока не наберется ощутимая сумма. Какой в этом интерес? =) Ну вы понимаете...
    Ответ написан
    21 комментарий
  • Как посмотреть что лежит в переменной?

    Stalker_RED
    @Stalker_RED
    Можно сделать так
    $dump = var_export($val, true);
    error_log($dump, 3, '/path/to/myLog.txt');

    Ещё лучше - научиться пользоваться дебаггером.
    Ответ написан
    Комментировать
  • Как исправить ошибку с кавычками в sqlite3?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    ('INSERT INTO messages (message_text) VALUES (?)',(message_text,))
    Ответ написан
    Комментировать
  • Как заполнить таблицу в MySQL через файл?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Изучите внимательно документацию по LOAD DATA.

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

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

    В третьих, если данные не могут импортироваться напрямую, или если в процессе импорта необходима какая-то обработка импортируемых данных (например, корректировка формата даты), то следует использовать ещё Input Preprocessing - обработку данных между чтением из файла и записью в таблицу.

    id у меня auto-increment, пробовала и NULL, и 0, и просто цифрами заполнять - ни в какую.

    Пункт "во-вторых" в полный рост.

    Ну и любопытно, где именно Вы пробовали и NULL, и 0, и просто цифрами заполнять - в показанном Вами запросе под это просто нет места.
    Ответ написан
    Комментировать