【问题标题】:HTML Form can't send to PHP fileHTML 表单无法发送到 PHP 文件
【发布时间】:2019-03-01 02:34:50
【问题描述】:

我的网站上有一个联系表格,我想发送到电子邮件,我已经将它设置为“onsubmit”它将发送到 js 函数并检查是否所有输入都已填写。然后,它继续转到我的 php 文件。但是,在我点击提交后,它说“此页面无法正常工作”。我的 JS 函数可以完美运行,但我的 php 却不行。

contact.html

  <p id="required">Required <span style="color: red;">*</span></p>
  <script src="js/formvalidate.js"></script>
  <form class="contact-form" name="form" action="php/contact.php" onsubmit="return formValidate()" method="post">
    <label for="first_name" id="label_first" class="contact-label">First Name<span class="asterisk" id="required_fname"></span></label><br>
    <input type="text" id="first_name" name="first_name" class="contact-input" placeholder="First Name"><br>
    <label for="last_name" id="label_last" class="contact-label">Last Name<span class="asterisk" id="required_lname"></span></label><br>
    <input type="text" id="last_name" name="last_name" class="contact-input" placeholder="Last Name"><br>
    <label for="email" id="label_email" class="contact-label">Email<span class="asterisk" id="required_email"></span></label><br>
    <input type="email" id="email" name="email" class="contact-input" placeholder="Email"><br>
    <label for="subject" id="label_subject" class="contact-label">Subject<span class="asterisk" id="required_subject"></span></label><br>
    <input type="text" id="subject" name="subject" class="contact-input" placeholder="Subject"><br>
    <label for="message" id="label_message" class="contact-label">First Name<span class="asterisk" id="required_message"></span></label><br>
    <textarea id="message" name="message" class="contact-message" placeholder="Type here..."></textarea><br>
    <button type="submit" id="submit" name="submit" class="submit">Submit</button>
  </form>

formvalidate.js

function formValidate(){
  var form = document.forms["form"]
  var first_name = form.elements["first_name"].value;
  var last_name = form.elements["last_name"].value;
  var email = form.elements["email"].value;
  var subject = form.elements["subject"].value;
  var message = form.elements["message"].value;
  var output = " *";
  var result = false;
    if (first_name == "" || last_name == "" || email == "" || subject == "" || message == "") {
      alert('Please fill out all required fields');
      document.getElementById('required_fname').innerHTML = output;
      document.getElementById('required_lname').innerHTML = output;
      document.getElementById('required_subject').innerHTML = output;
      document.getElementById('required_email').innerHTML = output;
      document.getElementById('required_message').innerHTML = output;
      document.getElementById('required').style.visibility = "visible";
      return false;
    }
    else{
      alert('Thanks for contacting me');
        result = true;
    }

}

联系人.php

<?php

  if (isset($_POST['submit'])) {
      $fname = $_POST['first_name'];
      $lname = $_POST['last_name']
      $subject = $_POST['subject'];
      $mailFrom = $_POST['email'];
      $message = $_POST['message'];

      $mailTo = "database@terrytowell.com";
      $headers = "From: ".$mailFrom;
      $name = $fname . " " . $lname;
      $txt = "You have received an Email from " . $name . "\n\n" .$message;

      mail($mailTo, $subject, $txt, $headers);
      header("Location: ../contact.html?mailsend");
  }

?>

【问题讨论】:

  • 如果验证功能成功,您需要返回一个值
  • "我的 JS 函数完美运行" 不,你的函数永远不会返回 true。
  • This page isn't working 是一个通用的 PHP 错误。您需要查看服务器错误日志以找出它抛出它的原因。我猜这是$lname = $_POST['last_name']末尾缺少的分号
  • 请注意。处理 POST 请求和发送电子邮件的 PHP 代码几乎没有检查提供的数据的方式——客户端验证代码很容易被否定,元素的属性被修改,然后 PHP 就会失败。

标签: javascript php html


【解决方案1】:

这几行可能对你有帮助:

先在你的旁边插入这个函数

function send_mail($to, $from, $title, $message) {

    $headers = "From: " . strip_tags($from) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    mail($to, $title, $message, $headers);
}

然后在你的变量之后调用它

send_mail($_POST['receiver-email'], $_POST['title(maybe website email)'], "title", "here some other post data from your choice"));

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多