2016-07-17 6 views
1

Ich erstelle einen Zitat-Builder Kontakttyp des Formulars, wo der Benutzer in der Lage ist, ihre Funktionen zu wählen, und unten ihren Namen, E-Mail und eine kleine Nachricht eingeben können. Ich verwende die Basis eines einfachen Kontaktformulars und verwende PHPMailer, um das Formular zu senden. Ich habe eine kleine Testseite erstellt, um zu sehen, ob ich die Ergebnisse bekommen kann, nach denen ich suche, bevor ich mit dem ganzen Projekt fortfahre.Wie kann der Status eines Eingabefeldes, das per E-Mail gesendet werden soll, hinzugefügt werden?

Wir setzen den 'Wert' der Checkbox-Eingabe als eine Zahl, so dass der Quote Builder alles preisgeben kann und hofft, dass es eine einfache Möglichkeit gibt, per E-Mail zu senden, ob eine bestimmte Checkbox aktiviert wurde nicht mit einem Namen

Hier ist der HTML:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    </head> 
    <body> 
    <div class="contact"> 

     <?php if(!empty($errors)): ?> 
     <div class="panel"> 
      <ul><li><?php echo implode('</li><li>', $errors); ?></li></ul> 
     </div> 
     <?php endif; ?> 

     <form action="contact.php" method="post"> 

     <label> 
      Your Name * 
      <input type="text" name="name" autocomplete="off"<?php echo isset($fields['name']) ? 'value="' . e($fields['name']) . '"' : '' ?>> 
     </label> 
     <label> 
      Your email address * 
      <input type="text" name="email" autocomplete="off"<?php echo isset($fields['email']) ? 'value="' . e($fields['email']) . '"' : '' ?>> 
     </label> 
     <label> 
      Example feature 
      <input type="checkbox" name="feature" class="option" value="25"> 
     </label> 
     <label> 
      Your message * 
      <textarea name="message" row="8"<?php echo isset($fields['message']) ? e($fields['message']) : '' ?>></textarea> 
     </label> 

     <input type="submit" value="Send"> 

     <p class="muted">* means a required field</p> 

     </form> 

    </div> 
    </body> 
</html> 
<?php 
    unset($_SESSION['errors']); 
    unset($_SESSION['fields']); 
?> 

Hier ist ein Teil des PHP: Beachten sie, wo es $ m- erwähnt> Body das ist, wo ich das echo müssen werde Kontrollkästchenwert

$m = new PHPMailer; 

$m->isSMTP(); 
$m->SMTPAuth = true; 

$m->Host = 'hosthere'; 
$m->Username = '[email protected]'; 
$m->Password = 'password'; 
$m->SMTPSecure = 'ssl'; 
$m->Port = 465; 

$m->isHTML(); 

$m->Subject = 'Contact form submitted'; 
$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $fields['feature']; 

$m->FromName = 'Contact'; 

$m->AddAddress('[email protected]', 'User Name'); 

if($m->send()) { 
    header('Location: thanks.php'); 
    die(); 
} else { 
    $errors[] = "Sorry, could not send email. Try again later."; 
} 
+0

Ist die PHP-Datei zu ändern, wo Sie E-Mail 'contact.php' schicken? –

+0

Ich denke, es sollte $ _POST ['name'] nicht $ fields ['name'] sein. Recht? –

+0

Ja, es sendet von index.php zu contact.php. – Ryan

Antwort

1

Versuchen

$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $fields['feature']; 

Um

$feature = ""; 
if(isset($_POST['feature'])){ 
    $feature = $_POST['feature']; 
} 
$m->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['message'] . '</p> ' . $feature; 
+0

Großartig! Es funktionierte, wie würde ich mehr als ein Eingabefeld hinzufügen, wie würde das aussehen? – Ryan

+0

Wenn Sie dies tun, $ m-> Körper = 'Von:'. $ Felder ['Name']. '($. fields [' email '].')

'. $ Felder ['Nachricht']. '

'. $ -Funktion. "". $ feature2; ', es wäre in einer Zeile. Aber wenn du das machst, $ m-> Body = 'From:'. $ Felder ['Name']. '($. fields [' email '].')

'. $ Felder ['Nachricht']. '

'. $ -Funktion. "
". $ feature2; ', nach' $ feature' wird es einen Zeilenumbruch geben. –

+0

Muss ich das $ feature2 nicht auch im isset-Teil setzen? – Ryan