Форум 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=120575)

edwardush 24.01.2009 17:24

Помогите разобраться с формой отправки, отправлени, отправление сообщения на сервер
 
У меня есть форма отправки сообщения на сервер. Всё работает, но есть одна проблема. То есть она не проверяет поля. Как бы я не нажал на отправить и сообщение отправляется на сервер сразу. А мне надо чтобы проверяло все три поля и выводило сообщение - Сообщение не отправлено.
Где надо дописать мне здесь что бы проверяло незаполненные поля.


PHP код:

index.html

<form action="send.php" method="post" name="f1">
<p>Введите имя:<br>
<input type="text" name="name"></p>
<p>Введите email:<br>
<input type="text" name="email"></p>
<p>Введите сообщение:<br>
<textarea name="message" rows="5" cols="30"></textarea>
<br>
<br>
<input type="submit" value="Отправить "></p>
<input type="reset" value="Стереть"></p>
</form>


send.php


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

$address 'mail@gmail.com';
$sub "Сообщение";
$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 
"<p>Сообщение отправлено";
}
else 
{
echo 
"<p>Сообщение не отправлено";
}
?>


Megamerk 29.01.2009 11:11

При чем тут PHP? Ты же проверку на стороне клиента планируешь. Ставь кнопке submit аттрибут disabled, обработчик событий для input полей и textarea (скажем, onChange), вызывай им функцию, которая проверяет длину value этих полей и при удовлетворительном результате ставит false для дизэйбла сабмит баттона. Короче, тут тебе JavaScript нужен.

Alex Lexcuk 30.01.2009 19:22

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>';
}
?>


plgwar 18.02.2009 12:20

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\AppServ\www\mail\send.php on line 12

У меня вот ткая Ошибка !!!!!
Я думаю я что то ненастроил в php.ini
Кто сталкивалс с такой проблемой подскажите пожалуйста решение !!!!!!
Зарание Благодарю.


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

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