Форма обратной связи mailer.php возвращает пустую страницу

0

Форма контакта работала нормально, пока я не попытался добавить reCAPTCHA. Мне удалось создать reCAPTCHA, иметь recaptchalib и mailer.php, который является страницей, отображающей пустую страницу. Любые идеи, что я делаю неправильно?

Вот сообщение mailer.php

<?php 
if(isset($_POST['submit'])) {

    // check reCAPTCHA information
    require_once('recaptchalib.php');

    $privatekey = "privatekey";
    $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

    // if CAPTCHA is correctly entered!                        
    if ($resp->is_valid) {
        // great success!    
        $myemail = "[email protected]";

        /* Check all form inputs using check_input function */
        $name = $_POST['inputName'];
        $email = $_POST['inputEmail'];
        $subject = $_POST['inputSubject'];
        $message = $_POST['inputMessage'];

        /* Let prepare the message for the e-mail */

        $subject = "Message From LGBT campaign Contact Form";

        $message = "

        China LGBT Contact Form

        Name: $name
        Email: $email

        Message:
        $message

        ";

        /* Send the message using mail() function */
        mail($myemail, $subject, $message);

        /* Redirect visitor to the thank you page */
        header('Location: successPage.html#contact');

    } else {
       // alert the captcha is not correct

    }
}?>

Вот моя HTML-страница, которую я сделал.php-страницу

<div class="marketing">
<div class="intro" id="contact">
  <h1>Contact Us</h1>
  <p>If you would like to stay informed about our progress or would like to help with the campaign, please fill out this form to send us an email.</p>
  <div class="panel-body">
    <form name="contactform" id="contactform" action="mailer.php" class="form-horizontal" role="form"  method="POST">


      <div class="form-group">
        <label class="col-lg-2 control-label">Name</label>
        <div class="col-lg-10">
          <input type="text" class="form-control" name="inputName" placeholder="Your Name">
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-2 control-label">Email</label>
        <div class="col-lg-10">
          <input type="email" class="form-control" name="inputEmail" placeholder="Your Email">
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-2 control-label">Message</label>
        <div class="col-lg-10">
          <textarea class="form-control" rows="4" name="inputMessage" placeholder="Your message..."></textarea>
        </div>
      </div>

      <div class="form-group">
        <div class="col-lg-10 col-lg-offset-2">
        <p>Prove you are not a spambot</p>
        <?php require_once('recaptchalib.php');
            $publickey = "publickey";
            echo recaptcha_get_html($publickey);
          ?>

    </div>
  </div>

      <div class="form-group">
        <div class="col-lg-offset-2 col-lg-10">
          <button type="submit" class="btn btn-primary">Send Message</button>
        </div>
      </div>
    </form>
  </div>
</div>

Любая помощь с этим была бы чрезвычайно оценена парнями.

Огромное спасибо

РЕШЕНИЕ

<form name="contactform" id="contactform" action="mailer.php" class="form-horizontal" role="form"  method="post">


      <div class="form-group">
        <label class="col-lg-2 control-label">Name</label>
        <div class="col-lg-10">
          <input type="text" class="form-control" name="inputName" placeholder="Your Name">
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-2 control-label">Email</label>
        <div class="col-lg-10">
          <input type="email" class="form-control" name="inputEmail" placeholder="Your Email">
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-2 control-label">Message</label>
        <div class="col-lg-10">
          <textarea class="form-control" rows="4" name="inputMessage" placeholder="Your message..."></textarea>
        </div>
      </div>

      <div class="form-group">
        <div class="col-lg-10 col-lg-offset-2">
        <p>Prove you are not a spambot</p>
        <?php require_once('recaptchalib.php');
            $publickey = "6Le0ff0SAAAAAOCeQiOcGUwQEfXERDyNJ";
            echo recaptcha_get_html($publickey);
          ?>

    </div>
  </div>

      <div class="form-group">
        <div class="col-lg-offset-2 col-lg-10">
          <input type="submit" class="btn btn-primary" value="Send Message" name="submit">
        </div>
      </div>
    </form>

