Ответы пользователя по тегу PHP
  • Проблема с CORS policy: No 'Access-Control-Allow-Origin', при загрузке изображений?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Судя по всему у вас на сайте используется ленивая загрузка изображений - иначе не могу объяснить почему у вас картинки грузятся через XHR. Попробуйте отключить ленивую загрузку изображений, должно помочь. Либо добавьте разрешающие заголовки на стороне сервера с которого отдаются картинки, если конечно сервер ваш.
    Ответ написан
  • Показ JS уведомлений через PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Обработка результата (ответа сервера) должна проходить там же, где вы отправляйте форму. Просто сделайте отправку формы через AJAX без перезагрузки страницы и тогда сможете обрабатывать ответ JavaScript-ом.
    Ответ написан
    Комментировать
  • Как разрешить доступ к php файлу только из js?

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

    Если ваша форма отправляется без авторизации, то тогда вместо кук можете использовать токены. Например, когда пользователь выполняет какие-то действия на сайте (скролит страницу, кликает поля формы или еще что-нибудь), то по факту выполнения этих действий выдаете уникальный одноразовый токен. Соответственно, далее при отправке формы передаёте это токен вместе с формой и проверяйте на стороне сервера.
    Ответ написан
  • Мне нужно отправить с jquery объект, принять в php и сразу же отправить его в платежную систему?

    zkrvndm
    @zkrvndm
    Архитектор решений
    У вас не указан размер тела запроса Content-Lenght, без него запрос считается не валидным.
    Ответ написан
    Комментировать
  • Как передать данные из формы через cURL?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если вам просто нужно переслать форму со своего сайта на какой-то левый сайт, делайте так.

    Создайте файл test.php со следующим содержимым:
    Нажмите здесь, чтобы развернуть скрытый текст
    <?php
    
    // Указываем браузеру, что ответ будет текстом:
    header('Content-Type: text/plain; charset=utf-8');
    
    // Включаем показ ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Если это POST-запрос:
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
    	// Адрес для пересылки формы:
    	$url = 'http://diplom/example.php';
    
    	// Конвертируем все полученные данные с формы
    	// в строку application/x-www-form-urlencoded:
    
    	$vars = http_build_query($_POST);
    
    	// Создаём новый сеанс:
    	$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 = array(
    		'Accept: */*',
    		'Accept-Encoding: identify',
    		'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    		'Connection: keep-alive',
    		'Content-Length: '.strlen($vars),
    		'Content-Type: application/x-www-form-urlencoded',
    		'Host: '.parse_url($url)['host'],
    		'Origin: '.parse_url($url)['scheme'].'://'.parse_url($url)['host'],
    		'Referer: '.parse_url($url)['scheme'].'://'.parse_url($url)['host'].'/',
    		'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
    		'sec-ch-ua-mobile: ?0',
    		'Sec-Fetch-Dest: empty',
    		'Sec-Fetch-Mode: cors',
    		'Sec-Fetch-Site: cross-site',
    		'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
    	);
    
    	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    
    	// Указываем, что у нас POST запрос:
    	curl_setopt($curl, CURLOPT_POST, 1);
    
    	// Разрешаем переадресацию:
    	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    
    	// Запрещаем прямяой вывод результата запроса:
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
    	// Добавляем данные для отправки:
    	curl_setopt($curl, CURLOPT_POSTFIELDS, $vars);
    
    	// Делаем сам запрос:
    	$result = curl_exec($curl);
    
    	// Завершаем сеанс:
    	curl_close($curl);
    
    	// Выводим результат:
    	echo $result;
    
    }

    Далее, на этот файл test.php отсылайте свою форму и php-скрипт внутри него перешлет форму туда, куда вы указали.
    Ответ написан
    Комментировать
  • Как получить данные со второго домена через fetch, если Header set Access-Control-Allow-Origin * уже стоит?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Ваш сервер возвращает не JSON из-за чего ошибка. Попробуйте прочитать ответ второго сайта, как просто текст:
    fetch('http://back.ru/site').then(res => {return res.text()}).then(data => {console.log(data)});
    Ответ написан
    Комментировать
  • Как спарсить большой файл с PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Просто вынесите задачу на фронт. Создайте небольшую html-страничу, внутри нее кнопку. При нажатии на кнопку, вы скачивайте ваш JSON и парсите его. После парсинга по одному перебирайте ключи первого уровня вложенности и fetch-ем по одному отсылайте данные на сервер, чтобы он из сохранил у себя. Отсылайте по одному и строго один за другим, чтобы не перегружать ваш бэкенд и так, чтобы каждый очередной запрос с гарантией успевал отработать за 60 сек.
    Ответ написан
  • Как отправить кириллицу в чат бот telegram?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Для корректной передачи GET-параметров Вы должны использовать кодировку application/x-www-form-urlencoded. В языке PHP для получения строки нужного формата можно использовать функцию http_build_query(). Показать пример или сами справитесь?

    P. S. Кстати, вы передаете неправильный заголовок: text/xml. Сам запрос у вас тоже неправильный, вы пытайтесь сделать POST-запрос в то время как передаете данные в виде GET-строки.
    Ответ написан
    Комментировать
  • Почему возникает ошибка Невозможно создать класс "PHPExel_Writer_Excel2016"?

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Все достаточно просто. PHP такой язык, что код в нем выполняется всякий раз, когда мы открывает страницу. Иными словами, для того чтобы выполнился код в некой условном файле test.php достаточно открыть его (скачать). На JavaScript для этого можно использовать fetch. Просто сделайте запрос по адресу вашего скрипта через fetch:
    https://learn.javascript.ru/fetch
    Ответ написан
    Комментировать
  • Как определить истинный IP пользователя с Opera VPN?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если в браузере включен WebRTC, то можно определить реальный IP-адрес через него. Также существуют системы аналитики, что следят за пользователями и могут не только определить IP-адрес, но и даже почту с телефоном.
    Ответ написан
    Комментировать
  • Как спарсить сайт через PHP с более 30 тыс. ссылками?

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

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

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Попробуйте мой вариант:
    // Функция для преобразования объекта
    // в строку формата x-www-form-urlencoded:
    
    function httpBuildQuery(object_to_convert) {
    	
    	var params = new URLSearchParams();
    	
    	var paramsGenerator = function(parent_key, iterate_object) {
    		
    		for (var current_key in iterate_object) {
    			
    			if (typeof iterate_object[current_key] == 'string' || typeof iterate_object[current_key] == 'number') {
    				
    				if (parent_key.length > 0) {
    					var property_path = parent_key + '[' + current_key + ']';
    				} else {
    					var property_path = current_key;
    				}
    				
    				params.append(property_path, iterate_object[current_key]);
    				
    			} else if (typeof iterate_object[current_key] == 'object') {
    				
    				if (parent_key.length > 0) {
    					var property_path = parent_key + '[' + current_key + ']';
    				} else {
    					var property_path = current_key;
    				}
    				
    				paramsGenerator(property_path, iterate_object[current_key]);
    				
    			}
    			
    		}
    		
    	}
    	
    	paramsGenerator('', object_to_convert);
    	
    	return params.toString();
    	
    }
    
    // Протестируем работу функции на примере:
    
    var test_object = {
    	'raz' : 'Первое свойство',
    	'dva' : 'Второе свойство',
    	'tri' : {
    		'test' : 'Тест',
    		'proverka' : 'Проверка',
    		'massiv' : [
    			'aaa',
    			'bbb',
    			'ccc',
    			{
    				'lalala' : 'lololo',
    				'tratata' : 'trototo'
    			},
    			123,
    			345,
    			567
    		]
    	}
    };
    
    var send_string = httpBuildQuery(test_object);
    
    var response = await (await fetch('/NewAdvert', {
    	method: 'POST',
    	headers: {
    		'Content-Type' : 'application/x-www-form-urlencoded'
    	},
    	body: send_string
    })).text();
    
    console.log(response);

    Вставьте это в консоли.
    Ответ написан
    Комментировать
  • Через что лучше отправлять форму обратной связи?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Если вы используйте CMS, просто найдите плагин обратной связи под него и не забивайте себе голову.
    Ответ написан
    Комментировать
  • Как отредактировать doc/docx на PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Docx файлы можно редактировать словно это обычный zip-архив.
    Распаковали, поменяли тексты где надо и запаковали все обратно.
    Ответ написан
    Комментировать
  • На чем исполнять несложный интернет-магазин?

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    <?php
    header('Content-Type: text/plain; charset=utf-8');
    $json = file_get_contents('Список вакансий.txt');
    echo json_encode(json_decode($json, true), JSON_PRETTY_PRINT);
    Ответ написан
    Комментировать