Как подключить ввод информации в WordPress и отправить её с помощью PHP на VDS?

Вопрос или проблема

Как подключить ввод информации в WordPress и отправку через PHP на VPS (сам сайт находится на хостинге)? Со вторым вариантом все понятно (вставлено через сниппет):

$remote_ip = 'что-то';
$remote_port = что-то;

// Создаем TCP-сокет
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// Подключаемся к удаленному серверу
if (socket_connect($socket, $remote_ip, $remote_port)) {
// Данные для отправки
$message = "Привет, это сообщение от PHP!";

// Отправляем сообщение
socket_write($socket, $message, strlen($message));

// Закрываем сокет
socket_close($socket);
} else {
echo "Не удалось подключиться к удаленному серверу.";
}

Но как подключить ввод данных (я пробовал через Contact Form 7), не знаю. Это должно выглядеть примерно так (то есть вы вводите информацию, нажимаете отправить, и она отправляется с помощью PHP)
введите описание изображения здесь

Ответ или решение

Для того чтобы подключить ввод информации в WordPress и отправить ее через PHP на VPS с использованием сокетов, следует выполнить несколько шагов. Я постараюсь объяснить каждую часть подробно.

Шаг 1: Установка плагина для создания формы

Если вы используете Contact Form 7, убедитесь, что у вас этот плагин установлен и активирован. Создайте новую форму и добавьте необходимые поля. Например:

<label>Ваше имя
    [text* your-name]
</label>

<label>Ваш email
    [email* your-email]
</label>

[submit "Отправить"]

Шаг 2: Обработка данных формы

После создания формы вам нужно будет обработать её данные. Для этого будет удобно использовать хук wpcf7_before_send_mail. Вы можете добавить следующий код в файл functions.php вашей темы или в созданный вами плагин:

add_action('wpcf7_before_send_mail', 'send_data_to_vps');

function send_data_to_vps($contact_form) {
    // Получаем данные из формы
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();

        $remote_ip = 'ваш_ip_адрес'; // Замените на IP адрес вашего VPS
        $remote_port = ваш_порт;       // Замените на необходимый порт

        // Создаем TCP сокет
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

        // Подключаемся к удаленному серверу
        if (socket_connect($socket, $remote_ip, $remote_port)) {
            // Формируем сообщение из данных формы
            $message = "Имя: " . $data['your-name'] . "\n" . "Email: " . $data['your-email'];

            // Отправляем сообщение
            socket_write($socket, $message, strlen($message));

            // Закрываем сокет
            socket_close($socket);
        } else {
            error_log("Не удалось подключиться к удаленному серверу.");
        }
    }
}

Шаг 3: Проверка соединения на VPS

Убедитесь, что на вашем VPS настроен соответствующий сервер для получения сообщений. Вам может понадобиться настройка простого TCP-сервера на стороне VPS, чтобы правильно обрабатывать входящие соединения и данные.

Пример простого PHP-сервера для вашей VPS может выглядеть так:

<?php
$address = '0.0.0.0'; // Или ваш конкретный IP
$port = ваш_порт;  // Замените на ваш порт

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($sock, $address, $port);
socket_listen($sock);

while (true) {
    $client = socket_accept($sock);
    $input = socket_read($client, 1024);
    echo "Полученные данные: " . $input . "\n"; // Обработка входящих данных
    socket_close($client);
}

socket_close($sock);
?>

Заключение

Теперь, когда пользователь заполняет форму и нажимает «Отправить», данные будут переданы через сокет на ваш VPS. Не забудьте убедиться, что брандмауэр вашего VPS позволяет входящие соединения на указанный порт.

Пожалуйста, убедитесь, что вы проверили все данные на корректность и безопасность, особенно при работе с пользовательскими данными, чтобы избежать SQL-инъекций и других возможных проблем безопасности.

Оцените материал
Добавить комментарий

Капча загружается...