Контакт форма и 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 която праща писмото