<?php 

 error_reporting(E_ALL);
 ini_set('display_errors', 1);

if(isset($_POST['submit'])) {

    // check reCAPTCHA information
    require_once('recaptchalib.php');

    $privatekey = "6Le0ff0SAAAALTDn4IkqNSN5F0AU2Ezhvf";
    $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

    // if CAPTCHA is correctly entered!                        
    if ($resp->is_valid) {
        // great success!    
        $myemail = "[email protected]";


        /* Check all form inputs using check_input function */
        $name = $_POST['inputName'];
        $email = $_POST['inputEmail'];
        $subject = "Message From LGBT campaign Contact Form";
        $message = $_POST['inputMessage'];
        $headers = 'From: [email protected]' . "\r\n" .
        'Reply-To: [email protected]' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

        /* Let prepare the message for the e-mail */

        $message = "

        China LGBT Contact Form

        Name: $name
        Email: $email

        Message:
        $message

        ";

        /* Send the message using mail() function */
        mail($myemail, $subject, $message);

        /* Redirect visitor to the thank you page */
        header('Location: successPage.html#contact');

    } else {

       // alert the captcha is not correct
      echo "captcha did not match!";
      exit;

    }
}?>
Теги:
recaptcha
contact-form

3 ответа

1
Лучший ответ

Измените свою кнопку так:

<input type="submit" class="btn btn-primary" value="Send Message" name="submit">

POST ищет именованный атрибут submit.

который основан на вашем условном утверждении, и из него ничего не будет выполнено из-за этого:

if(isset($_POST['submit'])) {...}

У вас также нет элемента с именованной формой, чтобы перейти с $subject = $_POST['inputSubject'];

Либо добавьте один:

Subject:<input type="text" class="form-control" name="inputSubject" placeholder="Subject">

или просто проверить:

$subject = "Form submitted";

Вы должны убедиться, что все поля заполнены. Если предмет оставлен пустым или любым другим, из-за него вы не можете получать почту, особенно поле "Электронная почта".

Другая причина может заключаться в том, что у вас нет соответствующих заголовков, в том числе From:

Посетите веб-сайт PHP.net по почте:

Пример From: заголовок с веб-сайта:

$headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

и изменение mail($myemail, $subject, $message);
на mail($myemail, $subject, $message, $headers);

Цитируя их:

Заметка:

При отправке почты почта должна содержать заголовок From. Это можно задать с помощью параметра дополнительные_headers, или по умолчанию можно установить в php.ini.

В противном случае появится сообщение об ошибке, подобное предупреждению: mail(): "sendmail_from", не установленному в php.ini или пользовательском заголовке "From:". В заголовке From также указывается Return-Path под Windows.


Добавьте отчет об ошибках в начало файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

Sidenote: Сообщение об ошибках должно выполняться только в стадии постановки и никогда не выпускаться.

  • 0
    Позвольте мне дать этому шанс! :)
  • 0
    @KenRyan Хорошо. Тем не менее, перезагрузите мой ответ, я добавил дополнительную и важную информацию в отношении From: и дополнительную информацию заголовка.
Показать ещё 8 комментариев
0

Вы можете начать с изменения

<button type="submit" class="btn btn-primary">Send Message</button>

в

<input type="submit" class="btn btn-primary" value="submit">

Это должно отправить форму на mailer.php. С этого момента он должен работать.

0

Если вы получаете пустую страницу, это потому, что что-то не работает и не отображается ошибка. Я бы начал, убедившись, что отчет об ошибках включен в вашем скрипте PHP. Добавьте это в начало mailer.php.

ini_set('display_errors',1); 
error_reporting(E_ALL);

Вам также нужно добавить какое-то сообщение.

} else {

    // alert the captcha is not correct
    echo "captcha did not match!";
    exit;

}

Также, как уже упоминалось, проверьте журнал ошибок.

  • 0
    Я добавил строку, которую вы упомянули, а также содержание в выражении else. Это все еще не будет работать все же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню