Контакт форма и AJAX

Автор: mute

Ще ви кожака една имеил форма която ползва аякс
състои се от 3 фаила html формуляр , php скрипт за изпращането на писмото и js с които правим XMLHttpRequest-а

mail.html

<script src="mail.js" type="text/javascript">
</script>
<form name="mail" id="mail" action="#" >
<fieldset>
<legend> <b>Имейл форма</b> </legend>
<div id="msg" style="font-size:18px;color:red">
</div>

Вашето име<br /><input type="text" name="name" id="name"/><br />
Вашият имейл<br /><input type="text" name="email" id="email" /><br />
Вашето съобщение<br /><textarea name="message" id="message" cols="20"></textarea><br />
<input onclick="javascript: sendmail();" type="button" name="send" value="Изпрати съобщение" />
</fieldset>
</form>

важна част от формуляра е всики input елемент е да има id

mail.js

var xmlHttp
function GetXmlHttpObject()
{
var xmlHttp=null;

try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}

function sendmail(){


var name = document.getElementById('name').value;
var email = document.getElementById('email').value;
var message = document.getElementById('message').value;


name = escape(name);
message = escape(message);

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null){

alert ("Browser does not support HTTP Request")

return

}

var url="mailsend.php?from="+email+"&name="+name+"&message="+message

url=url+"&sid="+Math.random()


xmlHttp.onreadystatechange=stateChangedmail

xmlHttp.open("GET",url,true)

xmlHttp.send(null)
}

function stateChangedmail() {

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){

document.getElementById("msg").innerHTML=xmlHttp.responseText

}

}

И mailsend.php

<?php


$to='имеил за връзка';

$msg=$_GET["message"];
$headers = 'From: '.$_GET["from"];
$name=$_GET['name'];
$subject='contact form';
$msg="\nMessage from: ".$name."\r\nwith email address: ".$headers."\r\n".$msg;
if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $_GET['from']))
{
die('Грешен меил адрес');
}
echo 'Съобщението изпратено успешно';
mail($to1, $subject, $msg, $headers);
?>

тук няма какво да обяснявам има един regexp за проверка на имеил адреса на изпращача и функцията mail която праща писмото

Вашият коментар