Повторное отображение формы с заполненными полями - PullRequest
0 голосов
/ 25 октября 2011

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

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

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

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

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

1 Ответ

0 голосов
/ 18 мая 2012

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

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

...