PDA

Просмотр полной версии : Помогите разобраться с формой отправки, отправлени, отправление сообщения на сервер


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



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
Кто сталкивалс с такой проблемой подскажите пожалуйста решение !!!!!!
Зарание Благодарю.