Ответы пользователя по тегу PHP
  • Как увеличить длину заголовков в nginx?

    zkrvndm
    @zkrvndm Автор вопроса
    Архитектор решений
    Всем спасибо за внимание, я не правильно диагностировал проблему. Оказалось, что у меня nginx падал не потому, что я много GET-параметров засылал, а из-за того, что я в своем php-скрипте слишком большие заголовки возвращал. В общем, оказывается это плохая идея передавать слишком много информации в заголовках.
    Ответ написан
    Комментировать
  • Возможно ли реализовать экспорт текста из WhatsApp в VK?

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

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

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Отправку данных делаете так:
    spoiler
    // Ждем когда элементы на странице прогрузятся:
    
    document.addEventListener('DOMContentLoaded', function() {
    
    	// Вешаем на кпопку обработчик клика, чтобы при каждом клике
    	// сразу запускалась функц я dataSend отвечающая за отправку данных:
    	
    	document.querySelector('.button').addEventListener('click', dataSend);
    	
    });
    
    // Функция для отправки данных на сервер:
    
    async function dataSend() {
    
    	// Получаем данные с нужных нам полей в переменные:
    	
    	var loginValue = document.querySelector('.login').value
    	var emailValue = document.querySelector('.email').value
    	var passwordValue = document.querySelector('.password').value
    	var conf_passwordValue = document.querySelector('.conf_password').value
    
    	// Создаем объект с данными:
    
    	var data = {
    		'login': loginValue,
    		'email': emailValue,
    		'password': passwordValue,
    		'conf_password': conf_passwordValue
    	}
    
    	// Конвертируем объект в JSON:
    
    	var json = JSON.stringify(data);
    
    	// Отправялеям полученный JSON на сервер обычным POST-запросом:
    
    	var response = await (await fetch('https://yousite.ru/handler.php', {
    		'method': 'POST',
    		'headers': {
    			'Content-Type': 'application/json; charset=utf-8'
    		},
    		'body': json
    	})).text();
    
    	// Выводим ответ сервера в консоли:
    
    	console.log('Ответ сервера:');
    	console.log(response);
    
    }

    Замените только ссылку на php-обработчик на свой. Далее, принимать данные отправленные, как JSON надо по другому. Пример получения данных отправленных, как JSON:
    spoiler
    <?php
    
    // Включим показ ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Считываем полученный JSON:
    
    $json = file_get_contents('php://input');
    
    // Раскодируем JSON в массив:
    
    $array = json_decode($json, true);
    
    // Выведем массив, чтобы посмотиеть, что в нем:
    
    header('Content-Type: text/plain; charset=UTF-8'); // Указыавем браузеру, что ответ будет обычным текстом
    echo "Из браузера получены следующие данные:\n"; // Выведем текст-предупреждение
    print_r($array); // Выведем все, что находится в массиве
    Ответ написан
    7 комментариев
  • Как правильно передать переменную через ajax?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Метод GET предполагает передачу данных в адресной строке. Например, при открытии такой ссылки:
    https://yousite.ru/include/ajax.php?per1=test&per2=test

    Ваш PHP обработчик получит это данные, как $_GET['per1'] и $_GET['per2']

    Думаю очевидно, что метод GET может передавать только текст? И при этом размер текста сильно ограничен, так как ссылки физически не могут быть больше 2048 символов.

    Если вы хотите отправлять файл именно методом GET, вам нужно файл конвертировать в base64-текст и уже этот текст отправлять, но не как переменную, а непосредственно в теле запроса, при этом контент-тип запроса должен быть plain/text - в теле запроса уже не будет ограничений на объем передаваемой информации.

    Однако, не проще ли будет отправлять файл POST-ом, почему вы от него отказались?
    Ответ написан
    Комментировать
  • Ajax как передать файл из input type=file и принять в php?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Отправляйте саму форму, а не сериализованные данные. Пример:
    $(document).on('submit', '#form-job-modal-wrapper', function (e) {
            $.ajax({
                type: 'POST',
                url: 'action_ajax_form.php',
                data: new FormData(this),
                success: (data) => {
                    $('#jobModal').html(data);
                    $( window ).resize();
                }
            });
    
            e.preventDefault();
    });
    Ответ написан
    Комментировать
  • Как из формы вытянуть объект?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Внутрь form.append() нельзя вторым параметром передать объект: можно передавать только строку или только файл, но не объект! Для отправки объектов на сервер вам нужно использовать JSON. И кстати, в вашем примере не хватает кода отвечающего за отправку формы.
    Ответ написан
    Комментировать
  • Как обезопасить файл от прямого доступа?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Установите пароль, чтобы доступ был только если совершен POST-запрос с паролем.
    Ответ написан
  • Как в 1 файл php из js передать несколько массивов с помощью AJAX?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Это все делается достаточно просто. Ниже пример отправки данных при помощи jQuery.ajax()
    async function sendInfo() {
    
    	let arr1 = [1, 2, 3, 4, 5];
    	let arr2 = ['a', 'b', 'c', 'd', 'e'];
    
    	var response = await $.ajax({
    		url: 'test.php',
    		method: 'POST',
    		cache: false,
    		data: {
    			'arr1': arr1,
    			'arr2': arr2
    		}
    	});
    
    	console.log('Данные успешно отправлены, ответ сервера: ' + response);
    	
    	return response;
    
    }

    Просто вызовите функцию sendInfo() и увидите результат запроса в консоли.

    Должен предупредить, что для работы функции jQuery.ajax() у вас обязательно должна быть подключена библиотека jQuery, для этого добавьте перед закрывающим тегом </head> на своем сайте следующий скрипт:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>


    P. S. На стороне PHP скрипта вам надо смотреть переменные $_POST['arr1'] и $_POST['arr2'] - именно там будут лежать отправленные вами данные.
    Ответ написан
    Комментировать
  • Как запретить доступ юзеру к ajax?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Запретить нельзя, но можно зашифровать скрипт в base64 и тогда совсем не очевидно будет, что там в скрипте что-то важное и это надо расшифровывать. Кончено, всегда можно посмотреть запросы во вкладке Network консоли браузера, но это не все умеют и не многие догадаются, рядовой юзер так точно ничего не поймёт.
    Ответ написан
  • Почему не передается переменная через ajax?

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

    Пример отправки чистого текста:
    $('#button').click(async function() {
    	
    	var txt = 'Привет, мир!';
    	
    	var response = await $.ajax({
    		url: 'test.php',
    		type: 'POST',
    		contentType: 'text/plain; charset=UTF-8',
    		data: txt
    	});
    	
    	$('p.out').html(response);
    	
    });


    На сервере принимайте и выводите полученный текст так:
    <?php
    
    // Включаем отображение ошибок:
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Указываем браузеру, что ответ сервера
    // является обычным текстом в кодир. UTF-8:
    header('Content-Type: text/plain; charset=UTF-8');
    
    // Записываем в переменную то,
    // что отправил нам браузер по AJAX:
    $received = file_get_contents('php://input');
    
    // Выводим полученный текст (отдаем его в браузер):
    echo 'Из фронта (браузера) был получен следующий текст: ' . $received;
    Ответ написан
    Комментировать
  • Можно ли написать универсальный обработчик формы ajax+php?

    zkrvndm
    @zkrvndm
    Архитектор решений
    На стороне php обработчика берете массив $_POST и обходите его при помощи foreach. Внутри цикла уже формируйте письмо-уведомление с теми полями, которые пришли из вашей формы.
    Ответ написан
  • Как осуществить парсинг следующих данных?

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

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

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

    zkrvndm
    @zkrvndm
    Архитектор решений
    Разумеется фильтрация нужна:
    https://wp-kama.ru/id_6643/proverka-vhodyashhih-is...

    Однако если вам лень делать фильтрацию и валидацию, можете использовать готовые API для отправки писем:
    https://www.emailjs.com
    Только не удивляйтесь, если боты потом за день обнулят ваш баланс и лимиты на отправку писем)
    Ответ написан
    Комментировать
  • Как начать создавать интернет-магазин на PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Начните с создания php-роутера.
    Ответ написан
    Комментировать
  • Как сохранить содержимое HTML формы в txt файл на серверной стороне?

    zkrvndm
    @zkrvndm
    Архитектор решений
    А в чем собственно проблема? Преобразуйте полученную форму в JSON и спокойно себе сохраняйте в текстовый файл.
    <?php
    
    $json = json_encode($_POST);
    $size = file_put_contents('form.txt', $json);
    echo 'Сохранено '.$size.' байт текста';
    Ответ написан
    3 комментария
  • Как разобрать запись из базы данных записанную как массив?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Такой формат представления данных называется JSON, большинство языков программирования из под коробки умеют работать с JSON. В случае с языком php нужно использовать функцию json_decode()
    Ответ написан
    Комментировать