Форма отправки в формате HTML не передает данные на соответствующую страницу - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь добавить шаблон контактной формы на сайт, но не могу получить настраиваемую HTML-форму для отправки. При отправке появляется сообщение «Форма отправки отправлена», но электронное письмо не получено. Страницы, на которые передаются данные, если работают независимо, но не из формы, есть идеи?

<form id="form" method="post" action="contactengine.php">
<div class="success_wrapper">
    <div class="success-message">Contact form submitted</div>
    </div>
        <label class="name">
            <input type="text" name="Name" id="Name" placeholder="Name:" data-constraints="@Required @JustLetters" />
            <span class="empty-message">*This field is required.</span>
            <span class="error-message">*This is not a valid name.</span>
        </label>
        <label class="email">
            <input type="text" name="Email" id="Email" placeholder="E-mail:" data-constraints="@Required @Email" />
            <span class="empty-message">*This field is required.</span>
            <span class="error-message">*This is not a valid email.</span>
        </label>
        <label class="phone">
            <input type="text" name="Contact" id="Contact" placeholder="Phone:" data-constraints="@Required @JustNumbers"/>
        <span class="empty-message">*This field is required.</span>
        <span class="error-message">*This is not a valid phone.</span>
        </label>
        <label class="message">
            <textarea name="Message" id="Message" placeholder="Message:" data-constraints='@Required @Length(min=20,max=999999)'></textarea>
        <span class="empty-message">*This field is required.</span>
        <span class="error-message">*The message is too short.</span>
        </label>
    <div>
    <div class="clear"></div>
    <div class="btns">
        <a href="#" data-type="reset" class="btn">Clear</a>
        <a href="#" data-type="submit" class="btn">Submit</a>                                   
    </div>
    </div>
</form> 

Не видите используемый для отправки данных формы и подозреваете, что это может быть проблемой? Кнопка «Очистить» работает как положено.

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

<form  action="contactengine.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="submit">
Your name:<br>
<input name="name" type="text" value="" size="30"/><br>
Your email:<br>
<input name="email" type="text" value="" size="30"/><br>
Your message:<br>
<textarea name="message" rows="7" cols="30"></textarea><br>
<input type="submit" value="Send email"/>
</form>

Вот код, который отправляет почту:

<?php

$EmailFrom = Trim(stripslashes($_POST['Email']));
$EmailTo = "grahamdrummond@sky.com";
$Subject = "Test Contact Form";
$Name = Trim(stripslashes($_POST['Name'])); 
$Tel = Trim(stripslashes($_POST['Contact'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

$Body  = 'MIME-Version: 1.0' . "\r\n";
$Body .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$Body .= 'From: '. $EmailFrom . "\r\n" . 'X-Mailer: PHP/' . phpversion();
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Tel: ";
$Body .= $Tel;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

$from = "$Email <>";
$headers  = "From: $from\r\n"; 

// send email 
mail($EmailTo, $Subject, $Body, $headers);

?>

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

На данный момент в html нет ничего, что отправит форму. Проверьте этот кодовый блок на один из способов сделать это: https://codepen.io/jonolayton/pen/mGMJeX

function submitted() {
  
  alert("The form has been submitted!");
  
}
<form id="form" method="post" action="contactengine.php">
<div class="success_wrapper">
    <div class="success-message">Contact form submitted</div>
    </div>
        <label class="name">
            <input type="text" name="Name" id="Name" placeholder="Name:" data-constraints="@Required @JustLetters" />
            <span class="empty-message">*This field is required.</span>
            <span class="error-message">*This is not a valid name.</span>
        </label>
        <label class="email">
            <input type="text" name="Email" id="Email" placeholder="E-mail:" data-constraints="@Required @Email" />
            <span class="empty-message">*This field is required.</span>
            <span class="error-message">*This is not a valid email.</span>
        </label>
        <label class="phone">
            <input type="text" name="Contact" id="Contact" placeholder="Phone:" data-constraints="@Required @JustNumbers"/>
        <span class="empty-message">*This field is required.</span>
        <span class="error-message">*This is not a valid phone.</span>
        </label>
        <label class="message">
            <textarea name="Message" id="Message" placeholder="Message:" data-constraints='@Required @Length(min=20,max=999999)'></textarea>
        <span class="empty-message">*This field is required.</span>
        <span class="error-message">*The message is too short.</span>
        </label>
    <div>
    <div class="clear"></div>
    <div class="btns">
        <a href="#" data-type="reset" class="btn">Clear</a>
        <a href="#" data-type="submit" class="btn">Submit</a>                      
    </div>
    </div>
  <input type="submit" onclick="submitted()">
</form>

В настоящее время вы (я думаю) пытаетесь использовать атрибут данных в ссылке:

<a href="#" data-type="submit" class="btn">Submit</a>

для отправки формы. Но атрибут data не будет отправлять форму самостоятельно, без некоторого кода (обычно javascript), который с ней что-то сделает. Подробнее об атрибутах данных вы можете прочитать здесь: https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes

Вам нужно добавить html или javascript (или оба), которые фактически передадут форму при нажатии.

0 голосов
/ 05 сентября 2018

Вы уверены, что форма отправляется правильно? У вас есть данные в $ _POST?

...