我非常简单的PHP表单不执行任何操作

时间:2018-08-08 02:18:18

标签: php html

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

在填写完表格的信息后,我点击了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>

4 个答案:

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

相关问题