努力使联系表格工作(HTML5 / PHP)

时间:2016-08-30 15:04:51

标签: php html5 forms email contact

我在使用我的联系表单在我的网站上工作时遇到了一些困难。每当我尝试提交时,它会打开index.php,这是一个空白页面,而不是实际执行脚本并触发电子邮件。

这是表格。

    <form method="post" action="index.php">
        <div class="field">
            <label for="name">Name</label>
            <input type="text" name="name" id="name" />
        </div>
        <div class="field">
            <label for="email">Email</label>
            <input type="email" name="email" id="email" />
        </div>
        <div class="field">
            <label for="message">Message</label>
            <textarea name="message" id="message" rows="4"></textarea>
        </div>
        <ul class="actions">
            <li><input type="submit" type="submit" value="Send Message" /></li>
        </ul>
    </form>

这是我使用的index.php文件。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Test'; 
$to = 'brett@edge.yt'; 
$subject = 'Hello';

$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if ($_POST['submit']) {
  if (mail ($to, $subject, $body, $from)) { 
    echo '<p>Your message has been sent!</p>';
  } else { 
    echo '<p>Something went wrong, go back and try again!</p>'; 
  }
}
?>

PHP似乎已正确安装在我的服务器上,我可以使用PHPInfo()文件没问题。

1 个答案:

答案 0 :(得分:0)

电子邮件永远不会尝试发送,因为未设置$_POST['submit']。您没有对名为submit的表单进行控制。如果您打算将其作为提交按钮,则需要为其提供name属性。

<input type="submit" name="submit" value="Send Message" />

然后,在PHP脚本中,检查提交isset而不是仅仅将其评估为布尔值。

if (isset($_POST['submit'])) { ...

这样,如果表单尚未提交,您将无法获得未定义的索引通知。