Как разместить данные формы на другой странице?

ВАЖНОЕ РЕДАКТИРОВАНИЕ: теперь я отредактировал свой вопрос, чтобы он был более конкретным.

то, что я хочу сделать, - это когда пользователь отправляет мою форму гравитации, данные отправляются на другую платформу wordpress, где также есть форма с теми же полями. Данные должны вводиться и отправляться автоматически, а пользователь должен быть перенаправлен на страницу с благодарностью. Я читал о cURL и GF Web API, но у меня нет их для работы. Я сделал gform_after_submission HOOK, где у меня есть этот код

add_action("gform_after_submission_7", "after_submission");
function after_submission($entry, $form){
//All the code that processes your form goes here 
$curl_handle = curl_init();
$body = array(
    'info' => rgar ( $entry, '5' ), 
    'name' => rgar ( $entry, '25' ), 
    'email' => rgar ( $entry, '2' ),
    'submit' => 'true',
    );
$data ='"info='.$body['info'].'&nimi='.$body["nimi"].'&email='.$body["email"].'"'; 

$url = "http://www.monica.ee/reisile/dev/kontakt";

curl_setopt ($curl_handle, CURLOPT_URL,$url);

curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data);

curl_setopt( $curl_handle, CURLOPT_SSL_VERIFYPEER, false );  //so we can post to https  

$result = curl_exec ($curl_handle);

curl_close ($curl_handle); 
//then once you have processed the form you can redirect to a success page
}

Страница, на которой должны быть данные формы POST, имеет эти строки

jQuery(document).ready(function() {
        if ($("#input_9_1").length) {
            console.log("<?php echo $_GET['nimi']; ?>");
        $('#input_9_1').val("<?php echo $_POST['info']; ?>");
        $('#input_9_2').val("<?php echo $_GET['nimi']; ?>");
        $('#input_9_3').val("<?php echo $_POST['email']; ?>");
        //$('#input_9_4').val(<?php echo $_POST["mobiil"]; ?>);
        }
        <?php
        if (isset($_POST['submit'])) {
            echo "$('#gform_submit_button_9').click();";
        }
        ?>
});

Но прямо сейчас, когда пользователь отправляет мою форму, он автоматически перенаправляется на страницу с благодарностью, и, похоже, он не отправляет POST и не отправляет эту другую форму, куда я пытаюсь отправить свои данные.

Может ли кто-нибудь помочь мне с этим, я пытаюсь решить эту проблему весь день, и это все еще не работает. Я могу сделать это совершенно неправильно, но, может быть, кто-то сможет мне с этим помочь.

Заранее спасибо!


person student    schedule 04.03.2015    source источник


Ответы (1)


Вы можете включить весь код проверки и обработки формы вверху страницы, содержащей вашу форму. Затем, если проверка и обработка успешны, перенаправьте пользователя на страницу успеха. Итак, ваша форма может выглядеть так ...

<?php

//Check if the form has been submitted
if( isset( $_POST['submit'] ) ) {
    //Validate form
    $validation = validate_form($_POST);

    //If validation is successful process Form
    if( $validation['success'] == true ) {
        process_form($_POST);
    }

    //If validation has failed then output error message
    else {
        echo '<p class="error" id="validation-failed">' . $validation['error_message'] . '</p>';
    }
}

?>

<form id="kontaktvorm" method="post" action="">
    <div class="tekstikast">
        <textarea class="kontaktivorm medium" tabindex="1" rows="10" cols="50" tabindex="1" name="info">Sinu sõnum ...</textarea>
    </div>
    <div class="nimekast">
        <input class="kontaktivorm poolikkast" type="text" tabindex="2" value="Nimi" name="nimi" />
    </div>
    <div class="epostikast">
        <input class="kontaktivorm poolikkast" tabindex="3" type="text" value="E-post" name="email" />
    </div>
    <div class="nupukast">
        <input type="submit" class="gform_image_button" tabindex="5" name="submit" />
    </div>
</form>

А затем в свой файл функций вы можете включить две функции, которые проверяют и обрабатывают вашу форму ...

/**
 * validates your form
 * @param  array $data the post data from the page
 * @return array
 */
function validate_form( $data ) {
    //Build our output array
    $output = array(
        'success' => true,
        'error_message' => null
    );

    //validate your fields... for example
    if( !$data['email'] || !is_email($data['email']) ) {
        $output['success'] = false;
        $output['error_message'] = 'Please enter a valid email address';
    }

    return $output;

} 

/**
 * processes your form data
 * @param  array $data the post data from the page
 */
function process_form($data) {
    //All the code that processes your form goes here 
    //then once you have processed the form you can redirect to a success page
    wp_redirect( home_url() . '/success' );
}

надеюсь, это поможет

Дэн

person danbahrami    schedule 04.03.2015
comment
Итак, я должен поместить свой код cURL в эту функцию process_form? - person student; 04.03.2015
comment
Да, если вы хотите отправить данные на внешний сайт, вы должны поместить их в функцию формы процесса, однако вы должны знать, что Wordpress имеет вспомогательные функции для curl, поэтому вам не нужно делать это долгим путем. ознакомьтесь с codex.wordpress.org/HTTP_API - person danbahrami; 04.03.2015
comment
Вы знаете, почему моя кнопка отправки ничего не делает? - person student; 04.03.2015
comment
Я обновил свой код, чтобы оставить действие формы пустым, чтобы оно публиковалось на той же странице. Попробуй это. если он по-прежнему ничего не делает, не могли бы вы проверить инструменты разработчика и включить в свой вопрос выведенный код вашей формы? - person danbahrami; 04.03.2015
comment
По-прежнему не работает, при нажатии кнопки ничего не происходит. Отредактированный вопрос - person student; 04.03.2015
comment
@danbrahimi Но знаете ли вы, правильный ли cURL? Если это правильно, то верен ли у меня код моей целевой страницы, на которую должны быть отправлены и автоматически отправлены все данные? - person student; 04.03.2015