我正在嘗試使HTML表單工作。php驗證表單不發送電子郵件
我的前端代碼是這樣的:
<form action="/form_validation.php" target="_blank">
<p><input class="w3-input w3-padding-16" type="text" placeholder="name" required name="name"></p>
<p><input class="w3-input w3-padding-16" type="text" placeholder="email" required name="email"></p>
<p><input class="w3-input w3-padding-16" type="text" placeholder="subject" required name="subject"></p>
<p><input class="w3-input w3-padding-16" type="text" placeholder="comment" required name="comment"></p>
<p>
<button class="w3-button w3-light-grey w3-padding-large" type="submit">
<i class="fa fa-paper-plane"></i> SEND MESSAGE
</button>
</p>
</form>
<p><?php echo $feedbackmsg;?></p>
和文件form_validation.php
包含此:
<?php
$nameErr = $emailErr = $commentErr = $subjectErr = "";
$name = $email = $comment = $subject = "";
$feedbackmsg = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['submit'])) {
if (empty($_POST["name"])) {
$nameErr = "*Name is required";
} else {
$name = validate($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
$nameErr = "*Only letters and white space allowed";
}
}
if (empty($_POST["subject"])) {
$subjectErr = "*Subject is required";
} else {
$subject = validate($_POST["subject"]);
if (!preg_match("/^[a-zA-Z ]*$/", $subject)) {
$SubjectErr = "*Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "*Email is required";
} else {
$email = validate($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
$emailErr = "*Invalid email format";
}
}
if (empty($_POST["comment"])) {
$commentErr = "*Write Me something";
} else {
$comment = validate($_POST["comment"]);
}
if (empty($nameErr) && empty($emailErr) && empty($commentErr)) {
$to = "[email protected]";
$subject = $name;
mail($to, $subject, $comment, $email);
$feedbackmsg = "Your message has sent,<br> thanks";
}
}
}
所以,當觸發的動作就返回一個空白頁與我summury以下網址: 的mysite .com/form_validation.php?name = anastasios & email = myemail%40hotmail.com & subject = mysubject & comment = ena + dio + ena + dio
我認爲這是正常的。但爲什麼我沒有任何電子郵件,如果它正常工作? 有什麼想法?非常感謝
哦是的,但即使這樣我得到新的空白頁與url mysite.com/form_validation.php,仍然沒有得到任何郵件。 而不是action =「form_validation」我嘗試過action =「<?php mail()?>」,並且可以獲取電子郵件,但沒有任何提示。當然,我不喜歡在沒有驗證的情況下以這種方式獲取電子郵件,但只是嘗試其他方式來確保我的表單能夠正常工作。 – fxp869
@ fxp869:做一些調試。該頁面爲空白,因爲您從不輸出任何內容。 (或者因爲出現錯誤而且沒有打開錯誤報告。)檢查PHP日誌,添加某種輸出以測試邏輯,等等。您的代碼不是完全可用或者完全不可用的黑盒子,工作。你可以調試它。 (沒有,'action =「<?php mail()?>」'不會像你期望的那樣遠程執行任何操作。只是隨機移動代碼不會被調試。) – David