不明白为什么我的联系方式是不发送电子邮件

不明白为什么我的联系方式是不发送电子邮件

问题描述:

我试图让电子邮件在弹出发送了我的网站上,你可以通过下面的链接查看: http://www.madaxedesign.co.uk不明白为什么我的联系方式是不发送电子邮件

但是它完美地重定向到但是在重定向它之后,感谢消息不会实现PHP。下面我已经展示了用于这个联系表单的PHP,HTML和Jquery。

HTML:

<form id="submit_message" class="hide_900" action="/send.php" method="post"> 
      <div id="NameEmail"> 
       <div> 
        <label for="name">Name*</label> 
        <input type="text" title="Enter your name" name="name"/> 
       </div> 
       <div> 
        <label for="email">Email*</label> 
        <input type="text" title="Enter your email address" name="email"/> 
       </div> 
      </div> 
      <div id="MessageSubmit"> 
       <div> 
        <textarea maxlength="1200" title="Enter your message" name="message"></textarea> 
        <label for="message">Message</label> 
       </div> 
       <div class="submit"> 
        <input type="submit" value="Submit"/> 
       </div> 
      </div> 
     </form> 

PHP:

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$formcontent="From: $name \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Email From Madaxe"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
header('Location: /thanks.html'); 
exit(); 
?> 

的Jquery:

 $('form#submit_message').live('submit', function() { 
     $('#popup').load('/thanks.html'); 
     return false; 
    }); 

我想知道如果任何人都可以快速地看看,看看,如果我错过什么明显的,我可以快速修复,甚至指向正确的方向。

谢谢

+0

什么是在您的语句中返回false的目的 – kumar 2013-05-07 10:09:07

+0

您的表单是开放的邮件头注入。总是检查发件人地址是否有效,否则注入'bla @ bla \ r \ nBcc:spam @ example.com'很容易。 – 2013-05-07 10:09:29

+0

in Jquery:try'return true' – Joddy 2013-05-07 10:17:28

你的jQuery干扰。

我想,这也许会有帮助,使用AJAX来发表您的形式:jQuery Ajax POST example with PHP

+1

感谢这似乎是我正在寻找。 – MaxwellLynn 2013-05-07 12:54:38

你并不需要jQuery代码。实际上它会阻止您的默认操作形式action=send.php。并且它不会将您的输入传递给send.php

+0

我需要Jquery在弹出式窗口中发送感谢消息,不过像Luke说我可以使用Ajax来做到这一点。但不完全理解为什么我的jquery阻止它被发送。 – MaxwellLynn 2013-05-07 10:18:15

+0

你有'header('Location:/thanks.html');',那么我认为,你不需要 – Amir 2013-05-07 10:19:22

+0

我试图去看看它是否改变了什么,但它仍然没有发送。 – MaxwellLynn 2013-05-07 10:25:33

$.live()在jQuery 1.9中已弃用,这就是您似乎正在使用的内容。请降级或使用替代功能,如.submit()

$('#submit_message').submit(function (e) { 
    e.preventDefault(); 
    $('#popup').load('/thanks.html'); 
} 

而且,这是至关重要的,你使用他们的电子邮件标题前净化你的$_POST输入,否则黑客可以注入坏事变成你的头。

如果您尝试通过本地主机发送邮件,则需要更改php.ini文件中的某些设置。请参阅下面的链接来完成此操作

http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/