我正在尝试制作一个非常简单的联系表。
在填写完表格的信息后,我点击了send,什么也没有发生。 :/
我对此并不陌生,一旦我开始使用它就会进行前翻。
我在代码上方的HTML和PHP中添加了表单。
我没有更多的细节要分享。
<?php
if($_POST["submit"]) {
$recipient="name@email.com";
$subject="Potential Prospect";
$fname=$_POST["fname"];
$lname=$_POST["lname"];
$email=$_POST["email"];
$message=$_POST["message"];
$mailBody="Name: $fname/nEmail: $email/nMessage: $message";
mail($recipient, $subject, $mailBody, "From: $fname <$email>");
$thankYou="<p>Thank you! Your message has been sent.</p>";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Contact form to email</title>
</head>
<body>
<?=$thankYou ?>
<div id="contactContainer">
<form method="post" action="request.php">
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<label for="firstName">First Name*</label>
<input type="text" class="form-control" id="firstName" name="fname" >
</div>
<div class="col-sm-6">
<label for="lastName">Last Name</label>
<input type="text" class="form-control" id="lastName" name="lname" >
</div>
</div>
</div>
<div class="form-group">
<label for="emailAddress">Email Address*</label>
<input type="text" class="form-control" id="emailAddress" name="email" >
</div>
<div class="form-group">
<label for="subject">Subject*</label>
<input type="text" class="form-control" id="subject" name="subject" >
</div>
<div class="form-group">
<label for="message">Message*</label>
<textarea class="form-control" id="message" rows="3" name="message"></textarea>
<button type="submit" class="btn btn-primary" id="submitB" name="submit">Submit</button>
</div>
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
首先尝试处理错误。
您需要在脚本顶部声明$thankYou
,以免出现错误,然后将isset()
添加到$_POST["submit"]
这是工作示例
<?php
$thankYou = ""; // declare it here so you wont see any error for this variable
if(isset($_POST["submit"])) { // Adding isset here
$recipient="name@email.com";
$subject="Potential Prospect";
$fname=$_POST["fname"];
$lname=$_POST["lname"];
$email=$_POST["email"];
$message=$_POST["message"];
$mailBody="Name: $fname/nEmail: $email/nMessage: $message";
// mail($recipient, $subject, $mailBody, "From: $fname <$email>");
$thankYou="<p>Thank you! Your message has been sent.</p>";
}
?>
答案 1 :(得分:0)
我可以看到有两个小问题可能是导致您遇到问题的原因,另一个是大问题。
首先,如果您要向自己发布表单,则建议删除该操作,除非表单和请求位于不同的位置。通过删除操作,表单将发布到自身。
<form method="post">
第二,$thankyou
在if语句之外未定义。在if语句之前,应设置$thankyou=""
。这样可以确保PHP不会为未设置的变量输出错误。
最后,您要发送带有内置邮件程序的电子邮件。如果您尚未将其放在设置了域名的服务器上,则可能无法发送电子邮件。我不确定是否会导致错误并且什么也不显示,但是我会注释掉它,直到您正确地发布表单并显示$thankyou
输出为止。
尝试这些方法,如果仍然无法解决问题,请回击,我们可以找出问题所在。
编辑:另一件事,而不是做if ($_POST['submit']) {
,将其更改为if ($_POST) {
当前,您正在检查$_POST
数组是否存在以及键submit
的值是否设置为真实值。如果仅检查$_POST
数组是否存在,则将检查是否创建了数组而不是键。这是一个更好的选择,因为您没有将输入名称设置为具有值的提交。
答案 2 :(得分:0)
尝试为按钮提供一个值,例如:
<button type="submit" class="btn btn-primary" id="submitB" value="sub" name="submit">Submit</button>
然后在PHP中检查该值,例如:
if($_POST["submit"] == "sub")
答案 3 :(得分:0)
请更改
<button type="submit" class="btn btn-primary" id="submitB" name="submit">Submit</button>
到
<input type="submit" class="btn btn-primary" id="submitB" name="submit" value="Submit" />
并使用if(isset($_POST["submit"]))
。