2016-11-23 8 views
0

Ich arbeite an einer "Coming Soon" -Website, wo, wenn ein Benutzer "Kontakt" wählt, ein JavaScript-Modal mit einem E-Mail-Formular erscheint. Ich benutzte den gleichen Code, den ich auf einer Seite ohne Modal hatte und es funktioniert dort, also bin ich nicht sicher, warum diesmal die E-Mail nicht gesendet wird. Hat das etwas mit dem Modal zu tun?PHP sendet kein Formular von einem Modal

Die Art, wie ich das Modal gemacht habe, ist, dass es am Ende der Seite ist, visibility: hidden; opacity: 0;, bis der Benutzer auf "Kontakt" klickt, wo das Modal eine Klasse mit visibility: visible; opacity: 1; angefügt bekommt. Ich nehme an, es gibt vielleicht bessere Möglichkeiten, dies zu tun, aber ich lerne gerade und das kann ich im Moment tun.

HTML:

<form class="form" role="form" method="post" action="#contact"> 

<div class="form__text"> 
    <p>Our <strong>new</strong> website will launch in <strong>Spring 2017</strong>.</p> 
    <p>In the meantime, contact us for more information.</p> 
    </div> 
    <div class="form__inputs"> 
    <div class="form__name"> 
     <label for="name" class="name">Name</label><br> 
     <input type="text" class="form-control" id="name" name="name" value="" required=""> 
    </div> 

    <div class="form__email"> 
     <label for="email" class="email">Email</label><br> 
     <input type="email" class="form-control" id="email" name="email" value="" required=""> 
    </div> 

    <div class="form__message"> 
     <label for="message" class="message">Message</label><br> 
     <textarea class="form-control" rows="4" name="message" required=""></textarea> 
    </div> 

    <div class="form__submit"> 
     <button id="submit" name="submit" type="submit">Submit</button> 
    </div> 
    </div> 
</form> 

Dies ist die PHP ist:

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $from = 'From: xxx'; 
    $to = '[email protected]'; 
    $subject = 'Hello'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    if ($_POST['submit']) { 
    if (mail ($to, $subject, $body, $from)) { 
     echo '<h4 >Thank you for your message!</h4>'; 
    } else { 
     echo '<h4>Sorry there was an error sending your message. Please try again!</h4>'; 
    } 
} 
?> 

Die PHP ist im selben Dokument (index.php) als HTML, am Boden (kurz vor JS-Skript) und tag. Der Fehler, den ich bekommen ist:

Kann POST nicht/

Könnten Sie bitte beraten, warum es nicht gesendet? Ich kenne PHP nicht gut, ich versuche zu verstehen, was vor sich geht, aber nicht sehr erfolgreich.

+0

Im FORM-Tag den 'action =" # contact "' Teil entfernen und es erneut versuchen? – Cagy79

+0

Außerdem überprüfen Sie 'if ($ _POST ['submit'])', aber Ihr Submit hat kein 'value' Attribut, so dass' $ _POST ['submit'] 'eine leere Zeichenkette sein wird, selbst wenn Sie das Formular senden. Prüfe besser 'if (! Empty ($ _ POST)) ' –

+0

benutze statt '#contact' in Formularaktion – Gopalakrishnan

Antwort

0

Für die Zukunft würde ich schreiben möchten, was das Problem gelöst:

  1. I value="Send" zum Absenden-Button hinzugefügt.
  2. Ich stellte sicher, dass das PHP-Skript direkt nach dem Tag, aber vor dem für den gesamten modalen Abschnitt war.
  3. Ich habe den Index-Dateinamen von index.html zu index.php geändert.
  4. Ich habe es live direkt von meinem Webhost getestet (ich FTP-ed die Datei). Ich bin mir sicher, dass es einen Weg geben muss, es lokal zu testen, aber ich weiß nicht wie.

Vielen Dank an alle, die kommentiert haben.

Verwandte Themen