2015-03-04 6 views
1

ВАЖНЫЙ РЕДАКТ: Я уже редактировал мой вопрос, чтобы быть более конкретным.Как отправить данные формы на другую страницу?

Что я хочу делать, когда пользователь отправляет мою форму тяжести, данные отправляются на другую платформу Wordpress, где также форма с теми же полями. Данные должны быть введены и отправлены автоматически, и пользователь должен быть перенаправлен на страницу «Спасибо». Я читал о cURL и GF Web API, но у меня их нет. Я сделал gform_after_submission КРЮК, где у меня есть этот код

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 и отправьте эту другую форму, где я пытаюсь отправить свои данные.

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

Заранее благодарен!

ответ

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'); 
} 

Надежда, что помогает

Dan

+0

Так что я должен поместить свой код cURL в эту функцию process_form? – student

+0

Да, если вы хотите отправить данные на внешний сайт, тогда вы должны поместить его в функцию формы процесса, но вы должны знать, что Wordpress имеет вспомогательные функции для завитки, поэтому вам не нужно делать это длинным способом. проверьте http://codex.wordpress.org/HTTP_API – danbahrami

+0

Знаете ли вы, почему моя кнопка отправки ничего не делает? – student

Смежные вопросы