2016-08-30 41 views
0

我在我的网站上工作时遇到了一些困难。每当我尝试提交时,它都会打开index.php,一个空白页面,而不是实际执行脚本并发送电子邮件。努力使联系表单工作(HTML5/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 = '[email protected]'; 
$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()文件没有问题。

+0

在输入HTML中,您有type =“submit”两次。第二个应该是name =“submit”。这样你就没有$ _POST ['submit']设置,并且永远不会进入状态。 – Dexa

+0

谢谢,解决了这个问题,现在我正在找一个地方。不幸的是,我每次都收到“出错了,请回去再试一次”,所以我一定在其他地方犯了一个错误。 – Edge

回答

0

电子邮件永远不会尝试发送,因为$_POST['submit']未设置。您的表单上没有名为submit的控件。如果你打算成为提交按钮,你需要给它一个name属性。

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

然后,在你的PHP脚本,检查提交isset而不是仅仅评估它作为一个布尔值。

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

这样,如果表单尚未提交,您将不会收到未定义的索引通知。

+0

哦,很好看。我将'type =“submit”'更改为'name =“submit”',表单现在运行,但每次都失败。认为还有其他问题。 – Edge

+0

你的意思是,你得到'出错了'的信息? –

+0

是的,我现在试着测试这个表单。它确实运行得益于先前的修复,但是现在我收到了“出错了”的消息。 – Edge