01-11-2009, 07:27 PM
navegando en la rede me he encontrado esto que a algunos les puede venir muy bien. Aqui lo dejo por si os sirve
Para un formulario de contacto te hacen falta 4 archivos: 3 php y uno en java script. Los vamos a llamar:
contact.php
email.php
send.php
var.js
Vamos al lío. Abre un editor de texto plano y copia el siquiente código:
guárdalo con el nombre "contact.php"
Ahora crea otro archivo con el editor de texto plano y copia el siguiente código:
Guárdalo con el nombre "send.php"
Como antes, abrimos un nuevo documento en eleditor de texto plano y pegamos el siguiente código:
Guárdalo con el nombre "email.php"
Por último, creas otro archivo con el mismo editor y pegas lo siguiente:
Ahora lo tienes que guardar como "var.js"
Edita los los ficheros var.js, send.php y email.php para cambiar las direcciones de correo por las tuyas propias y personalizar los mensajes de error.
Aquí tienes una página de ejemplo
Ten en cuenta, que aunque está funcional, los mensajes solo se recibiran en la dirección de correo que pongas como remite, si deseas ponerte en contacto con el autor, usa el formulario que hay habilitado en el sitio para tal efecto. Nota: para que el formulario funcione hay que tener la opcion “register_globals” habilitada en el php.ini
Fuente

