Ответы пользователя по тегу PHP
  • Сильно ли влияет большое количество include на скорость загрузки страницы?

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

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

    https://stuk.github.io/jszip/
    Ответ написан
    Комментировать
  • Можно ли с помощью file_get_contents подгрузить всё содержимое страницы?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Самый простой вариант, это написать JavaScript-парсер для браузера, который бы периодически собирал инфу и отсылал ее вам на сервер. Чуть по сложнее, это раздебажить запросы во вкладке Network консоли браузера и эмулировать их php, чтобы тянуть инфу напрямую.
    Ответ написан
  • Как из style достать url?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Используйте PHPQuery.
    Ответ написан
    Комментировать
  • Как безопасно отправить пароль зарегистрировавшемуся пользователю?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Пользователь САМ должен придумать пароль, а ВЫ должны хранить хеш от него, но не САМ пароль. Разумеется в целях большей безопасности НЕ нужно отправлять пароль на почту, вот совсем-вообще. Единственный тонкий момент - на этапе ввода юзером его пароля, проверяйте, чтобы юзер выбрал достаточно надежный пароль.
    Ответ написан
    4 комментария
  • Как сделать отправку содержимого корзины на почту в нормальном виде?

    zkrvndm
    @zkrvndm
    Архитектор решений
    То что в скобках называется JSON. Гуглите как работать с JSON на PHP.
    Ответ написан
    Комментировать
  • Каким образом с формы пхп передать данные POST, обработать и открыть модальное окно?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Гуглите как использовать jQuery.ajax()
    Если я не ошибаюсь, то jQuery из под коробки присутствует в BOOTSTRAP.
    Ответ написан
    Комментировать
  • Как скачать только *.txt файлы с FTP сервера?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Используйте регулярные выражения для того, чтобы проверить название файла - содержит ли оно в конце .txt или нет.
    $text = 'имя файла.txt';
    if (preg_match("/^.*\.txt$/", $text)) {
    	echo 'yes';
    } else {
    	echo 'no';
    }
    Ответ написан
    Комментировать
  • Книги по созданию сайтов на PHP?

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

    Вам нужны либо занятия с наставником, либо самостоятельная практика от простых вещей до сложных.
    Ответ написан
    2 комментария
  • Как в php поднять переменную?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Гуглите про глобальные переменные в php и локальный доступ к ним.
    Ответ написан
    Комментировать
  • Какой запрос curl нужно вводить что бы получить данные с любого сайта?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Пример запроса с имитацией браузера:
    <?php
    
    // Указываем тип документа и кодировку:
    header('Content-Type: text/html; charset=utf-8');
    
    // Включаем отображение ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Адрес для парсинга:
    $url = 'https://yousite.com';
    
    // Создаём новый сеанс:
    $curl = curl_init();
    
    // Указываем адрес целевой страницы:
    curl_setopt($curl, CURLOPT_URL, $url);
    
    // О отключаем проверку SSL сертификата:
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    
    // Устанавливаем заголовки для имитации браузера:
    
    $headers = [];
    $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
    $headers[] = 'Accept-Encoding: identity';
    $headers[] = 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7';
    $headers[] = 'Cache-Control: no-cache';
    $headers[] = 'Connection: keep-alive';
    $headers[] = 'Host: ' . parse_url($url)['host'];
    $headers[] = 'Pragma: no-cache';
    $headers[] = 'Sec-Fetch-Dest: document';
    $headers[] = 'Sec-Fetch-Mode: navigate';
    $headers[] = 'Sec-Fetch-Site: none';
    $headers[] = 'Sec-Fetch-User: ?1';
    $headers[] = 'Upgrade-Insecure-Requests: 1';
    $headers[] = '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';
    
    
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    
    // Разрешаем переадресацию:
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    
    // Запрещаем прямой вывод результата запроса:
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
    // Делаем сам запрос:
    $result = curl_exec($curl);
    
    // Завершаем сеанс:
    curl_close($curl);
    
    // Смотрим результат:
    echo $result;
    Ответ написан
    Комментировать
  • Как спарсить Ozon?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Насколько знаю Ozon не нужно парсить, у них свободно можно скачать хоть весь каталог в CSV или Excel.
    Ответ написан
  • Как правильно сформировать CURL запрос с proxy?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Пример запроса через http-прокси с имитацией браузера:
    <?php
    
    // Указываем тип документа и кодировку:
    header('Content-Type: text/html; charset=utf-8');
    
    // Включаем отображение ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Адрес для парсинга:
    $url = 'https://yousite.com';
    
    $proxy = '45.137.189.251:65233'; // Прокси вместе с портом
    $proxyauth = 'login:password'; // Логин и пароль от прокси
    
    // Создаём новый сеанс:
    $curl = curl_init();
    
    // Указываем адрес целевой страницы:
    curl_setopt($curl, CURLOPT_URL, $url);
    
    // О отключаем проверку SSL сертификата:
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    
    // Указываем настройки нашего прокси:
    curl_setopt($curl, CURLOPT_PROXY, $proxy);
    curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyauth);
    
    // Указываем тип прокси:
    curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    
    // Устанавливаем заголовки для имитации браузера:
    
    $headers = [];
    $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
    $headers[] = 'Accept-Encoding: identity';
    $headers[] = 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7';
    $headers[] = 'Cache-Control: no-cache';
    $headers[] = 'Connection: keep-alive';
    $headers[] = 'Host: ' . parse_url($url)['host'];
    $headers[] = 'Pragma: no-cache';
    $headers[] = 'Sec-Fetch-Dest: document';
    $headers[] = 'Sec-Fetch-Mode: navigate';
    $headers[] = 'Sec-Fetch-Site: none';
    $headers[] = 'Sec-Fetch-User: ?1';
    $headers[] = 'Upgrade-Insecure-Requests: 1';
    $headers[] = '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';
    
    
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    
    // Разрешаем переадресацию:
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    
    // Запрещаем прямой вывод результата запроса:
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
    // Делаем сам запрос:
    $result = curl_exec($curl);
    
    // Завершаем сеанс:
    curl_close($curl);
    
    // Смотрим результат:
    echo $result;
    Ответ написан
    Комментировать
  • Как переименовать файл из input?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Есть 3 способа. Один правильный и 2 неправильных.

    Первый способ (правильный) - это переименовать полученный файл непосредственно в php-обработчике.

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

    Третий способ, подменять файл на лету непосредственно в поле выбора файла:
    document.querySelector('input[type="file"]').addEventListener('change', function() {
    	if (this.files.length > 0) {
    		var file_name = 'Новое название.jpg';
    		if (this.files[0].name !== file_name) {
    			var new_file = new File([this.files[0]], file_name, {type: this.files[0].type});
    			new_file.name = file_name;
    			var dt = new DataTransfer();
    			dt.items.add(new_file);
    			this.files = dt.files;
    		}
    	}
    });

    Думаю вполне понятно, что 2 последних способа неправильные. Да, они буду работать, но так обычно не делают.
    Ответ написан
    9 комментариев
  • Почему PHP не принимает JSON отправленный через AJAX?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Делай так:
    async function sendPOST() {
    	
    	try {
    		
    		var formData = new FormData();
    		formData.append('name', 'Илья');
    		formData.append('email', 'test@gmail.com');
    
    		var response = await (await fetch('newtest.php', {
    			method: 'POST',
    			body: formData
    		})).text();
    
    		console.log("POST-запрос отправлен успешно. Ответ сервера:\n" + response);
    
    		return response;
    		
    	}
    	
    	catch (err) {
    		
    		console.log('При отправке POST-запроса произошла ошибка:');
    		console.dir(err);
    		
    		return false;
    		
    	}
    	
    }

    Для отправки запроса вызываешь функцию sendPOST()
    Внутри PHP-обработчика при этом смотришь глобальную переменную $_POST примерно так:
    <?php
    print_r($_POST);
    ?>
    Ответ написан
  • Как вводить данные в форму и нажимать кнопки на сайте через скрипт?

    zkrvndm
    @zkrvndm
    Архитектор решений
    UserScript
    Ответ написан
    Комментировать
  • На любом php-хостинге есть постоянное доменное имя по умолчанию?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если вы беспокоитесь, что ваш код могут сразу на нескольких серверах использовать, то проверка по хосту ничего не гарантирует. Имеет смысл прикрутить механизм активации с ключами и заполировать все это IonCube.
    Ответ написан
  • Можно ли использовать html-код в файле php?

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Когда юзер перетаскивает файлы, вы на выходе получайте коллекцию файлов FileList. Эту коллекцию можно перебрать, как обычный массив, по одному оттуда брать файлы и отправлять при помощи fetch() и FormData()
    Ответ написан
    Комментировать
  • Где хранить статус формы?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Пишите в localStorage, эту информацию нет смысла хранить на сервере.
    Ответ написан
    Комментировать