php - 电子邮件表格不起作用

标签 php html ajax forms contacts

我在 bootstrap 上创建了一个网站。并通过使用 Ajax 和 PHP,将表单链接到它。该表单不发送任何电子邮件。我也把它放在服务器上进行检查。有人可以帮我解决代码问题吗。

<form name="contactform" method="post" action="" >
                    <div class="form-group">

                        <input type="email" class="form-control" name="email" id="email" placeholder="Enter email" style="width:80%; height: 40px; font-size: 16px; ">
                    </div>
                    <div class="form-group">

                        <input type="password" class="form-control" name="password" id="password" placeholder="Password" style="width:80%; height: 40px; font-size: 16px;">
                    </div>

                    <button type="submit" onclick="myFunction()" class="btn btn-default" style="width: 80%; height: 55px; font-size: 17px; color: white; border-radius: 11px; border: none; background: #F59E3B"><span class="glyphicon glyphicon-play" style="color: white; float: left;"></span>Yes, get me RTD now!</button>
                </form>
                <div id="myDiv"></div>

这是 AJAX 代码:

<script type="text/javascript">
function myFunction()
{


    var xmlhttp;
    if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
  var email=document.getElementById("email").value;
  var password=document.getElementById("password").value;
  xmlhttp.open("POST","senderemail.php?email="+email+"&password="+password,true);
  xmlhttp.send();
}
</script>

这是 PHP 代码:

    if(isset($_REQUEST["email"]))
{

 $email_to="xxxxx@example.com";
 $email_subject="RTD enquiry ";
 echo $email_from=$_REQUEST["email"];
 $email_message="NEW User:".$email_from;
 echo $password="Password: ". $_REQUEST["password"];

  $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

  if(!preg_match($email_exp,$email_from)) {

      echo  'OOPS !! It seems you have entered a wrong Email ID.<br />';

  }
  else
  {
   $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n" .'X-Mailer: PHP/' . phpversion();
     if(@mail($email_to, $email_subject, $email_message, $headers))
     {
        echo "<div class='thanks'><span id='Nihal'>Many thanks for getting in touch.</span><span class='sub-header'>We'll get back to you as soon as we can.</span></div>";
     }
     else
     { 
       echo "Sorry :( Please try again later";
     }
  }

}

最佳答案

假设没有其他错误,此代码应该适合您。

如果您使用 POST 发送数据,那么您不能通过 url 传递查询参数。 您必须单独发送。

xmlhttp.open("POST","senderemail.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("email="+email+"&password="+password);

关于php - 电子邮件表格不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695125/

相关文章:

jquery - Ajax 调用下载从 RESTful 服务返回的文件

来自循环表的 PHP POST 值

PHP $_SERVER [‘SERVER_ADDR’ ] 变量总是返回 127.0.0.1

php - JavaScript 将 <br> 替换为\n

javascript - 为什么浏览器停止显示复选框更新?

javascript - Filament Group 的 loadCSS 与 ajax

javascript - 奇怪的 $http POST Angularjs 澄清

php - 删除开头具有特定模式的行

javascript - 在 VueJs 中将元素从代码隐藏渲染到 v-html

python - 我不断得到列表超出范围尝试将 mysql 数据库转换为 html