Para un formulario de contacto te hacen falta 4 archivos: 3 php y uno en java script. Los vamos a llamar:
contact.php
email.php
send.php
var.js
Vamos al lío. Abre un editor de texto plano y copia el siquiente código:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML[img]http://images.alexsancho.name/v4/help.png[/img] 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD[img]http://images.alexsancho.name/v4/help.png[/img]/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head profile="http://gmpg.org/xfn/1">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Formulario de Contacto</title>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<script type="text/javascript">
function stoperror(){
return true
}
window.onerror=stoperror
</script>
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<div id="contactform">
<h1>Formulario de Contacto</h1>
<form id="contact-form" method="post" onsubmit="return emailCheck(this.email.value);" action="email.php">
<fieldset>
<legend>Datos Personales »</legend>
<div>
<label for="visitorname">
<span style="color:#c00;">*</span>Nombre:
</label>
<input type="text" name="name" id="visitorname" title="Tu Nombre" />
</div>
<div>
<label for="visitorsurname">
<span style="color:#c00;">*</span>Apellidos:
</label>
<input type="text" name="surname" id="visitorsurname" title="Tu Apellido" />
</div>
<div>
<label for="visitormail">
<span style="color:#c00;">*</span>Dirección de correo:
</label>
<input type="text" name="email" id="visitormail" value="<?php echo $email; ?>" title="Tu dirección de correo" />
</div>
<div>
<label for="url">Página Web:</label>
<input type="text" name="url" id="url" class="text" title="Tu página web" />
</div>
<div>
<label for="phone">Teléfono:</label>
<input type="text" name="phone" id="phone" class="text" title="Tu número de telefono" />
</div>
<div>
<label for="postcode">Codigo Postal:</label>
<input type="text" name="postcode" id="postcode" class="text" title="El codigo postal de tu localidad" />
</div>
<div>
<input type="submit" id="submit" name="send" value="Enviar »" title="Pulsa una vez para enviar el mensaje, y espera a la pantalla de confirmación" />
</div>
</fieldset>
<fieldset>
<legend>Envianos tu Mensaje »</legend>
<div>
<label for="subject">
<span style="color:#c00;">*</span>Motivo del mensaje:
</label>
<input type="text" name="sub" id="subject" title="El motivo de tu mensaje" />
</div>
<div>
<label for="notes">
<span style="color:#c00;">*</span>Cuerpo del Mensaje:
</label>
<textarea name="text" id="notes" rows="" cols="" onkeyup="val=this.value; if (val.length > 800) { alert('Lo siento, has sobrepasado el limite de 800 caracteres'); this.value = val.substring(0,800); } this.form.count.value=800-parseInt(this.value.length); "><?php echo $text; ?></textarea>
</div>
<div>
<label for="count">Caracteres disponibles:</label>
<input type="text" name="count" id="counter" value="800" size="2" />
<?php $text_len = preg_match_all('/./', $str, $dummy); ?>
</div>
</fieldset>
</form>
<p><span style="color:#c00;">*</span>Campos Obligatorios</p>
<p><span style="color:red;font-weight:bold;"><?php echo $error ?></span></p>
<script type="text/javascript" src="var.js"></script>
</div>
</body>
</html>
guárdalo con el nombre "contact.php"
Ahora crea otro archivo con el editor de texto plano y copia el siguiente código:
Código:
<?php
if (empty($name)) $error .= "No has introducido tu nombre";
if (empty($surname)) $error .= "No has introducido tu apellido";
if (empty($email)) $error .= "No has introducido tu dirección de e-mail";
if (empty($sub)) $error .= "No has introducido un titulo para el mensaje";
if (empty($text)) $error .= "No has escrito nada en el cuerpo del mensaje<br/>";
$str = $text;
$text_len = strlen($str);
if($text_len > 800) {
$error .= "Lo siento, has superado el maximo de 800 caracteres en el cuerpo del mensaje. El numero total de caracteres es $text_len - por favor, acorta tu mensaje.";
}
if($email) {
if(isset($_POST['email'])) {
if (preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~][email protected]([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i',trim($email))) {
} else {
$error .= "Tu dirección de e-mail contiene un error.";
}
$ok = TRUE;
$ok = eregi( "^[_.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email,
$check);
$ok = getmxrr(substr(strstr($check[0], '@'), 1), $dummy);
if($ok === false) {
$host = substr($email, strpos($email, '@') + 1);
if(gethostbyname($host) != $host) {
$ok = true;
}
if ($ok != true) {
$error .= "La dirección de e-mail no parece correcta, por favor, compruebalo";
}
}
}
}
if($error) {
include("index.php");
} else {
include("email.php");
}
?>
Guárdalo con el nombre "send.php"
Como antes, abrimos un nuevo documento en eleditor de texto plano y pegamos el siguiente código:
Código:
<!DOCTYPE html PUBLIC "-//W3C[img]http://images.alexsancho.name/v4/help.png[/img]//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">[img]http://images.alexsancho.name/v4/help.png[/img][img]http://images.alexsancho.name/v4/help.png[/img][img]http://images.alexsancho.name/v4/help.png[/img]
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head profile="http://gmpg.org/xfn/1">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Gracias por tu mensaje.</title>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
</head>
<body>
<div id="contactform">
<?php
$headers = "From: $email";
$message .= "
De: $name $surname
E-Mail: $email
Telefono: $phone
Codigo Postal: $postcode
Pagina Web: $url
Desde : $title
____________________________________
$text
";
$message2 .= "
Gracias por enviar el mensaje con el sujeto: $sub.\n
Para tu referencia, se ha añadido el texto original del mensaje al final de este correo.\n
Tu mensaje original era
$text
";
$headers2 .= "From: [email protected]\n";
$sub2.="Re: $sub";
?>
<h2>Gracias!</h2>
<p>Tu mensaje ha sido enviado, usando la dirección de remitente </p>
<p><span style="color:red;font-size:150%;font-weight:bold;"><?php print $email; ?></span></p>
<p>Si no es correcto,
<script type='text/javascript'>
document.write('<a href="javascript:history.go(-1);">vuelve atras</a>');
</script>
<noscript>vuelve atras</noscript> y envialo de nuevo</p>
<script type='text/javascript'>
document.write('<p class="details"><a href="javascript:history.go(-2);">Volver a la página de inicio.</a></p>');
</script>
<script type='text/javascript'>
setTimeout('history.go(-2)', 9000);
</script>
<noscript>
<p class="details">Pulsa el boton "atras" en tu navegador para volver a la página anterior.</p>
</noscript>
<?php
$message = stripslashes($message);
$message2 = stripslashes($message2);
$message = strip_tags ($message);
$message2 = strip_tags ($message2);
// RECUERDAR CAMBIAR LA DIRECCION DE CORREO
mail("[email protected]", $sub, $message, $headers);
mail($email, $sub2, $message2, $headers2);
?>
</div>
</body>
</html>
Guárdalo con el nombre "email.php"
Por último, creas otro archivo con el mismo editor y pegas lo siguiente:
Código:
1.
2. function emailCheck (emailStr) {
3. var checkTLD=1;
4. var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
5. var emailPat=/^(.+)@(.+)$/;
6. var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
7. var validChars="\[^\\s" + specialChars + "\]";
8. var quotedUser="(\"[^\"]*\")";
9. var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
10. var atom=validChars + '+';
11. var word="(" + atom + "|" + quotedUser + ")";
12. var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
13. var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
14. var matchArray=emailStr.match(emailPat);
15. if (matchArray==null) {
16. alert("Tu dirección de correo no aparece o es incorrecta (comprueba @ y .'s)");
17. return false;
18. }
19. var user=matchArray[1];
20. var domain=matchArray[2];
21. for (i=0; i<user.length; i++) {
22. if (user.charCodeAt(i)>127) {
23. alert("Tu dirección de correo contiene caracteres no validos.");
24. return false;
25. }
26. }
27. for (i=0; i<domain.length; i++) {
28. if (domain.charCodeAt(i)>127) {
29. alert("El dominio de la dirección introducida contiene caracteres no validos.");
30. return false;
31. }
32. }
33. if (user.match(userPat)==null) {
34. alert("La dirección de correo parece incorrecta, por favor compruebalo.");
35. return false;
36. }
37. var IPArray=domain.match(ipDomainPat);
38. if (IPArray!=null) {
39. for (var i=1;i<=4;i++) {
40. if (IPArray[i]>255) {
41. alert("La dirección IP de destino no es correcta!");
42. return false;
43. }
44. }
45. return true;
46. }
47. var atomPat=new RegExp("^" + atom + "$");
48. var domArr=domain.split(".");
49. var len=domArr.length;
50. for (i=0;i<len;i++) {
51. if (domArr[i].search(atomPat)==-1) {
52. alert("La dirección de correo parece incorrecta, por favor compruebalo, incluyendo el uso incorrecto de signos de puntuación, comas , o puntos [.] al final de la dirección.");
53. return false;
54. }
55. }
56. if (checkTLD && domArr[domArr.length-1].length!=2 &&
57. domArr[domArr.length-1].search(knownDomsPat)==-1) {
58. alert("Tu dirección de correo debe terminar en un dominio o dos letras " + "país.");
59. return false;
60. }
61. if (len<2) {
62. alert("Falta el nombre del host en tu dirección de correo - compruebalo. O debes de haber añadido un espacio en blanco al final de la dirección - corrije el error e intentalo de nuevo.");
63. return false;
64. }
65. return true;
66. }
67.
Ahora lo tienes que guardar como "var.js"
Edita los los ficheros var.js, send.php y email.php para cambiar las direcciones de correo por las tuyas propias y personalizar los mensajes de error.
Aquí tienes una página de ejemplo
Ten en cuenta, que aunque está funcional, los mensajes solo se recibiran en la dirección de correo que pongas como remite, si deseas ponerte en contacto con el autor, usa el formulario que hay habilitado en el sitio para tal efecto. Nota: para que el formulario funcione hay que tener la opcion “register_globals” habilitada en el php.ini
Fuente