Задать вопрос
  • Как через AJAX передать $_FILES?

    Adamos
    @Adamos
    Кусок рабочего кода для медитации:
    var data = new FormData();
    data.append('file', this.files[count]);
    $(form).find('input[type!=file]').each(function () {
      data.append(this.name, this.value);
    });
    $.ajax({
      'url': ajax_path,
      'type': 'POST',
      'data': data,
      'contentType': false,
      'processData': false,
      'dataType': 'json',
    Ответ написан
    2 комментария
  • Как найти и удалить с сайта чужой скрипт?

    Adamos
    @Adamos
    Первое - ищете файлы с самыми свежими датами. Когда вы последний раз что-то меняли на сайте - вам виднее.
    Ищутся такие файлы в Linux простейшим find.
    По ним уже разбираете - заражены они или вовсе не ваши и подлежат удалению.
    Главная задача у вас - не удалить то, что вам навалили через бэкдор (все эти скрипты и баннеры), а найти сам бэкдор и обезвредить. Иначе завтра же вся эта хрень снова будет на сайте. В идеале - найти, как этот бэкдор появился на сайте вообще. И устранить эту возможность.
    Ответ написан
    2 комментария
  • Создание сайта с функционалом CRM-системы?

    Adamos
    @Adamos
    Все возможно. Только учтите, что ТЗ у вас еще нет и не будет до самого конца.
    Поэтому не бойтесь собирать прототипы из говна и палок - лишь бы клиент мог прогнать работу этого прототипа в реальном офисе и определиться, чего он на самом деле хочет (обычно - не того, что вы решили сделать по его предварительному описанию). Ну, и аппетит придет во время еды, если проект действительно заработает - его потом годами можно обогащать и полировать.

    Ну, а фреймворк (любой) тут даст три плюса:
    1. меньше дыр из-за навязанных фреймворком правильных подходов к архитектуре и данным;
    2. более вменяемый код, по той же причине - легче будет его переделывать и поддерживать;
    3. хотя бы в самых базовых вещах типа авторизации и ACL можно взять готовое, а не велосипедить.
    Ответ написан
  • Как грамотно установить Windows 10 и Ubuntu 16 вместе?

    Adamos
    @Adamos
    Простейшие шаги примерно такие:
    1. Ставится винда на двухтерабайтник, для чего создается системный раздел.
    2. На остальной части двухтерабайтника создается раздел под NTFS - для Линукс это, конечно, не оптимально, но зато обе системы будут нормально его видеть. И это всяко лучше, чем рубить его пополам.
    3. Ставится Линукс на твердотельник. И все работает.
    Ответ написан
    Комментировать
  • Как правильно реализовать загрузку файла в Laravel?

    Adamos
    @Adamos
    1. Шаблон с инпутом и его обвязкой (если у вас анимированная мультизагрузка - соответственно, блок, в котором будет отображаться прогресс и подключение скрипта, который все это делает).
    2. Класс, который разбирает $_FILES с определенным именем и возвращает его данные в виде массива. С опциональной проверкой опасного содержимого.

    В общем, посмотреть, какой код повторяется каждый раз, и собрать его в отдельный класс. Обычный рефакторинг, фреймворк тут - дело десятое.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при добавлении информации в базу использовались сразу все пользователи?

    Adamos
    @Adamos
    Я бы сделал кроме личных сообщений - оповещения (те, которые всем). Можно в той же таблице, просто с нулевым адресатом.
    И к ним дополнительную таблицу - последний id оповещения, которое получил пользователь.
    Все оповещения, которые еще им не были получены, выдаются ему при первом же входе, при этом в таблицу заносится id последнего выданного.
    Хотя им неплохо бы и срок жизни иметь - через год-два смысла в них точно не будет...
    Ответ написан
    Комментировать
  • Какую выбрать структуру данных для многомерной разреженной матрицы?

    Adamos
    @Adamos
    > Массив массивов. Жирный минус: непонятно, как искать и обходить занятые элементы? Организовать полный цикл со стопицциот индексами и проверками на undefined? Оно искать будет до всемирного потопа.

    Вообще-то проход
    for(var index in array) { ... }
    никаких undefined не выдает, будут перебираться только реально существующие ключи и значения. Никакой карты или хэшей здесь явно не требуется - это все реализовано в самом языке.
    Ответ написан
  • Потянет ли данная конфигурация?

    Adamos
    @Adamos
    Блок питания - зачем 500 Вт? Чтобы больше платить за свет? В этой конфигурации и 300 Вт сожрать нечему.
    Материнка - на сколько она дешевле, чем ASUS или Gigabyte на том же чипе? Если разница в 200-300 рублей - лучше на "второй эшелон" не смотреть вовсе, поберечь нервные клетки для будущего.
    Ответ написан
  • Правильно ли ставить таймзону для PHP равной таймзоне пользователя?

    Adamos
    @Adamos
    Для каждого пользователя своя таймзона, да еще и по айпишнику? Бред какой.
    А если он через проксю? А если это айпишник какого-нибудь Мегафона на всю Россию?
    Вам нужен весь этот геморрой?
    Держите все время в Гринвиче и не выдумывайте велосипедов.
    Если его надо показать в поясе пользователя - лучше всего с этим справляется сам браузер - javascript в нем знает реально выставленный на компьютере часовой пояс, а не гадает по IP,
    Ответ написан
    1 комментарий
  • Почему программа зацикливается при переборе?

    Adamos
    @Adamos
    Судоку решается так:
    1. проходим по всей таблице и для каждой ячейки определяем, какие цифры в ней могут быть, по уже имеющимся.
    2. проходим по всем ячейкам. Если там может быть только одна цифра - заносим эту цифру в ячейки и исключаем ее вариант из всех ячеек, которые "бьет" данная. Выставляем флаг "были изменения".
    3. проверяем варианты на всех линиях в поисках единственного места, где может стоять цифра. Если находим такое место - вписываем цифру, "бьем" ячейки, выставляем флаг.
    4. если выставлен флаг "были изменения" - возвращаемся в п. 2
    5. если поле не заполнено полностью, значит, решения нет.
    И никакой перебор с возвратом здесь на хрен не нужен.
    Ответ написан
  • Как заштриховать картинку?

    Adamos
    @Adamos
    Если в img лежит png, в котором "море" белое, а Европа - прозрачная, то свойством background этого img можно творить любые динамические чудеса.
    Ответ написан
  • Как исправить странное поведение group by?

    Adamos
    @Adamos
    select * from `product_options`
    inner join `product_option_values` on `product_options`.`id` = `product_option_values`.`option_id` AND `product_option_values`.`product_id` in (1,2,3)
    group by `product_option_values`.`value`
    Ответ написан
  • Существуют ли универсальный framework на PHP активно использующий ООП для разбора, импорта и экспорта таблиц?

    Adamos
    @Adamos
    Проблема, собственно, не в том, что CMS разные.
    Проблема в том, что Ёксель - это не данные. Это всего лишь таблицы.
    А чтобы "творить чудеса", на вход все-таки нужно получать данные.
    Так что единственный путь, который хоть куда-нибудь ведет - это отбрасывание костылей и исключение Ёкселя из техпроцесса в принципе.
    Пока это не сделано - портянки и головная боль неизбежны.
    Ответ написан
    4 комментария
  • Можно ли обойти антивирус android приложения Сбербанка?

    Adamos
    @Adamos
    Совершенно правильно ругается. SMS-ки и нужны для того, чтобы подтвердить, что какое-либо действие выполнил пользователь.
    Исключив пользователя из этой цепочки, приложение может автоматически сделать, например, перевод со счета пользователя автору приложения...
    Ответ написан
    Комментировать
  • Шифрование пароля от БД на сервере?

    Adamos
    @Adamos
    Серверу все равно понадобится пароль в открытом виде, чтобы обращаться к базе.
    Так что при шифровании пароля придется все необходимое для его расшифровывания держать на том же сервере.
    Получается не безопасность, а профанация.

    Пароль БД не защищают от администратора сервера, его защищают от пользователей веб-сервера. Для этого шифрование не требуется.
    Ответ написан
    Комментировать
  • Как ускорить запрос к базе данных MySQL?

    Adamos
    @Adamos
    Видимо, таким образом, медленно и печально, идет процесс нормализации базы - превращения этого чудища со столбцом на 30-40 элементов в отдельную таблицу фраз и таблицу связей между 1otsev и фразами.
    Но вы маетесь ерундой, дергая таблицы по одной и делая запросы в цикле.
    1. Добавьте UNIQUE индекс на `frase`, и используйте INSERT IGNORE, после этого база сама не даст вставить дубль.
    , как совершенно справедливо посоветовал Rsa97.
    2. Прочитайте ВСЮ таблицу 1otsev и составьте массив фраз, которые должны быть в таблице key, в самом скрипте - не мучайте зря базу, уникальные значения и РНР отличать умеет.
    3. А уже потом этот массив ОДНИМ запросом запихните в таблицу key.
    4. Ну, и после этого можно будет прочесть таблицу key, спокойно пройтись еще раз по 1otsev, для каждой строчки составить данные для таблицы соответствий и опять-таки ОДНИМ запросом записать их. И еще одним - удалить этот дурацкий столбец с перечислением.
    Вряд ли это займет больше часа...
    Ответ написан
    Комментировать
  • Linux или windows под веб-разработку с фреймворком yii2?

    Adamos
    @Adamos
    Менять Windows на Linux не стоит.
    Стоит выкинуть Windows, когда вы уже поймете, что он вам на хрен не нужен.
    Пока этого нет - будут метания, темы на форумах и прочее прожигание времени впустую.
    Ответ написан
    Комментировать
  • Как наити участки кода где идет большая задержка?

    Adamos
    @Adamos
    1. Сделайте отчет не в PhpExcel, а просто в HTML.
    2. Если и он делается долго - проверяйте логику, вставляя сверку microtime.
    3. Когда добъетесь быстрого вывода отчета, сохраните этот HTML в файл с расширением XLS и не связывайтесь со всякими убогими форматами.
    Ответ написан
  • Xорошие статьи про защиту в php?

    Adamos
    @Adamos
    Входящие данные не надо защищать. Их нужно очищать от потенциально опасных включений.
    Если данные пойдут в базу - пропускать их через плейсхолдеры и никогда не включать в запросы "сырые" строки.
    Если данные будут выводиться пользователю - превращать любые символы, используемые в разметке, в HTML-версию этих символов.
    Если данные сохраняются в файлы - убедиться, что в этих файлах именно данные ожидаемого типа и что они недоступны по прямому запросу.
    Ну, и внутренняя логика не должна зависеть от входящих данных - все управляющие элементы должны оставаться на сервере, так как снаружи может прийти все, что угодно. В принципе.
    Конец статьи.
    Ответ написан
    Комментировать