Recaptcha. Нужен скрипт php для интеграции recaptcha в существующую форму. Это может быть простой ответ - PullRequest
0 голосов
/ 21 января 2012

Я не настолько опытен в html и php, но мне удалось создать контактную форму и скрипт php для отправки писем на мою учетную запись hotmail, и она работала нормально.

Теперь я хотел добавить Recaptcha в эту форму, и я сделал это успешно. Но сейчас мне нужна помощь по следующим темам:

  • Я хочу, чтобы recpatcha работал с моей формой
  • когда recaptcha Неверно, я хочу сохранить информационные поля и не отправлять электронную почту также Не показывать "спасибо, что ваше сообщение было отправлено".
  • только когда recaptcha Правильно: отправьте электронное письмо, очистите информационные поля, покажите «спасибо сообщение было отправлено»

Извините, я забыл упомянуть, что этот сценарий находится на одной странице вызова "CONTACTFORM.PHP" И, кстати, это она.

Большое спасибо за ваши ответы! Если бы вы могли дать некоторые детали для ответа, было бы здорово !!!

здесь у меня есть мои коды:

Любая помощь будет очень признателен!

Это мой php для отправки моей электронной почты:

<?php
if ($_POST['parse_var'] == "form1"){

    $emailTitle = 'Email from my website!';
    $emailAddress = 'myemail@hotmail.com';

    /* Gathering Data Variables */

    $emailField = $_POST['email'];
    $phoneField = $_POST['phone'];
    $nameField = $_POST['name'];
    $subjectField = $_POST['subject'];
    $messageField = $_POST['message'];

    $body = <<<EOD
<br><hr><br>
Email: $emailField <br />
Phone: $phoneField <br />
Name: $nameField <br />
Subject: $subjectField <br />
Message: $messageField <br />
EOD;

    $headers = "From: $emailField\r\n";
    $headers .= "Content-type: text/html\r\n";
    $success = mail("$emailAddress", "$emailTitle", "$body", "$headers");

    $sent = "Thank you! Your message has been sent."; 
}
?> 

 <form id="form1" name="form1" method="post" action="contactform.php">
      <table width="100%" border="0" cellspacing="6" cellpadding="0">
        <tr>
          <td align="right"><label for="email" class="titulos">Email: </label></td>
          <td align="left"><input name="email" type="text" id="email" size="35" maxlength="50" /> 
            *</td>
        </tr>
        <tr>
          <td align="right"><label for="phone" class="titulos">Phone: </label></td>
          <td align="left"><input name="phone" type="text" id="phone" size="35" maxlength="50" /></td>
        </tr>
        <tr>
          <td align="right"><label for="name" class="titulos">Name:</label></td>
          <td align="left"><input name="name" type="text" id="name" size="35" maxlength="30" />
            *</td>
        </tr>
        <tr>
          <td align="right"><label for="subject" class="titulos">Subject:</label></td>
          <td align="left"><input name="subject" type="text" id="subject" size="35" maxlength="60" /></td>
        </tr>
        <tr>
          <td align="right" valign="top"><label for="message" class="titulos">Message:</label></td>
          <td align="left"><p>
            <textarea name="message" cols="27" rows="5" id="message"></textarea>
            *</p></td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td align="left">
<?php
if (isset($_POST['send'])) {
    require_once('recaptchalib.php');
    $privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

   if (!$resp->is_valid) {
      echo "Please try again";
   } else {
      echo "Correct"; 
   }
}
?>
<?php
    require_once('recaptchalib.php');
    $publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // you got this from the signup page
    echo recaptcha_get_html($publickey);
?>
</td>
        </tr>
        <tr>

          <td align="right"><label for="reset"></label></td>
          <td align="left"><label for="send"></label>
            <input type="hidden" name="parse_var" id="parse_var" value="form1" />

            <input name="send" type="submit" id="send" onclick="MM_validateForm('email','','RisEmail','name','','R','message','','R');return document.MM_returnValue" value="Send Email" /> <label for="reset"></label>
            <input type="reset" name="reset" id="reset" value="Reset form" /></td>
        </tr>
        <tr>
          <td align="right">&nbsp;</td>
          <td align="left" class="content">(*) Are Required fields</td>
        </tr>
        <tr>
          <td colspan="2" align="center"><?php print "$sent"; ?> 



         </td>
          </tr>
  </table>
</form>

1 Ответ

2 голосов
/ 21 января 2012

Прежде всего изучите PHP СЕССИИ

Вот ваш алгоритм:

  1. Показать свою форму с помощью recaptcha (form.php)
  2. Отправьте вашу форму на step2.php для проверки recaptcha, если это правильно, отправьте письмо. Если это не так, задайте для сеанса электронную почту, телефон, имя, тему и сообщение (например, $_SESSION["name"] = $_POST["name"];) (вы должны начать сеанс с session_start();, в верхней части step2.php) и перенаправить на страницу формы с помощью строка запроса. как это: form.php?error=r
  3. CHeck r строка запроса на form.php. Если есть, выведите ошибку Wrong Rechaptcha и установите для всех значений <input> по умолчанию значение $_SESSION значений. ($_SESSION["name"])

ЕСЛИ ВЫ ХОТИТЕ СДЕЛАТЬ С ОДНОЙ СТРАНИЦЕЙ (РЕКОМЕНДУЕТСЯ)

<?php
if ($_POST["submit"])  // If form submitted
{
// recaptcha control. If pass, record it to database, or send mail, or whatever you want.
}
?>
<form action="" method="POST">
<input value="<?php echo $_POST['name']; ?>" name="name" type="textbox">
<input type="submit" name="submit">
</form>
...