【发布时间】:2019-03-01 02:34:50
【问题描述】:
我的网站上有一个联系表格,我想发送到电子邮件,我已经将它设置为“onsubmit”它将发送到 js 函数并检查是否所有输入都已填写。然后,它继续转到我的 php 文件。但是,在我点击提交后,它说“此页面无法正常工作”。我的 JS 函数可以完美运行,但我的 php 却不行。
contact.html
<p id="required">Required <span style="color: red;">*</span></p>
<script src="js/formvalidate.js"></script>
<form class="contact-form" name="form" action="php/contact.php" onsubmit="return formValidate()" method="post">
<label for="first_name" id="label_first" class="contact-label">First Name<span class="asterisk" id="required_fname"></span></label><br>
<input type="text" id="first_name" name="first_name" class="contact-input" placeholder="First Name"><br>
<label for="last_name" id="label_last" class="contact-label">Last Name<span class="asterisk" id="required_lname"></span></label><br>
<input type="text" id="last_name" name="last_name" class="contact-input" placeholder="Last Name"><br>
<label for="email" id="label_email" class="contact-label">Email<span class="asterisk" id="required_email"></span></label><br>
<input type="email" id="email" name="email" class="contact-input" placeholder="Email"><br>
<label for="subject" id="label_subject" class="contact-label">Subject<span class="asterisk" id="required_subject"></span></label><br>
<input type="text" id="subject" name="subject" class="contact-input" placeholder="Subject"><br>
<label for="message" id="label_message" class="contact-label">First Name<span class="asterisk" id="required_message"></span></label><br>
<textarea id="message" name="message" class="contact-message" placeholder="Type here..."></textarea><br>
<button type="submit" id="submit" name="submit" class="submit">Submit</button>
</form>
formvalidate.js
function formValidate(){
var form = document.forms["form"]
var first_name = form.elements["first_name"].value;
var last_name = form.elements["last_name"].value;
var email = form.elements["email"].value;
var subject = form.elements["subject"].value;
var message = form.elements["message"].value;
var output = " *";
var result = false;
if (first_name == "" || last_name == "" || email == "" || subject == "" || message == "") {
alert('Please fill out all required fields');
document.getElementById('required_fname').innerHTML = output;
document.getElementById('required_lname').innerHTML = output;
document.getElementById('required_subject').innerHTML = output;
document.getElementById('required_email').innerHTML = output;
document.getElementById('required_message').innerHTML = output;
document.getElementById('required').style.visibility = "visible";
return false;
}
else{
alert('Thanks for contacting me');
result = true;
}
}
联系人.php
<?php
if (isset($_POST['submit'])) {
$fname = $_POST['first_name'];
$lname = $_POST['last_name']
$subject = $_POST['subject'];
$mailFrom = $_POST['email'];
$message = $_POST['message'];
$mailTo = "database@terrytowell.com";
$headers = "From: ".$mailFrom;
$name = $fname . " " . $lname;
$txt = "You have received an Email from " . $name . "\n\n" .$message;
mail($mailTo, $subject, $txt, $headers);
header("Location: ../contact.html?mailsend");
}
?>
【问题讨论】:
-
如果验证功能成功,您需要返回一个值
-
"我的 JS 函数完美运行" 不,你的函数永远不会返回 true。
-
This page isn't working是一个通用的 PHP 错误。您需要查看服务器错误日志以找出它抛出它的原因。我猜这是$lname = $_POST['last_name']末尾缺少的分号 -
请注意。处理 POST 请求和发送电子邮件的 PHP 代码几乎没有检查提供的数据的方式——客户端验证代码很容易被否定,元素的属性被修改,然后 PHP 就会失败。
标签: javascript php html