Вызовите PHP с JavaScript

0

Кажется, у меня всегда возникают вопросы и беспорядок. Университет не учил нас никому о PHP, и я хочу использовать его для отправки электронной почты. Может ли кто-нибудь помочь? Я использую JavaScript для проверки, а затем PHP для отправки формы. Вот что у меня есть.

PHP:

<?php

$to = '[email protected]';
$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 работают !!!

Теги:
validation

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 для рабочих примеров.

  • 0
    Похоже, это будет работать! Выглядит хорошо! Я пытаюсь сохранить это на одной странице на данный момент. Будет ли здесь функция почты?
  • 0
    Да, это будет. Я добавил в соответствующих комментариях.
Показать ещё 6 комментариев
0

по почте вы можете проверить здесь

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

$ to to to to the e-mail email должно быть отправлено

$ subject - просто краткое описание почты

$ message - ваше сообщение

$ header - тип содержимого заголовка, такой как MIME

  • 0
    Спасибо! Я добавил его в приведенный выше код и проверил его на тестовом сервере, который я использую, но он все еще не работает.
  • 0
    для проверки цели измените $ message = "test mail"; ... проверьте это один раз
0

Я не уверен, что весь ваш код работает. Но одна вещь, которую я замечаю, - это указать целевой URL-адрес (php файл в этом случае) в атрибуте action = "", который сообщает браузеру, куда отправлять полученные данные для обработки.

<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="">
-2

Я бы использовал AJAX. Но сначала убедитесь, что ваш веб-сервер поддерживает рассылку с помощью PHP. Вы можете проверить это с помощью phpinfo() Но похоже, что ваш PHP скрипт не отправляет почту() вообще...

  • 0
    Я чрезвычайно новичок в этом, поэтому AJAX немного над моей головой. Мой сервер поддерживает PHP.
  • 0
    Японец, но AJAX очень прост в освоении. Вы можете использовать функцию Javascript, в которой вы можете поместить $. ("# ElementID"). Load ("phpfile.php"); Но сначала нужно реализовать библиотеку Json;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню