2011-10-25 5 views
0

Мне нужно немного помочь с перерисованием формы.Повторное отображение формы с полями, заполненными

В принципе, в настоящее время пользователь заполнит мою контактную форму, форма и ее содержимое передаются на мою страницу проверки, и если recaptcha был введен правильно, она переходит на страницу «Спасибо».

Когда recaptcha введено НЕПРАВИЛЬНО, я хочу повторно отобразить форму контакта с уже заполненными полями. Как мне это сделать? (Как вы увидите ниже, в настоящее время он перешел на Google неверный captcha)

Вот мой проверочный код. Любая помощь будет большим:

<?php require('sbsquared.class.php'); ?> 
<?php 
    require_once('recaptchalib.php'); 
    $privatekey = "myprivatekey"; 
    $resp = recaptcha_check_answer ($privatekey, 
           $_SERVER["REMOTE_ADDR"], 
           $_POST["recaptcha_challenge_field"], 
           $_POST["recaptcha_response_field"]); 

    if (!$resp->is_valid) { 
    // What happens when the CAPTCHA was entered incorrectly 
    header("Location: http://www.google.com"); <--- this is the bit that I want to redisplay the form with fields already filled out. 
    } else { 

    $sb = New SBSquared; 

    $name = $_POST['FullName']; 
    $post_keys = array_keys($_POST); 
    $my_db_string = "<table>"; 
    $ip_address = $_SERVER['REMOTE_ADDR']; 
    foreach($post_keys as $field) 
    { 
     if($_POST[$field] != "" && $field != "submit_y" && $field != "submit_x" && $field != "submit_x") 
     { 

      $my_db_string .= "<tr><td><b>".$field.":</b></td><td>"; 
      if($field == "Email") 
      { 
       $my_db_string .= '<a href = "mailto:'.$_POST['Email'].'">'.$_POST['Email'].'</a>'; 
      } 
      else 
      { 
       $my_db_string .= $_POST[$field]; 
      } 

      $my_db_string .= "</td></tr>"; 

     } 
    } 

    $my_db_string .= "<tr><td><b>IP ADDRESS LOGGED: </b></td><td>".$ip_address."</td></tr>"; 

    $my_db_string .= "</table>"; 

    if(get_magic_quotes_gpc() != 1) 
    { 
     $my_db_string = addslashes($my_db_string); 
     $name = addslashes($name); 
    } 

    $conn = $sb->openConnection(); 
    $dts = time(); 
    $sql = "INSERT INTO `contact_queries` VALUES ('', '$name', '$my_db_string', 'n/a', 0, $dts)"; 
    $result = mysql_query($sql, $conn) or die(mysql_error()); 

$content = '<div id="main_middle">'; 

$content .= '<span class="title">'.$sb->dt('Contact').'</span> 
<p>'.$sb->dt('Thank you for your enquiry. We will contact you shortly.').'</p> 


</div>'; 

// admin auto email. 
     $dts = date("d.m.y h:ia", time()); 
     $admin_content = "New contact query at $dts"; 
     $admin_content .= "\n\n--\n\n \r\n\r\n"; 
     mail("email address", 'NOTIFICATION: new query', $admin_content, 'From: email address'); 
     $FILE=fopen("./log/auto-contact.txt","a"); 
     fwrite($FILE, $admin_content); 
     fclose($FILE); 

echo pageHeader($sb); 
echo pageContent($sb, $content); 
echo pageFooter($sb); 
    } 
?> 

ответ

0

Вы, наверное, уже ответил на этот вопрос для себя, но если вы не можете установить ReCaptcha для проверки перед отправкой формы, так же, как проверки HTML5. Он просто не позволит пользователю отправлять до тех пор, пока Captcha не будет прав. Теперь я не знаю, обновит ли он капчу, если это неверно, но большую часть времени я вижу, как люди помещают его в iFrame, поэтому он не обновляет страницу при обновлении кода.

В качестве альтернативы вы можете использовать сеансы для хранения данных.

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

  • Нет связанных вопросов^_^