Файл Form.php не отправляется через введенные данные - PullRequest
0 голосов
/ 14 мая 2018

Я работал над формой в php-файле.Как вы увидите из приведенного ниже кода, я написал все в файле PHP, включая тег формы.Этот файл form.php вызывается из другого источника в моей папке с именем contact.php.Я признаю, что это самый аккуратный написанный код.Но по какой-то причине, когда я отправляю свою информацию в этой форме, она говорит мне, что форма была отправлена.Тем не менее, я не получаю электронное письмо ($ email_to) на мой адрес электронной почты billy.farroll@hotmail с какой-либо предоставленной информацией.Это также работает с Google recaptcha, и если есть что-то недействительное введено.Просто по какой-то причине он не будет отправлять мне данные, например, имя, адрес электронной почты, контактный номер или запрос.

Помощь будет принята с благодарностью.

Мой встроенный стиль CSS:

    <style>
    form span{
    color: red;
      }
    form input[type="submit"]{
    background: url('images/logo2.png') no-repeat;
    background-size: contain;
    overflow: visible;
    padding-left: 45px;
    height: 20px;
    border: 0px;
    margin: 0 auto;
    margin-top: 5px;
    font-family: 'Orbitron', sans-serif;
    text-transform: uppercase;
      }
    .g-recaptcha {
    margin: 5px;
      }
   </style>

Мой PHP

    <?php
    if(strpos($_SERVER['REQUEST_URI'], 'form' )!== false){
    header('Location:index.php');
    }
    if($_POST){
    $email;
    $name;
    $captcha;
    $telephone;
    $question;
    if(isset($_POST['email']))
      $email=$_POST['email'];
    if(isset($_POST['name']))
      $name=$_POST['name'];
    if(isset($_POST['telephone']))
      $telephone=$_POST['telephone'];
    if(isset($_POST['message']))
      $question=$_POST['message'];
    if(isset($_POST['g-recaptcha-response']))
      $captcha=$_POST['g-recaptcha-response'];


    $email = htmlspecialchars($_POST['email']);
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || ($name == "") || 
    ($question == "") ||(!$captcha))
    {
      echo "<p>Invalid Input.</p>";
      ?>
      <form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> 
      method="post" style="text-align:left;">
        <label>Name: <span>*</span></label><input name="name" type="text" />
        <label>Email: <span>*</span></label><input name="email" type="text" />
        <label>Contact Number: </label><input name="telephone" type="text" />
        <label>Enquiry: <span>*</span></label>
        <textarea name="message" rows="10" cols="30"></textarea>
        <div class="g-recaptcha" data-sitekey="<!-- SITEKEY -->"></div>
        <input type="submit" value="submit" />
       </form>
       <?php
       } else {



  $response=json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=<!-- SECRET KEY -->=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']), true);
    if($response['success'] == false)
    {
      echo '<h2>Spam detected</h2>';
    }

    else   {



  $email_from = $_POST["email"];
  $email_to = "billy.farroll@hotmail.com";
  $question = $_POST["message"];
  $email_subject = "Enquiry";
  $headers =
  "From: $email_from \n";
  "Reply-To: $email_from \n";
  $message =
  "Name: ". $name .
  "\r\nMobile Number: " . $telephone .
  "\r\nEmail Address: " . $email .
  "\r\n\r\n\r\n" .
  "\r\n\r\nMessage: \r\n" . $question;
  ini_set("sendmail_from", $email_from);
  $sent = mail($email_to, $email_subject, $message, $headers, "-f" .$email);
  if ($sent)
  {
    echo 'Thank you for your enquiry, one of our team will be in contact with you shortly.';
  }

    }
}

} else {
  ?>
  <form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post" style="text-align:left;">
    <label>Name: <span>*</span></label><input name="name" type="text" />
    <label>Email: <span>*</span></label><input name="email" type="text" />
    <label>Contact Number: </label><input name="telephone" type="text" />
    <label>Enquiry: <span>*</span></label>
    <textarea name="message" rows="10" cols="30"></textarea>
    <div class="g-recaptcha" data-sitekey="<!-- SITEKEY -->"></div>
    <input type="submit" value="submit" /><span> * required fields</span>
  </form>


  <?php } ?>

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Я обнаружил, в чем проблема, после разговора с провайдером, который сказал мне, что были небольшие изменения в авторизации сервера.При этом адрес электронной почты, который отправляет информацию, должен быть проверен на сервере, т. Е. $ Email_from = "billy.farroll@hotmail.com" - должен быть проверенным адресом электронной почты, чтобы у него было разрешение на отправку данных черезкуда бы вы хотели, чтобы оно было отправлено, например: $ email_to = "billy.farroll@hotmail.com". Кроме того, в переменной $ sent переменная $ email должна была измениться на $ email_from (из-за ситуации с авторизацией).См. Код ниже, теперь успешно работает:

СТАРЫЙ КОД:

 $email_from = $_POST["email"];
  $email_to = "billy.farroll@hotmail.com";
  $question = $_POST["message"];
  $email_subject = "Enquiry";
  $headers =
  "From: $email_from \n";
  "Reply-To: $email_from \n";
  $message =
  "Name: ". $name .
  "\r\nMobile Number: " . $telephone .
  "\r\nEmail Address: " . $email .
  "\r\n\r\n\r\n" .
  "\r\n\r\nMessage: \r\n" . $question;
  ini_set("sendmail_from", $email_from);
  $sent = mail($email_to, $email_subject, $message, $headers, "-f" .$email);
  if ($sent)

НОВЫЙ КОД:

$email_from = "billy.farroll@hotmail.com"; // This email address has to be the same email on the server if using Fasthots server i.e. strawberry server - billy@strawberrymarketing.com - SENDS THE EMAIL
  $email_to = "billy.farroll@hotmail.com"; // Where the email is being sent to
  $question = $_POST["message"];
  $email_subject = "Enquiry";
  $headers =
  "From: $email \n"; // This is what's shown in the receiving message mail the email variable is essential here because it's whats entered by user
  "Reply-To: $email \n";  // This is what's shown in the receiving message mail the email variable is essential here because it's whats entered by user
  $message =
  "Name: ". $name .
  "\r\nMobile Number: " . $telephone .
  "\r\nEmail Address: " . $email .
  "\r\n\r\n\r\n" .
  "\r\n\r\nMessage: \r\n" . $question;
  ini_set("sendmail_from", $email_from);
  $sent = mail($email_to, $email_subject, $message, $headers, "-f" .$email_from);
  if ($sent)   
0 голосов
/ 14 мая 2018

Ваша проблема, скорее всего, в <form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post" style="text-align:left;">

вы можете:

  1. полностью удалить действие

  2. по крайней мере, окружите <?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> двойными кавычками ""

  3. используйте action=""

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...