我非常简单的PHP表单什么都不做



我正在尝试制作一个非常简单的联系表格。

填写表格信息后,我点击发送,没有任何反应。

我是新手,一旦我让它工作,就会做一个前空翻。

我在代码上方添加了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>

请更改

<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"]))

我可以看到有两个小问题可能会导致您的问题,还有一个较大的问题。

首先,如果您要将表单发布到自己,我建议您删除该操作,除非表单和请求存在于不同位置。通过删除操作,表单将发布到自身。

<form method="post">

其次,$thankyou在 if 语句之外未定义。在 if 语句之前,您应该设置 $thankyou="" 。这将确保 PHP 不会为未设置的变量输出错误。

最后,您将使用内置邮件程序发送电子邮件。如果您没有将其放在设置了域名的服务器上,那么您的电子邮件很可能不会被送达。我不确定它是否会导致错误并且不显示任何内容,但我会将其注释掉,直到您正确发布表单并显示$thankyou输出。

尝试这些事情,如果仍然不起作用,请回复评论,我们可以找出问题所在。

编辑:另一件事,而不是做if ($_POST['submit']) {,将其更改为if ($_POST) {

当前,您正在检查 $_POST 数组是否存在,以及键submit的值是否设置为真实值。如果您只是检查$_POST数组是否存在,那么您将检查是否创建了数组而不是键。这是一个更好的选择,因为您没有将名称为 submit 的输入设置为具有值。

尝试给按钮一个值,例如:

<button type="submit" class="btn btn-primary" id="submitB" value="sub" name="submit">Submit</button>

然后在 PHP 中检查该值,例如:

if($_POST["submit"] == "sub") 

首先尝试处理错误。

您需要在脚本顶部声明$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>";
}
?>

最新更新