0

我似乎总是有问题和搞砸。大学没有教我们任何关于 PHP 的知识,我想用它来发送电子邮件。有人可以帮忙吗?我使用 JavaScript 进行验证,然后使用 PHP 发送表单。这就是我所拥有的。

PHP:

<?php

$to = 'jd20032007@hotmail.com';
$subject = 'Voice4Autism Inquiry';

$FirstName = $_POST['fname'];
$LastName = $_POST['lname'];
$eMail = $_POST['email'];

$message = <<<EMAIL

Hi!<br /><br/>

My name is $FirstName $LastName.  I am interseted in your newsletter from Voice4Autism.  Please add $eMail to your listserve.<br /><br />

Thank you,<br />
$FirstName $LastName

EMAIL;

$header = "From: $eMail\r\n";
$header = "Content-type: text/html\r\n";


mail($to, $subject, $message, $header);

?>

HTML/JavaScript

    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Untitled Document</title>
    <script>
    function checkforblank() {
        var errormessage = "";

        if (document.getElementById('fname').value ==""){
            errormessage += "enter your first name \n";
        }
        if (document.getElementById('lname').value ==""){
            errormessage += "enter your last name \n";
        }
        if (document.getElementById('email').value ==""){
            errormessage += "enter your email \n";
        }
        if (document.getElementById('confirmEmail').value ==""){
            errormessage += "confirm your email \n";
        }

        if (errormessage != ""){
            alert(errormessage);
            return false;
        } else return true;
    }

    function verifyEmail() {
        var status = false;     
        var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

        if (document.myForm.email.value.search(emailRegEx) == -1) {
                  alert("Please enter a valid email address.");
        }


        if (document.getElementById('email').value == document.getElementById('confirmEmail').value) {
            alert("Thank you for your interest!");
                status = true;            
        } else {
            alert("Email addresses do not match.  Please retype them to make sure they are the same.");
        }

        return status;
    }

    function confirmEmailAddresses(){
        if (checkforblank() == true) {
            if (verifyEmail() == true) {
                document.getElementById("myForm").submit();
            }
        } 
    }

    </script>
    </head>

    <body>

<div id="content">
<form name="myForm" action="#" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">
<table width="377" height="96">
  <tr>
    <td style="text-align: right">First Name:</td>
    <td><label for="FirstName"></label>
      <input type="text" name="fname" id="fname"></td>
  </tr>
  <tr>
    <td style="text-align: right">Last Name:</td>
    <td><label for="LastName"></label>
      <input type="text" name="lname" id="lname"></td>
  </tr>
  <tr>
    <td style="text-align: right">E-mail:</td>
    <td><input type="email" name="email" id="email"></td>
  </tr>
  <tr>
    <td style="text-align: right">Confirm E-mail:</td>
    <td><input type="email" name="confirmEmail" id="confirmEmail"></td>
  </tr>
</table>
<input type="button" value="Send" onClick="confirmEmailAddresses()"><input type="reset" value="Reset Form">

</form>
</div>
</body>
</html>

JavaScript 和 HTML 确实有效!!!

4

4 回答 4

1

这里绝对不需要 AJAX,除非您希望页面持久存在。只需将表单设置为action将接收表单数据并邮寄的文件。

<form name="myForm" action="mailer.php" method="post" enctype="application/x-www-form-urlencoded" onsubmit="">

将表单方法设置为 POST。它更好。现在在您的mailer.php(您可以命名它,只要确保使用正确的名称进行操作)文件中处理$_POST数组以获取表单数据。请注意,页面会刷新,您可以在提交表单后使用重定向到感谢页面。

将按钮更改为:

<input type="submit" name="send_mail" value="Send" onClick="confirmEmailAddresses()">

你的 PHP 文件可能是这样的:

<?php
if(isset($_POST) && !empty($_POST)){
    if(isset($_POST['send_mail']) && $_POST['send_mail'] == 'Send'){
        $fname = $_POST['fname'];
        $lname = $_POST['lname'];
        $email = $_POST['email'];
        $confirm_email = $_POST['confirmEmail'];

        //Additional validation here
        //Use the mail function to send the email

        //If mail sent, redirect to a thank you/confirmation page
    }
}
?>

检查mail文档以获取工作示例。

于 2013-09-23T06:10:16.010 回答
0

对于邮件,您可以在这里查看

mail($to,$subject,$message,$header);

$to 是电子邮件应该发送到的电子邮件地址

$subject 只是邮件的简要描述

$message 是你的消息

$header 是像 MIME 这样的标题内容类型

于 2013-09-23T05:57:39.490 回答
0

我不确定您的所有代码都有效。但我注意到的一件事是您需要在 action="" 属性中提供目标 url(在这种情况下为 php 文件),该属性告诉浏览器将捕获的数据发送到何处进行处理。

<form name="myForm" action="#" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">

<form name="myForm" action="your_php_program.php" method="get" enctype="application/x-www-form-urlencoded" onsubmit="">
于 2013-09-23T06:50:22.743 回答
-2

我会使用 AJAX。但首先要确保您的 Web 服务器支持使用 PHP 发送邮件。您可以使用 phpinfo() 进行检查,但您的 PHP 脚本似乎根本没有发送 mail() ......

于 2013-09-23T06:00:23.973 回答