Задать вопрос
  • Как отправить корректно форму через ajax внутри iframe?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если загружается родитель, значит адрес на который вы передаете форму и есть родитель. Убедитесь, что передаете форму куда-надо, попробуйте вместо в action указать не относительную, а полную ссылку на php-обработчик.
    Ответ написан
    Комментировать
  • Как спарсить или импортировать СМС от банков РФ в ПО по финучету?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Со смартфона парсить смс тяжело будет, самый простой вариант это купить 4G модем и уже с его веб морды вытягивать смс.
    Ответ написан
    Комментировать
  • Я бы хотел зашифровать системный диск, как я могу это сделать?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Большинство дистрибутивов при установке имеют опцию шифрования диска, просто воспользуйтесь этой опцией на этапе установки.
    Ответ написан
    1 комментарий
  • Как спарсить сайт с последующим переводом на другой язык?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Используйте виджет:
    https://translate.yandex.ru/developers/website-widget

    Алгоритм действий следующий:
    1. Получайте html-код целевой страницы при помощи file_get_contents()
    2. Внутрь полученного html перед закрывающим тегом body вставляйте JavaScript-код виджета
    3. Затем выводите результат в браузер пользователя при помощи echo

    P. S. Это в корне не правильный, но наиболее простой способ переводить страницы на лету. Если делать все по уму, нужно поднимать ревер-прокси и переводит тексты на стороне сервера используя непосредственно API переводчика.
    Ответ написан
  • Как указать московское или серверное время в автоотправке запроса с помощью JS?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Это делается так, ставится setInterval() для проверки текущего времени допустим каждый час, когда до назначенной даты остается несколько часов, меняем интервал проверки и уже проверяем дату каждую минуту. За несколько минут, начинаем уже проверять время каждую секунду и за несколько секунд до нужного времени, выкатываем setTimeout() с точным количеством миллисекунд для запуска вашей команды в точно указанное время.
    Ответ написан
    Комментировать
  • Как парсить комментариев vk по ключевому слову?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Я бы вообще не использовал API, а тупо напрямую прошелся бы по всем комментариям при помощи JavaScript-бота.
    Ответ написан
    Комментировать
  • Как удалить кеш браузера на js?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если вам нужно применить изменения в стилях, то просто добавьте случайные GET-параметры при подключении стилей.
    Ответ написан
    Комментировать
  • Существуют ли способы удалять файлы выборочно из input multiple?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Я нащупал два решения для этой проблемы.

    Первый способ позволяет вставить произвольный Blob в поле <input type="file">. Итак, способ создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    Можно просто пересоздать коллекцию, если надо что-то удалить из поля.

    Второй вариант позволяет получать заранее подготовленные коллекции файлов и далее их вставлять и использовать их где угодно. Для начала нам нужно подключить библиотеку localforage:
    <script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>

    Далее, мы можем выбрать файлы для коллекции и сохранить их в памяти браузера:
    var input = document.createElement('input');
    input.setAttribute('type', 'file');
    input.setAttribute('multiple', 'multiple');
    input.addEventListener('change', async function() {
    	var files = await localforage.setItem('files', this.files);
    	console.log('Коллекция файлов успешно сохранена:');
    	console.dir(files);
    });
    input.click();

    Сохраненную коллекцию мы позднее сможем использовать даже после перезагрузки страницы или закрытия / открытия браузера. Для извлечения сохраненной коллекции достаточно выполнить:
    var files = await localforage.getItem('files');
    console.log('Коллекция файлов успешно извлечена:');
    console.dir(files);

    Эта коллекция полноценная и мы легко можем ее прицепить в любое поле:
    var files = await localforage.getItem('files');
    document.querySelector('input[type="file"]').files = files;

    При этом файлы в поле будут выглядеть точно так же, будто выбраны с компа, никаких отличий.
    Ответ написан
    Комментировать
  • Как разблокировать FileList на запись?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную info вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

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

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я, в свое время сколько не искал, везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    Комментировать
  • Как клонировать один конкретный файл из коллекции FileList?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную info вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

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

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я, в свое время сколько не искал, везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    Комментировать
  • Как программно вставить файлы в input?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Лайфхак для создания коллекции файлов FileList:
    var info = 'Какой-нибудь текст';
    
    var dt  = new DataTransfer();
    dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
    var file_list = dt.files;
    
    console.log('Коллекция файлов создана:');
    console.dir(file_list);
    
    // Вставим созданную коллекцию в реальное поле:
    document.querySelector('input[type="file"]').files = file_list;

    В переменную info вместо текста, можно положить в том числе и Blob - это особенность функции new File() которая первым параметром может принять как массив из текстов, так и массив из Blob.

    Фактически лайфхак выше позволяет нам JavaScript-ом скачать любой какой угодно файл со своего сайта и вставить его абсолютно в любое поле <input type="file"> - что просто архиполезно для браузерных ботов.

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

    Огромное спасибо пользователю Mmx Symfony, который нарыл это решение где-то в недрах иностранных сайтов. Сам я, в свое время сколько не искал, везде был ответ, что это невозможно, а оказалось, что нихрена подобного =)
    Ответ написан
    3 комментария
  • Через какую программу можно работать с хостингом?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вот, хороший вариант для правки файлов сайта на лету:
    https://sprut.io/ru/

    Если у вас вдруг имеется VDS на Beget, то они предоставляют этот файловый менеджер из под коробки.

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Просто используйте textarea вместо input. Кстати, в связке вот с этим плагином можно получить адаптивное по высоте поле ввода.
    Ответ написан
  • Как сохранить обработчики событий jQuery после применения к элементу .wrap()?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Объедениете и переносите все обработчики на самый верхний уровень на body и уже в зависимости от того, что внутри event.target запускать тот или иной скрипт.

    Также можно не так радикально, просто вывести обработчики в соответствующие атрибуты у элементов.

    Если ни тот, ни другой вариант не подходит, то попробовать уже самому написать функцию для обертывания с теми параметрами, которые нужны.
    Ответ написан
  • Обязательно ли использовать meta charset="UTF-8" на странице?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Вы можете не указывать кодировку в теле документа, но тогда нужно обязательно ее указать в заголовке ответа.
    Ответ написан
    Комментировать
  • Как получить данные с Яндекс Погоды?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Проверил, действительно не работает:
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://api.weather.yandex.ru/v2/informers?lat=55.75396&lon=37.620393');
    xhr.setRequestHeader('X-Yandex-API-Key', '04aa3404-32a8-4baf-a280-db8a58bb908a');
    
    xhr.onreadystatechange = function() {
    	if (xhr.readyState === XMLHttpRequest.DONE) {
    		if (xhr.status === 200) {
    			var obj = JSON.parse(xhr.responseText);
    			console.log('Успех:');
    			console.dir(obj);
    		}
    		else {
    			console.log('Ошибка:');
    			console.dir(xhr);
    		}
    	}
    }
    
    xhr.send();

    Происходит это из-за отсутствия заголовка Access-Control-Allow-Origin на стороне Яндекса. Вам необходимо связаться с технической поддержкой Яндекса и уточнить почему отсутствует этот заголовок - возможно они просто недоглядели и это ошибка с их стороны, а возможно так и заудмано, что с фронта нельзя запросить погоду. В последнем случае, вам нужно проксировать запрос через свой сервер используя либо CURL либо file_get_contents()

    Если не знаете, что именно писать в Яндекс, просто дайте им ссылку на мой ответ, их спецы поймут о чем речь.
    Ответ написан
    Комментировать
  • Есть ли ограничения на количество файлов и папок на php-хостингах?

    zkrvndm
    @zkrvndm
    Архитектор решений
    У Beget есть бесплатный хостинг и там четко прописано максимальное количество файлов:

    Максимальное количество файлов: 25 000

    Если будете использовать их бесплатный хостинг, можете ориентироваться на эту цифру.
    Ответ написан
    Комментировать
  • Как расшифровать gzip архив из file_get_contents?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Укажите в заголовках запроса, чтобы целевой сайт свой ответ отдавал без сжатия:
    <?php
    
    header('Content-type: text/html; charset=utf-8');
    
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Accept-Encoding: identity\r\n".
                  "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36"
      )
    );
    
    $context = stream_context_create($opts);
    
    $html = file_get_contents('https://www.rusprofile.ru/id/11597949', false, $context);
    
    echo $html;
    Ответ написан
    Комментировать
  • Какой есть инструмент для формирования и централизованного хранения документации по исходному коду?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Пилите сайт, хоть на том же Битриксе и размещайте его локально. Можно даже на флешку записать при желании и потом всегда носить с собой:
    https://usbwebserver.yura.mk.ua/ru.php
    Ответ написан
  • Как сделать рандомно обновляющися div после обновления страницы?

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

    https://yandex.ru/search/?text=примеры%20использов...
    Ответ написан
    Комментировать