2017-05-30 3 views
0

Wenn ich auf den Submit-Button klicke, passiert nichts, obwohl ich PHP eingerichtet habe. Ich dachte zuerst, dass mein Code offensichtlich falsch ist. Aber jetzt habe ich sogar den Code von hier kopiert/eingefügt, der als richtig geprüft wird, aber nichts passiert.Nichts geschieht, wenn ich in meinem Kontaktformular auf Senden klicken.

Hier ist der Code:

<?php 
if(isset($_POST['submit'])){ 
    $to = "[email protected]"; // this is your Email address 
    $from = $_POST['email']; // this is the sender's Email address 
    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 
    $subject = "Form submission"; 
    $subject2 = "Copy of your form submission"; 
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message']; 

    $headers = "From:" . $from; 
    $headers2 = "From:" . $to; 
    mail($to,$subject,$message,$headers); 
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender 
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly."; 
    // You can also use header('Location: thank_you.php'); to redirect to another page. 
} 
?> 

<!DOCTYPE html> 
<head> 
<title>Form submission</title> 
</head> 
<body> 

<form action="" method="post"> 
First Name: <input type="text" name="first_name"><br> 
Last Name: <input type="text" name="last_name"><br> 
Email: <input type="text" name="email"><br> 
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 


</div> 

Könnte dies ein Problem sein, die auf dem Server und nicht der eigentliche Code? Weil ich einige andere Beispiele ausprobiert habe, die ich in verschiedenen Tutorials gefunden habe und das gleiche Problem auftritt.

Oder mache ich noch etwas falsch?

+1

Wird das Echo die "Mail gesendet" drucken? –

+1

können Sie bitte '' am Anfang Ihres Codeblocks bitte entfernen. – manian

+0

zeigt es jede Art von Fehler wie "Warnung: mail(): Verbindung zum Mailserver fehlgeschlagen". oder druckt es etwas, wenn du es einreichst? – manian

Antwort

0

Als Minimum würde ich die folgenden Änderungen an Ihrem Code machen:

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

...

if (!mail($to,$subject,$message,$headers)) 
     error_log(($msg='Send form submission to "'.$to.'" failed')); 
    else if (!mail($from,$subject2,$message2,$headers2)) // sends a copy of the message to the sender 
     error_log(($msg='Send copy of form submission to user "'.$from.'" failed')); 
    else $msg='Mail Sent. Thank you ' . $first_name . ', we will contact you shortly.'; 

...

<body> 
<?php if ($msg) 
{ ?> 
<p><?php echo $msg ?></p> 
<?php 
} ?> 
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 

These Änderungen werden nicht die pr adressieren oblem der Form ist anfällig für das Versenden von Spam, aber es wird diese Probleme anzugehen:

  • wenn ein mail() Anruf Fehler auftreten, wird es protokolliert werden, und eine Meldung angezeigt (die auch die E-Mail-Adresse bestätigen beteiligt)
  • Single-Strings in Anführungszeichen müssen von den PHP-Interpreter analysiert nicht und verwendet werden sollten, wenn Sie Variablen oder Zeichenfolgen (wie "\n"), die müssen interpretiert werden einbetten
  • Sie nicht zu erzeugen wird schlechter HTML-Code, indem der Text vor dem Abschnitt des Dokuments
  • in den Browser geschrieben wird 210
  • Sie werden sicher sein, die richtige action wird verwendet, um das Formular zu behandeln
Verwandte Themen