[英]What is wrong with my php mail contact form?
我正在為我的網站的聯系表單使用模板。 問題是,當我在服務器上對其進行測試時,無法發送消息。 它只會給我我的錯誤消息,而不會發送。 我將原始的發送文本翻譯成德語時發生了什么變化?
我試過調試vars。 我也嘗試echo
一些字符串輸入。
這是html代碼:
<form id="contact-form" action="mail.php" method="post">
<div class="row">
<div class="col-md-6 form-group">
<label class="sr-only">Name</label>
<input type="text" class="form-control input-lg" name="name" placeholder="Name" >
<p class="help-block text-danger"></p>
</div>
<div class="col-md-6 form-group">
<label class="sr-only">Email</label>
<input type="email" class="form-control input-lg" name="email" placeholder="Email" >
<p class="help-block text-danger"></p>
</div>
<div class="col-md-12 form-group">
<label class="sr-only">Betreff</label>
<input type="text" class="form-control input-lg" name="subject" placeholder="Betreff" >
<p class="help-block text-danger"></p>
</div>
<div class="col-md-12 form-group">
<textarea class="form-control input-lg" rows="7" name="message" placeholder="Nachricht"></textarea>
<p class="help-block text-danger"></p>
</div>
<div class="col-md-12 text-center">
<button type="submit" class="btn btn-lg btn-round btn-dark">Senden</button>
</div>
</div>
</form>
PHP:
<?php
// POST GET.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Form Felder GET.
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$subject = trim($_POST["betreff"]);
$message = trim($_POST["nachricht"]);
// Check ob Daten an den mailer.
if ( empty($name) OR empty($subject) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 400 (bad request) und raus.
http_response_code(400);
echo "Bitte füllen Sie alle Felder aus.";
exit;
}
// Empfaenger.
$recipient = "info@test.de";
// Betreff.
$subject = "Neue Anfrage von $name";
// Inhalt.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Betreff: $subject\n\n";
$email_content .= "Nachricht:\n$message\n";
// Header.
$email_headers = "Von: $name <$email>";
// Senden.
if (mail($recipient, $subject, $email_content, $email_headers)) {
// 200 (okay).
http_response_code(200);
echo "Vielen Dank! Deine Nachricht wurde versendet.";
} else {
// 500 (internal server error).
http_response_code(500);
echo "Oops! Hier ist ein Fehler passiert, deine Nachricht konnte nicht gesendet werden.";
}
} else {
// 403 (forbidden).
http_response_code(403);
echo "Es gibt Probleme mit deiner Anfrage, bitte versuche es ernuet.";
}
?>
您輸入的主題名稱是用英語填寫的形式,但您的php文件則是德語的
為所有代碼選擇相同的lang可以避免混淆
將名稱屬性更改為德語以使其工作
<input type="text" class="form-control input-lg" name="betreff" placeholder="Betreff" >
<textarea class="form-control input-lg" rows="7" name="nachricht" placeholder="Nachricht">
</textarea>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.