Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Форма обратной связи (http://www.flasher.ru/forum/showthread.php?t=121235)

Alex Lexcuk 11.02.2009 00:34

Форма обратной связи
 
Включает в себя 3 файла
mail.html
mail.js
sendmail.php

В html создается форма, которая проверяет заполненны ли поля и правильность ввода адреса почты. Если все правильно, то данные отправляются серверному php скрипту, который уже и непосредственно отправляет почту, в нем надо заполнить адрес получателя почты.
Т.е.
Код:

$address = 'myMail@mail.ru';
вместо
Код:

myMail@mail.ru
вписать ваш реальный адрес почты на него будут приходить письма. В случае удачной отправки появляется эта-же форма, но с сообщением письмо отправленно. (js получает переменные статуса отправки почты через адресную строку и выводит их в соответствующий div методом innerHtml)
mail.html
Код:

<html>
<head>
</head>

<body>
<div id="back_button">
        </div>

<table width="430" border="0">
        <tr>
        <td height="50" align="center" colspan="2"><font color="blue"><div id="idStatus"></div></font></td>
        </tr>
                <form action="sendmail.php" method="post" onsubmit = "return checkForm(this)">
                        <tr>
                                <td width="86">Ваше имя</td>
                                <td width="286"><input type="text" name="name"></td>
                        </tr>
                       
                        <tr>
                                <td>Ваш e-mail</td>
                                <td width="286"><input type="text" name="email"></td>
                        </tr>
                       
                        <tr>
                                <td>&nbsp;</td>
                                <td width="286">
                                <p align="center">Сообщение</p>
                                </td>
                        </tr>
                        <tr>
                                <td>&nbsp;</td>
                                <td width="286"><textarea name="message" cols="33" rows="10"></textarea></td>
                        </tr>
                        <tr>
                                <td align="center" colspan="2">
                                <input type="submit" value="Отправить" style="border: 1px solid #000000"></td>
                        </tr>
                </form>
</table>

</body>
        <script type="text/javascript" src="mail.js"></script>
</html>

mail.js
Код:

var query = location.search.substring(1);
var ansReg = "";
var ans = "";
ansReg = query.match(/no/g);
if (ansReg=="no") ans = "Сообщение не отправленно";
ansReg = query.match(/yes/g);
if (ansReg=="yes") ans = "Сообщение отправленно";
//alert(ans);
document.all.idStatus.innerHTML = ans;

function checkForm(form){
        var outErrorStr = "";
        var str = "";
        var errorsName = 'Введите ваше имя';
        var errorsMailfrom = 'Введите свой E-mail';
        var errorsIncorrect = 'Заполните правильно Ваш E-mail';
        var errorsMessage = 'Наберите сообщение!';
        var send = 'Ваше письмо отправлено!';
        str = form.name.value;
        if (!str.match(/[^\s]/g)) outErrorStr =errorsName+"\n";
        str = form.email.value;
        if (!str.match(/[^\s]/g)) outErrorStr =outErrorStr +errorsMailfrom+"\n";
        str = form.email.value;
        if (!validateEmail(str)) outErrorStr =outErrorStr +errorsIncorrect +"\n";
        str = form.message.value;
        if (!str.match(/[^\s]/g)) outErrorStr =outErrorStr +errorsMessage;
       
       
        if (outErrorStr!="") {
                alert(outErrorStr);
                return (false);
                }
                else{
                return (true);
                }
}


function validateEmail(str){
        var lastIdx = -1;
        var pattern = new RegExp("^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$");
        var result = pattern.exec(str);
        if (result!=null) {
        result=true;
        }else{
        result=false;
        }
return result;
}

sendmail.php
Код:

<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['message'])) {$message = $_POST['message'];}

$address = 'myMail@mail.ru';
$sub = "Письмо с сайта http://".$HTTP_HOST;
$mes = "Автор назвался: ".$name." \nУказал свой адрес: ".$email." \nСодержание письма: ".$message;
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:".$email);
if ($verify == 'true')
{
echo '<script type="text/javascript">window.location.href = "mail.html?var=yes";</script>';
}
else
{
echo '<script type="text/javascript">window.location.href = "mail.html?var=no";</script>';
}
?>

PS: Тестилось на почте именно mail.ru, на почты gmail.com и yandex.ru письма не приходили, возможно это связанно с (непродвинутостью) - если можно так выразиться сайта с бесплатным хостингом, но с поддержкой php.


Часовой пояс GMT +4, время: 14:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.